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