AtCoder Beginner Contest 304
A:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<string> 6 #include<vector> 7 #include<stack> 8 #include<bitset> 9 #include<cstdlib> 10 #include<cmath> 11 #include<set> 12 #include<list> 13 #include<deque> 14 #include<map> 15 #include<queue> 16 #include <iomanip> 17 #include<ctime> 18 using namespace std; 19 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); 20 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95 21 #define int long long 22 #define double long double 23 #define endl '\n' 24 #define inf LLONG_MAX 25 #define iinf INT_MAX 26 typedef pair<int,int> PII; 27 const double PI = acos(-1.0); 28 const double eps = 1e-6; 29 const int INF = 0x3f3f3f3f; 30 const int N = 1e2+10; 31 struct node 32 { 33 string id; 34 int age; 35 }p[N]; 36 int n; 37 signed main() 38 { 39 IOS; 40 cin>>n; 41 int idx=inf; 42 int sx=0; 43 for(int i=1;i<=n;i++) 44 { 45 cin>>p[i].id>>p[i].age; 46 if(p[i].age<idx) 47 { 48 sx=i; 49 idx=p[i].age; 50 } 51 } 52 for(int i=sx;i<=n;i++) 53 { 54 cout<<p[i].id<<endl; 55 } 56 for(int i=1;i<sx;i++) 57 { 58 cout<<p[i].id<<endl; 59 } 60 return 0; 61 }
B:
数字的后几位截取不如直接处理字符串
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<string> 6 #include<vector> 7 #include<stack> 8 #include<bitset> 9 #include<cstdlib> 10 #include<cmath> 11 #include<set> 12 #include<list> 13 #include<deque> 14 #include<map> 15 #include<queue> 16 #include <iomanip> 17 #include<ctime> 18 using namespace std; 19 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); 20 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95 21 #define int long long 22 #define double long double 23 #define endl '\n' 24 #define inf LLONG_MAX 25 #define iinf INT_MAX 26 typedef pair<int,int> PII; 27 const double PI = acos(-1.0); 28 const double eps = 1e-6; 29 const int INF = 0x3f3f3f3f; 30 const int N = 1e9; 31 int n; 32 void solved(int x) 33 { 34 string s=to_string(x); 35 if(x<=1e3-1) 36 { 37 cout<<x<<endl; 38 } 39 else if(x>=1e3&&x<=1e4-1) 40 { 41 for(int i=0;i<s.length()-1;i++) 42 { 43 cout<<s[i]; 44 } 45 cout<<"0"<<endl; 46 } 47 else if(x>=1e4&&x<1e5) 48 { 49 for(int i=0;i<s.length()-2;i++) 50 { 51 cout<<s[i]; 52 } 53 cout<<"00"<<endl; 54 } 55 else if(x>=1e5&&x<1e6) 56 { 57 for(int i=0;i<s.length()-3;i++) 58 { 59 cout<<s[i]; 60 } 61 cout<<"000"<<endl; 62 } 63 else if(x>=1e6&&x<1e7) 64 { 65 for(int i=0;i<s.length()-4;i++) 66 { 67 cout<<s[i]; 68 } 69 cout<<"0000"<<endl; 70 } 71 else if(x>=1e7&&x<1e8) 72 { 73 for(int i=0;i<s.length()-5;i++) 74 { 75 cout<<s[i]; 76 } 77 cout<<"00000"<<endl; 78 } 79 else if(x>=1e8&&x<1e9) 80 { 81 for(int i=0;i<s.length()-6;i++) 82 { 83 cout<<s[i]; 84 } 85 cout<<"000000"<<endl; 86 } 87 } 88 signed main() 89 { 90 IOS; 91 cin>>n; 92 solved(n); 93 return 0; 94 }
C:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<string> 6 #include<vector> 7 #include<stack> 8 #include<bitset> 9 #include<cstdlib> 10 #include<cmath> 11 #include<set> 12 #include<list> 13 #include<deque> 14 #include<map> 15 #include<queue> 16 #include <iomanip> 17 #include<ctime> 18 using namespace std; 19 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); 20 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95 21 #define int long long 22 #define double long double 23 #define x first 24 #define y second 25 #define endl '\n' 26 #define inf LLONG_MAX 27 #define iinf INT_MAX 28 typedef pair<int,int> PII; 29 const double PI = acos(-1.0); 30 const double eps = 1e-6; 31 const int INF = 0x3f3f3f3f; 32 const int N = 2e3+10; 33 int n,d; 34 PII a[N]; 35 bool vis[N][N]; 36 bool flag[N]; 37 // void bfs(int tx,int ty,int id) 38 // { 39 // vis[id]=true; 40 // queue<PII>q; 41 // q.push({tx,ty}); 42 // while(!q.empty()) 43 // { 44 // int px=q.front().x; 45 // int py=q.front().y; 46 // q.pop(); 47 // for(int i=id+1;i<=n;i++) 48 // { 49 // int nx=a[i].x; 50 // int ny=a[i].y; 51 // if(vis[i]) continue; 52 // if(((px-nx))*(px-nx)+(py-ny)*(py-ny)>d*d) continue; 53 // id=i; 54 // vis[i]=true; 55 // q.push({nx,ny}); 56 // } 57 // } 58 // } 59 void bfs(int tx,int ty,int id) 60 { 61 flag[id]=true; 62 queue<int>q; 63 q.push(id); 64 while(!q.empty()) 65 { 66 int px=q.front(); 67 q.pop(); 68 for(int i=1;i<=n;i++) 69 { 70 if(!flag[i]&&vis[px][i]) 71 { 72 flag[i]=true; 73 q.push(i); 74 } 75 } 76 } 77 } 78 signed main() 79 { 80 IOS; 81 cin>>n>>d; 82 for(int i=1;i<=n;i++) 83 { 84 cin>>a[i].x>>a[i].y; 85 } 86 int xx=a[1].x; 87 int yy=a[1].y; 88 for(int i=1;i<=n;i++) 89 { 90 for(int j=1;j<=n;j++) 91 { 92 if((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y)<=d*d) 93 { 94 vis[i][j]=true; 95 } 96 } 97 } 98 bfs(xx,yy,1); 99 for(int i=1;i<=n;i++) 100 { 101 if(!flag[i]) 102 { 103 cout<<"No"<<endl; 104 } 105 else 106 { 107 cout<<"Yes"<<endl; 108 } 109 } 110 return 0; 111 }
D:
// 已知蛋糕总尺寸,w*h,切块时:w边以a[1]、a[2]、、、、a[A]切;h边以b[1]、、、、b[B]切
// 求哪一块蛋糕草莓最多、最少草莓数;
// 根据每个草莓出现的位置找到符合该草莓的区域块边界,
// 使用lower_bound()找到最右边界,因为lower_bound()是不小于目标值的第一个数,使用map记录出现的边界坐标,
// 即mx=次数最多的,mn判断是否为0则看map中长度是否为(a+1)*(B+1),若是,则不存在草莓数为0的块出现。以最右边界为该块标志。
1 // 已知蛋糕总尺寸,w*h,切块时:w边以a[1]、a[2]、、、、a[A]切;h边以b[1]、、、、b[B]切 2 // 求哪一块蛋糕草莓最多、最少草莓数; 3 // 根据每个草莓出现的位置找到符合该草莓的区域块边界, 4 // 使用lower_bound()找到最右边界,因为lower_bound()是不小于目标值的第一个数,使用map记录出现的边界坐标, 5 // 即mx=次数最多的,mn判断是否为0则看map中长度是否为(a+1)*(B+1),若是,则不存在草莓数为0的块出现。以最右边界为该块标志。 6 #include<cstdio> 7 #include<cstring> 8 #include<algorithm> 9 #include<iostream> 10 #include<string> 11 #include<vector> 12 #include<stack> 13 #include<bitset> 14 #include<cstdlib> 15 #include<cmath> 16 #include<set> 17 #include<list> 18 #include<deque> 19 #include<map> 20 #include<queue> 21 #include <iomanip> 22 #include<ctime> 23 using namespace std; 24 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); 25 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95 26 #define int long long 27 #define double long double 28 #define endl '\n' 29 #define x first 30 #define y second 31 #define inf LLONG_MAX 32 #define iinf INT_MAX 33 typedef pair<int,int> PII; 34 const double PI = acos(-1.0); 35 const double eps = 1e-6; 36 const int INF = 0x3f3f3f3f; 37 const int N = 2e5+10; 38 int h,w; 39 int n; 40 int maxx=-1; 41 int minn=inf; 42 PII q[N]; 43 int a[N]; 44 int b[N]; 45 map<PII,int>mp; 46 signed main() 47 { 48 IOS; 49 cin>>h>>w; 50 cin>>n; 51 for(int i=1;i<=n;i++) 52 { 53 cin>>q[i].x>>q[i].y; 54 } 55 int A; 56 cin>>A; 57 for(int i=1;i<=A;i++) 58 { 59 cin>>a[i]; 60 } 61 int B; 62 cin>>B; 63 for(int i=1;i<=B;i++) 64 { 65 cin>>b[i]; 66 } 67 for(int i=1;i<=n;i++) 68 { 69 int px=lower_bound(a+1,a+1+A,q[i].x)-a; 70 int py=lower_bound(b+1,b+1+B,q[i].y)-b; 71 mp[{px,py}]++; 72 } 73 int cnt=0; 74 for(auto &it:mp) 75 { 76 maxx=max(maxx,it.y); 77 minn=min(minn,it.y); 78 cnt++; 79 } 80 if(cnt<(A+1)*(B+1)) 81 { 82 minn=0; 83 } 84 cout<<minn<<" "<<maxx<<endl; 85 return 0; 86 }
E:
使用并查集维护更方便一些
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<string> 6 #include<vector> 7 #include<stack> 8 #include<bitset> 9 #include<cstdlib> 10 #include<cmath> 11 #include<set> 12 #include<list> 13 #include<deque> 14 #include<map> 15 #include<queue> 16 #include <iomanip> 17 #include<ctime> 18 using namespace std; 19 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); 20 #define TLE (double)clock()/CLOCKS_PER_SEC<=0.95 21 #define int long long 22 #define double long double 23 #define endl '\n' 24 #define inf LLONG_MAX 25 #define iinf INT_MAX 26 typedef pair<int,int> PII; 27 const double PI = acos(-1.0); 28 const double eps = 1e-6; 29 const int INF = 0x3f3f3f3f; 30 const int N = 2e5+10; 31 int n,m; 32 vector<int>g[N]; 33 int a[N],b[N]; 34 int s[N]; 35 int height[N]; 36 set<PII>ss;//表示不能被相互到达的 37 void init()//合并 38 { 39 for( int i=1;i<=N;i++) 40 { 41 s[i]=i; 42 height[i]=0; 43 } 44 } 45 int find_s(int x)//查找 -路压 46 { 47 if(x!=s[x]) 48 { 49 s[x]=find_s(s[x]); 50 } 51 return s[x]; 52 } 53 void union_s(int x,int y)//合并优化 54 { 55 x=find_s(x); 56 y=find_s(y); 57 if(height[x]==height[y]) 58 { 59 height[x]=height[x]+1; 60 s[y]=x; 61 } 62 if(height[x]<height[y]) 63 { 64 s[x]=y; 65 } 66 else 67 { 68 s[y]=x; 69 } 70 } 71 signed main() 72 { 73 IOS; 74 init(); 75 bool flag=true; 76 cin>>n>>m; 77 for(int i=1;i<=m;i++) 78 { 79 int u,v; 80 cin>>u>>v; 81 g[u].push_back(v); 82 g[v].push_back(u); 83 union_s(u,v); 84 union_s(v,u); 85 } 86 int k; 87 cin>>k; 88 for(int i=1;i<=k;i++) 89 { 90 cin>>a[i]>>b[i]; 91 int fx=find_s(a[i]); 92 int fy=find_s(b[i]); 93 ss.insert({fx,fy}); 94 ss.insert({fy,fx}); 95 } 96 int q; 97 cin>>q; 98 while(q--) 99 { 100 int u,v; 101 cin>>u>>v; 102 int fx=find_s(u); 103 int fy=find_s(v); 104 if(ss.count({fx,fy})) 105 { 106 cout<<"No"<<endl; 107 } 108 else{ 109 cout<<"Yes"<<endl; 110 } 111 } 112 return 0; 113 }
本文来自博客园,作者:江上舟摇,转载请注明原文链接:https://www.cnblogs.com/LQS-blog/p/17530521.html