2019冬季PAT甲级第二题
Posted ldudxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019冬季PAT甲级第二题相关的知识,希望对你有一定的参考价值。
1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 typedef struct{ 5 int add,data,nex; 6 }Node; 7 Node node[100007],ans[100007],ans2[100007]; 8 map<int,int>mp; 9 int main(){ 10 //ios::sync_with_stdio(false); 11 //cin.tie(NULL); 12 //cout.tie(NULL); 13 int s,n,k; 14 scanf("%d%d%d",&s,&n,&k); 15 for(int i=1;i<=n;++i){ 16 scanf("%d%d%d",&node[i].add,&node[i].data,&node[i].nex); 17 mp[node[i].add]=i; 18 } 19 int cnt=0; 20 while(s!=-1){ 21 int num=mp[s]; 22 ans[++cnt].add=node[num].add; 23 ans[cnt].data=node[num].data; 24 ans[cnt].nex=node[num].nex; 25 s=ans[cnt].nex; 26 } 27 int cnt2=0; 28 int x=cnt/k; 29 if(cnt%k) 30 ++x; 31 for(int i=x;i;--i){ 32 for(int j=(i-1)*k+1;j<=min(cnt,i*k);++j){ 33 ans2[++cnt2].add=ans[j].add; 34 ans2[cnt2].data=ans[j].data; 35 ans2[cnt2].nex=ans[j].nex; 36 } 37 if(i==1) 38 ans2[cnt2].nex=-1; 39 else 40 ans2[cnt2].nex=ans[(i-2)*k+1].add; 41 } 42 for(int i=1;i<=cnt2;++i){ 43 if(i<cnt2) 44 printf("%05d %d %05d ",ans2[i].add,ans2[i].data,ans2[i].nex); 45 else 46 printf("%05d %d -1",ans2[i].add,ans2[i].data); 47 } 48 return 0; 49 }
以上是关于2019冬季PAT甲级第二题的主要内容,如果未能解决你的问题,请参考以下文章
PAT(甲级)2019年冬季考试 7-4 Cartesian Tree
PAT甲级第二题-- A+B for Polynomials
PAT(甲级)2019年冬季考试 7-2 Block Reversing