Codeforces Good Bye 2014
2015-01-30 22:46
281 查看
打完比赛一直没写,今天有时间就来写写吧。
2014年最后一场CF,不分Div.1&2。感觉挺有纪念意义所以就去机房打了。
之前只是做过CF的题,第一次去机房熬夜打比赛,有点小激动。打的成绩还可以吧,就是没想到A题有个判断写错位置被hack之后来不及改了。B、C题都Ac了。而且还涨分了,要是A题也Ac了估计能涨很多。
500A - New Year Transportation:
单向搜索。一定要注意结束时判断的位置。
500B - New Year Permutation:
dfs判连通之后,每个连通的集合内部排序。
500C - New Year Book Reading:
模拟,看书的顺序就是堆叠的次序,有了顺序模拟搬书求总重量就行了。
2014年最后一场CF,不分Div.1&2。感觉挺有纪念意义所以就去机房打了。
之前只是做过CF的题,第一次去机房熬夜打比赛,有点小激动。打的成绩还可以吧,就是没想到A题有个判断写错位置被hack之后来不及改了。B、C题都Ac了。而且还涨分了,要是A题也Ac了估计能涨很多。
500A - New Year Transportation:
单向搜索。一定要注意结束时判断的位置。
#include<iostream> #include<algorithm> #include<string> #include<vector> #include<set> #include<map> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> using namespace std; const int maxn=30010; int a[maxn]; int main(){ int n,t,flag; while(scanf("%d%d",&n,&t)!=EOF){ flag=0; memset(a,0,sizeof(a)); for(int i=1;i<n;++i) scanf("%d",&a[i]); int cur=1; while(1){ if(cur==t){ printf("YES\n"); flag=1; break; } if(cur>=n) break; cur=cur+a[cur]; } if(!flag) printf("NO\n"); } return 0; }
500B - New Year Permutation:
dfs判连通之后,每个连通的集合内部排序。
#include<iostream> #include<algorithm> #include<string> #include<vector> #include<set> #include<map> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> using namespace std; const int maxn=310; int a[maxn],n,cnt; bool g[maxn][maxn]; int vis[maxn]; vector<int> num[maxn][2]; struct pos{ int a,b; pos(int a=0,int b=0):a(a),b(b){} bool operator < (const pos &x) const { return b<x.b; } }; vector<pos> print; void dfs(int u){ for(int v=0;v<n;++v) if(vis[v]==-1&&g[u][v]){ vis[v]=cnt; dfs(v); } return; } int main(){ while(scanf("%d",&n)!=EOF){ memset(a,0,sizeof(a)); memset(g,0,sizeof(g)); memset(vis,-1,sizeof(vis)); for(int i=0;i<n;++i) scanf("%d",&a[i]); getchar(); for(int i=0;i<n;++i){ for(int j=0;j<n;++j) if(getchar()=='1') g[i][j]=g[j][i]=true; getchar(); } cnt=0; for(int i=0;i<n;++i) if(vis[i]==-1){ vis[i]=cnt; dfs(i); ++cnt; } for(int i=0;i<n;++i){ num[vis[i]][0].push_back(a[i]); num[vis[i]][1].push_back(i); } for(int i=0;i<cnt;++i){ sort(num[i][0].begin(),num[i][0].end()); for(int j=0;j<num[i][0].size();++j) print.push_back(pos(num[i][0][j],num[i][1][j])); num[i][0].clear(),num[i][1].clear(); } sort(print.begin(),print.end()); for(int i=0;i<print.size();++i){ if(i) printf(" "); printf("%d",print[i].a); } printf("\n"); print.clear(); } return 0; }
500C - New Year Book Reading:
模拟,看书的顺序就是堆叠的次序,有了顺序模拟搬书求总重量就行了。
#include<iostream> #include<algorithm> #include<string> #include<vector> #include<stack> #include<set> #include<map> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> using namespace std; const int maxn=510; const int maxm=1010; int n,m; int a[maxn],b[maxm]; bool read[maxn]; vector<int> best; int main(){ while(scanf("%d%d",&n,&m)!=EOF){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(read,0,sizeof(read)); for(int i=0;i<n;++i) scanf("%d",&a[i]); for(int i=0;i<m;++i){ scanf("%d",&b[i]); if(!read[b[i]]){ best.push_back(b[i]); read[b[i]]=true; } } int sum=0; for(int i=0;i<m;i++){ int j=0; while(best[j]!=b[i]) sum+=a[best[j++]-1]; best.erase(best.begin()+j); best.insert(best.begin(),b[i]); } printf("%d\n",sum); best.clear(); } return 0; }
相关文章推荐
- Codeforces Good Bye 2014 解题报告 (A B C D)
- codeforces good bye 2014
- Codeforces Good Bye 2014 A.B.C.D.
- codeforces Good Bye 2014
- Good Bye 2014(codeforces)
- Codeforces Good Bye 2014 部分题解
- [CODEFORCES]Good Bye 2014题解
- codeforces Good Bye 2014题解(A、B、C)
- CodeForces 500B Good Bye 2014 New Year Permutation
- CodeForces Good Bye 2014 B. New Year Permutation
- Codeforces - Good Bye 2014 (今年最后一次CF!!)
- Codeforces Good Bye 2014
- Codeforces Good Bye 2014 B. New Year Permutation
- codeforces Good Bye 2016
- 【Good Bye 2014E】【贪心 单调栈+线段树】New Year Domino 至少增加多高长度的多米诺骨牌才可推x倒y
- Good Bye 2014--B. New Year Permutation
- 【分解质因数】【树状数组】【快速幂】codeforces 2014 ACM-ICPC Vietnam National Second Round E. ACM
- Codeforces Good Bye 2017 B. New Year and Buggy Bot 枚举全排列、模拟
- codeforces 391E2 (【Codeforces Rockethon 2014】E2)
- Codeforces Good Bye 2015 A. New Year and Days