当前位置:网站首页>CAIP2021 初赛VP
CAIP2021 初赛VP
2022-07-07 21:50:00 【HeartFireY】
写点小题,放松一下。。。
A.7-1 懂的都懂
暴力打表,然后 O ( 1 ) O(1) O(1)回答询问即可。
#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int a[N];
map<int, bool> mp;
inline void solve(){
int n = 0, k = 0; cin >> n >> k;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= n; i++){
for(int j = i + 1; j <= n; j++){
for(int k = j + 1; k <= n; k++){
for(int l = k + 1; l <= n; l++){
mp[a[i] + a[j] + a[k] + a[l]] = true;
}
}
}
}
for(int i = 1; i <= k; i++){
int m; cin >> m;
bool flag = true;
for(int i = 1; i <= m; i++){
int x; cin >> x;
if(!mp.count(x * 4)) flag = false;
}
if(flag) cout << "Yes\n";
else cout << "No\n";
}
}
signed main(){
solve();
return 0;
}
B.7-2 芬兰木棋
分象限和坐标轴按斜率排序,然后每个区域按顺序进行遍历,动态改变方向统计即可。
最大分数一定是所有木棋之和。可以assert检验答案对不对。
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 10, JD = 1e-5;
struct node{
int x, y, p;
double dis, k;
const bool operator< (const node & x) const {
return k < x.k || fabs(k - x.k) <= JD && dis < x.dis; }
}a[9][N];
int num[9] = {
0};
inline void solve(){
int n = 0; cin >> n;
//int sum = 0;
for(int i = 1; i <= n; i++){
int x, y, p; cin >> x >> y >> p; //sum += p;
double dis = pow((double)(x * x + y * y), 0.5);
double k = 1.0 * y / (1.0 * x);
if(x > 0 && y > 0) a[1][++num[1]] = {
x, y, p, dis, k};
if(x < 0 && y > 0) a[2][++num[2]] = {
x, y, p, dis, k};
if(x < 0 && y < 0) a[3][++num[3]] = {
x, y, p, dis, k};
if(x > 0 && y < 0) a[4][++num[4]] = {
x, y, p, dis, k};
if(x > 0 && y == 0) a[5][++num[5]] = {
x, y, p, dis, 0};
if(x < 0 && y == 0) a[6][++num[6]] = {
x, y, p, dis, 0};
if(x == 0 && y > 0) a[7][++num[7]] = {
x, y, p, dis, 0};
if(x == 0 && y < 0) a[8][++num[8]] = {
x, y, p, dis, 0};
}
for(int i = 1; i <= 8; i++) sort(a[i] + 1, a[i] + 1 + num[i]);
int cnt = 0, ans = 0, ansop = 0;
for(int x = 1; x <= 8; x++){
for(int i = 1; i <= num[x]; i++){
if(fabs(a[x][i].k - a[x][i - 1].k) <= JD){
if(a[x][i].p == 1) cnt++;
else{
if(cnt) ansop++, ans += cnt, cnt = 0;
ansop++, ans += a[x][i].p;
}
}
else{
if(cnt) ansop++, ans += cnt, cnt = 0;
if(a[x][i].p == 1) cnt++;
else ansop++, ans += a[x][i].p;
}
}
if(cnt) ansop++, ans += cnt, cnt = 0;
}
//assert(sum == ans);
cout << ans << ' ' << ansop << endl;
}
signed main(){
ios_base::sync_with_stdio(false);
solve();
return 0;
}
C.7-3 打怪升级
先跑Floyd再跑Dijkstra,代码没存…
属于是什么算法都能杂一起了。。。
D.7-4 疫情防控
典中典之并查集维护倒序加点
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5 + 10;
vector<int> g[N];
struct unionfind{
int par[N];
unionfind(int n) {
for(int i = 1; i <= n; i++) par[i] = i; }
int find(int u){
return (u == par[u] ? u : par[u] = find(par[u])); }
void merge(int u, int v){
int fau = find(u), fav = find(v);
if(fau != fav) par[fav] = u;
}
};
bitset<N> vis;
using pii = pair<int, int>;
struct query{
int c, q;
vector<pii> qu;
}a[N];
int ans[N];
inline void solve(){
int n, m, d; cin >> n >> m >> d;
for(int i = 1; i <= m; i++){
int u, v; cin >> u >> v;
g[u].emplace_back(v);
g[v].emplace_back(u);
}
vis.reset();
for(int i = 1; i <= d; i++){
int c, q; cin >> c >> q;
vis[c] = true;
a[i] = {
c, q};
for(int j = 1; j <= q; j++){
int u, v; cin >> u >> v;
a[i].qu.emplace_back(pii{
u, v});
}
}
unionfind uf(n);
for(int i = 1; i <= n; i++){
if(!vis[i]){
for(auto v : g[i])
if(!vis[v]) uf.merge(i, v);
}
}
for(int i = d; i >= 1; i--){
int cnt = 0;
for(auto q : a[i].qu){
if(uf.find(q.first) != uf.find(q.second)) cnt++;
}
int u = a[i].c;
vis[u] = false;
for(auto v : g[u]){
if(!vis[v]) uf.merge(u, v);
}
ans[i] = cnt;
}
for(int i = 1; i <= d; i++) cout << ans[i] << endl;
}
signed main(){
solve();
return 0;
}
边栏推荐
- Network security CSRF
- 智慧社区和智慧城市之间有什么异同
- USB(十四)2022-04-12
- Wechat forum exchange applet system graduation design (5) assignment
- Cascade-LSTM: A Tree-Structured Neural Classifier for Detecting Misinformation Cascades-KDD2020
- 开发那些事儿:Go加C.free释放内存,编译报错是什么原因?
- 智慧社區和智慧城市之間有什麼异同
- Wechat forum exchange applet system graduation design completion (7) Interim inspection report
- Transform XL translation
- Line test - graphic reasoning - 1 - Chinese character class
猜你喜欢

Talk about the design and implementation logic of payment process

Wechat forum exchange applet system graduation design completion (7) Interim inspection report

PMP项目管理考试过关口诀-1

V20变频器手自动切换(就地远程切换)的具体方法示例

Cascade-LSTM: A Tree-Structured Neural Classifier for Detecting Misinformation Cascades-KDD2020

Gbu1510-asemi power supply special 15A rectifier bridge gbu1510

2021ICPC上海 H.Life is a Game Kruskal重构树

Brush question 3

Introduction to redis and jedis and redis things

【微服务|SCG】gateway整合sentinel
随机推荐
UE4_UE5蓝图command节点的使用(开启关闭屏幕响应-log-发布全屏显示)
网络安全-对操作系统进行信息查询
ArcGIS: two methods of attribute fusion of the same field of vector elements
微信论坛交流小程序系统毕业设计毕设(2)小程序功能
Wechat forum exchange applet system graduation design completion (8) graduation design thesis template
Binary tree
Specific method example of V20 frequency converter manual automatic switching (local remote switching)
网络安全-永恒之蓝
When copying something from the USB flash disk, an error volume error is reported. Please run CHKDSK
Wechat forum exchange applet system graduation design (5) assignment
Network security sqlmap and DVWA explosion
微信论坛交流小程序系统毕业设计毕设(6)开题答辩PPT
Online interview, how to better express yourself? In this way, the passing rate will be increased by 50%~
Wechat forum exchange applet system graduation design completion (6) opening defense ppt
V20变频器手自动切换(就地远程切换)的具体方法示例
Software test classification
UE4_UE5全景相机
opencv scalar传入三个参数只能显示黑白灰问题解决
Installing vmtools is gray
Wechat forum exchange applet system graduation design completion (7) Interim inspection report