ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

The 2021 ICPC Asia Regionals Online Contest (I)补题

2021-09-22 20:36:02  阅读:164  来源: 互联网

标签:10 Contest int Asia ++ 补题 printf include its


I Neiborhood Search

题意:签到题

思路:主要是学习stringstream,记得加头文件sstream

注:当时以为这个题会卡A的范围,就开始找大数,因为最开始就是类似这样写的,没有用stringstream,只是普通的读入,后来才发现就是多空格的问题,但是比赛的时候一直以为是卡int和long long,也是够了,后来还是队友用的py写出来的

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<sstream>
 6 #include<algorithm>
 7 using namespace std;
 8 const int maxx=1e5+10;
 9 int main(){
10     string s;
11     stringstream ss;
12     getline(cin,s);
13     ss<<s;
14     int a[maxx];
15     int i=0;
16     int num;
17     while(ss>>num){
18         a[i++]=num;
19     }
20     int sum=0;
21     int x,y;
22     scanf("%d %d",&x,&y);
23     sort(a,a+i);
24         for(int j=i-1;j>=0;j--){
25             if(abs(x-a[j])<=y){
26                 sum--;
27                 printf("%d ",a[j]);
28             }
29         }
30         printf("\n");
31 
32 }
View Code

F Land Overseer

题意:签到题

思路:简单几何,一画图就出来

注:输入的时候,虽然显示是int类型的,但是还是要用double输入

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<sstream>
 6 #include<algorithm>
 7 using namespace std;
 8 const int maxx=1e5+10;
 9 int main(){
10     int t;
11     scanf("%d",&t);
12     int i=1;
13     while(t--){
14         double a,b,r;
15         scanf("%lf %lf %lf",&a,&b,&r);
16         double l;
17         if(b<=r){
18             l=2*a-r;
19         }else{
20             l=sqrt(a*a+(b-r)*(b-r));
21             l*=2;
22             l-=r;
23         }
24         printf("Case #%d: %.2f\n",i,l);
25         
26         i++;
27     }
28 
29 }
View Code

 H Mesh Analysis

题意:签到题

思路:直接用set就搞出来了

注:我吐了,当时读完题和队友说的思路就是对的,但是开始怀疑自己是不是做对了,因为如果按照这个思路的话,上面的点的坐标是用不到的,结果他预判了我的预判,我们以为错了的代码就是对的

代码:

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<set>
 7 using namespace std;
 8 const int maxx=1e5+10;
 9 int main(){
10     int n,m;
11     scanf("%d %d",&n,&m);
12     getchar();
13 
14     for(int i=0;i<n;i++){
15         string x,y,z;
16         getline(cin,x);
17     }
18     int a[maxx][4];
19     for(int i=1;i<=m;i++){
20         int num;
21         int value;
22         scanf("%d %d",&num,&value);
23         if(value==102){
24             a[i][0]=2;
25             scanf("%d %d",&a[i][1],&a[i][2]);
26         }else{
27             a[i][0]=3;
28             scanf("%d %d %d",&a[i][1],&a[i][2],&a[i][3]);
29         }
30     }
31     scanf("%d",&n);
32     while(n--){
33         int num;
34         scanf("%d",&num);
35         set<int> b;
36         int j=0;
37         set<int> s;
38         int k=0;
39         for(int i=1;i<=m;i++){
40             if(a[i][0]==2){
41                 if(a[i][1]==num){
42 
43                     s.insert(i);
44                     b.insert(a[i][2]);
45                 }else if(a[i][2]==num){
46 
47                     b.insert(a[i][1]);
48                     s.insert(i);
49                 }
50             }else if(a[i][0]==3){
51                 if(a[i][1]==num){
52 
53                     s.insert(i);
54                     b.insert(a[i][2]);
55                     b.insert(a[i][3]);
56                 }else if(a[i][2]==num){
57 
58                     s.insert(i);
59                     b.insert(a[i][1]);
60                     b.insert(a[i][3]);
61                 }else if(a[i][3]==num){
62 
63                     s.insert(i);
64                     b.insert(a[i][1]);
65                     b.insert(a[i][2]);
66                 }
67             }
68         }
69         printf("%d\n",num);
70         if(b.size()==0){
71             printf("[]\n");
72             printf("[]");
73         }else{
74             printf("[");
75             set<int>::iterator it = b.begin();
76             printf("%d",*it);
77             it++;
78             for(; it != b.end(); it++){//定义前向迭代器遍历输出
79                 printf(",%d",*it);
80 
81             }
82             printf("]\n");
83             printf("[");
84             set<int>::iterator its = s.begin();
85             printf("%d",*its);
86             its++;
87              for(; its != s.end(); its++){
88                 printf(",%d",*its);
89 
90             }
91             printf("]");
92         }
93         if(n){
94             printf("\n");
95         }
96     }
97 }
View Code

K Segment Routing

题意:简单的路径问题

思路:主要是利用vector的resize和push_back(),

代码:

 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<vector>
 6 #include<algorithm>
 7 
 8 using namespace std;
 9 
10 vector<vector<int>> r;
11 
12 
13 int main() {
14     int z; cin >> z;
15     for(int T = 1; T <= z; T++) {
16         int n, m; cin >> n >> m;
17         r.resize(n);
18         for(int i = 0; i < n; i++) {
19             int j; cin >> j;
20             r[i].clear();
21             for(int k = 0; k < j; k++) {
22                 int t; cin >> t;
23                 r[i].push_back(t-1);
24             }
25         }
26 
27         cout << "Case #" << T << ": \n";
28         for(int i = 0; i < m; i++) {
29             int s, l; cin >> s >> l;s--;
30             while(l--) {
31                 int e; cin >> e; e--;
32                 if(s < 0) continue;
33                 if(r[s].size() > e)
34                     s = r[s][e];
35                 else
36                     s = -1;
37             }
38             if(s < 0) {
39                 cout << "Packet Loss";
40             } else {
41                 cout << s+1;
42             }
43             if(i < m-1) cout << '\n'; 
44         }
45         if(T < z) cout << '\n';
46     }
47     cout << flush;
48     return 0;
49 }
View Code

好多数据结构的题目啊,感觉分完工以后作为一个数论选手一直在读题翻译,数据结构队友代码敲得噼里啪啦,边改边找板子,总而言之不是很顺利。分完工以后自己主攻数学,感觉数据结构多的题目也是实在补不动,总觉得数据结构的代码好长,理解起来也好繁杂,不过确实数据结构的解题方法很巧妙,希望下次各种算法和题型能够均衡一点,希望下次题目也……,题目稀里哗啦,输入无用不知道什么意义

标签:10,Contest,int,Asia,++,补题,printf,include,its
来源: https://www.cnblogs.com/bonel/p/15321251.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有