Coder-Strike 2014 - Round 1
2014-04-19 03:18
441 查看
Problem:Coder-Strike 2014 - Round 1
水....
A.Poster
题意:尽可能少的步数,刷完海报
思路:模拟,先走到离最左边和最右边最近的那边,一直刷到另一边
B.Network Configuration
题意:选出第k大的
思路:sort
C.Pattern
题意:尽可能少的用‘?’表示一个模式串,能够匹配所有串
思路:暴力,当某一位上可能出现大于1种的字符串时,置为‘?’
D.Giving Awards
题意:给出n个人的m种关系,尽可能多的满足m种关系中的若干,使得x在y后面
思路:拓扑排序
存下所有节点的父节点,遍历一遍找到根结点,输出
E.E-mail
Addresses
题意:求给定字符串的子串中满足若干条件的方案数
思路:枚举每个‘@’往前往后分别合法的长度,范围longlong,注意一下‘@’到‘.’之间的合法性
水....
A.Poster
题意:尽可能少的步数,刷完海报
思路:模拟,先走到离最左边和最右边最近的那边,一直刷到另一边
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <cstring> #include <map> #include <vector> using namespace std; int main(){ string s; int n; int k; while(cin>>n>>k){ cin>>s; if(k>n/2){ for(int i=k;i<s.size();i++){ cout<<"RIGHT\n"; } for(int i=s.size()-1;i>=0;i--){ cout<<"PRINT "<<s[i]<<endl; if(i!=0) cout<<"LEFT"<<endl; } } else{ for(int i=k-2;i>=0;i--){ cout<<"LEFT"<<endl; } for(int i=0;i<s.size();i++){ cout<<"PRINT "<<s[i]<<endl; if(i!=s.size()-1) cout<<"RIGHT"<<endl; } } } return 0; }
B.Network Configuration
题意:选出第k大的
思路:sort
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <cstring> #include <map> #include <vector> using namespace std; bool cmp(int a,int b){ return a>b; } int p[110]; int main(){ int n,k; while(scanf("%d%d",&n,&k)!=EOF){ for(int i=0;i<n;i++) scanf("%d",&p[i]); sort(p,p+n,cmp); printf("%d\n",p[k-1]); } return 0; }
C.Pattern
题意:尽可能少的用‘?’表示一个模式串,能够匹配所有串
思路:暴力,当某一位上可能出现大于1种的字符串时,置为‘?’
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <cstring> #include <map> #include <vector> using namespace std; #define maxn 100010 string s[maxn]; int main(){ int n; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++) cin>>s[i]; string ans=""; for(int i=0;i<s[0].size();i++){ char now='?'; bool ok=true; for(int j=0;j<n;j++){ if(now!='?' && s[j][i]!=now && s[j][i]!='?'){ now='?'; ok=false; break; } else if(now=='?' && s[j][i]!='?'){ now=s[j][i]; } } if(ok && now=='?') ans+='a'; else ans+=now; } cout<<ans<<endl; } return 0; }
D.Giving Awards
题意:给出n个人的m种关系,尽可能多的满足m种关系中的若干,使得x在y后面
思路:拓扑排序
存下所有节点的父节点,遍历一遍找到根结点,输出
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <vector> using namespace std; #define maxn 30010 vector<int>v[maxn]; bool vis[maxn]; int total; int n,m,x,y; void dfs(int now){ if(vis[now]) return; vis[now]=true; for(int i=0;i<v[now].size();i++){ dfs(v[now][i]); } total++; if(total<n) printf("%d ",now); else printf("%d\n",now); } int main(){ while(scanf("%d%d",&n,&m)!=EOF){ for(int i=1;i<=n;i++) v[i].clear(),vis[i]=false; for(int i=1;i<=m;i++){ scanf("%d%d",&x,&y); v[x].push_back(y); } total=0; for(int i=1;i<=n;i++) dfs(i); } return 0; }
E.E-mail
Addresses
题意:求给定字符串的子串中满足若干条件的方案数
思路:枚举每个‘@’往前往后分别合法的长度,范围longlong,注意一下‘@’到‘.’之间的合法性
#include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <cstring> #include <map> #include <vector> using namespace std; typedef long long LL; string s; vector<int>v; int main(){ while(cin>>s){ LL ans=0; for(int i=0;i<s.size();i++){ if(s[i]=='@'){ int j; LL ct=0; for(j=i-1;j>=0;j--){ if(s[j]>='a' && s[j]<='z') ct++; else if(s[j]=='.' || s[j]=='@') break; } LL cnt=0; j=i+1; for(;j<s.size() && s[j]!='.' && s[j]!='_' && s[j]!='@';) j++; if(j==i+1) continue; if(s[j]=='@' || s[j]=='_') continue; for(j=j+1;j<s.size();j++){ if(s[j]>='a' && s[j]<='z') cnt++; else break; } ans+=cnt*ct; } } printf("%I64d\n",ans); } return 0; }
相关文章推荐
- Coder-Strike 2014 - Qualification Round C. Kicker(推理题)
- Coder-Strike 2014 - Round 2
- Coder-Strike 2014 - Qualification Round A. Password Check(简单字符串)
- Coder-Strike 2014 - Round 1
- Coder-Strike 2014 - Round 1(A~E)
- codeforces Coder-Strike 2014 Round 1 C题解题报告
- Coder-Strike 2014 - Round 1 D. Giving Awards
- codeforces Coder-Strike 2014 Round 1 B题解题报告
- 模拟 Coder-Strike 2014 - Round 1 A. Poster
- Coder-Strike 2014 - Round 1 D. Giving Awards
- codeforces Coder-Strike 2014 Round 1 A题解题报告
- 【索引】Coder-Strike 2014 - Round 1
- Coder-Strike 2014 - Round 2 C. Jeopardy!
- Coder-Strike 2014 - Round 1__Giving Awards
- Coder-Strike 2014 - Qualification Round——A. Password Check
- Coder-Strike 2014 - Round 2
- Coder-Strike 2014 - Round 1__E-mail Addresses
- Coder-Strike 2014 - Round 2 B. Spyke Chatting
- Coder-Strike 2014 - Round 2 A. Data Recovery
- Coder-Strike 2014 - Round 1 B. Network Configuration