CodeForces 412(A,B,C,D,E)
2015-11-29 18:35
225 查看
A.链接:点击打开链接
题意:给出一个长度为n的字符串和初始位置k,每次可以执行“LEFT”,“RIGHT”,“PRINT x”三种操作,问将整个字符串全部输出最少需要多少操作
代码:
B.链接:点击打开链接
题意:输出n个数中第k大的
代码:
C.链接:点击打开链接
题意:给出n个等长的字符串,输出符合条件的字符串(同一列如果全是?则这一位是什么都可以,如果这一列有两种并且其中一种是?则这一位是另一个字符,如果含有两种字符并且不含?或者含有多种字符则这一位是?,如果只有一种字符,则就是这个字符)
代码:
D.链接:点击打开链接
题意:有n个人,有m种关系(pi,qi)qi必须出现在pi前面,输出任意一种满足所有条件的可能
代码:
E.链接:点击打开链接
题意:输入一个字符串,问其中可能是邮箱的字符串的数量(一个邮箱必须含有一个字符'@'和字符'.',这两个字符中间只能是由字母和数字组成的字符串并且不能为空,邮箱的开头必须是字母,'.'后面必须是由字母组成的字符串)
代码:
题意:给出一个长度为n的字符串和初始位置k,每次可以执行“LEFT”,“RIGHT”,“PRINT x”三种操作,问将整个字符串全部输出最少需要多少操作
代码:
#include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> #include <algorithm> using namespace std; int main(){ int i,n,k; char s[10005]; while(cin>>n>>k){ cin>>s+1; if(k>n/2){ //当离右边近时则向右走到头在向左走,反之亦然 for(i=1;i<=n-k;i++) puts("RIGHT"); for(i=n;i>=2;i--){ printf("PRINT %c\n",s[i]); puts("LEFT"); } printf("PRINT %c\n",s[1]); } else{ for(i=1;i<=k-1;i++) puts("LEFT"); for(i=1;i<=n-1;i++){ printf("PRINT %c\n",s[i]); puts("RIGHT"); } printf("PRINT %c\n",s ); } } return 0; }
B.链接:点击打开链接
题意:输出n个数中第k大的
代码:
#include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> #include <algorithm> using namespace std; int a[1005]; int main(){ int n,k,i,j; while(cin>>n>>k){ for(i=0;i<n;i++) cin>>a[i]; sort(a,a+n,greater<int>()); cout<<a[k-1]<<endl; } return 0; }
C.链接:点击打开链接
题意:给出n个等长的字符串,输出符合条件的字符串(同一列如果全是?则这一位是什么都可以,如果这一列有两种并且其中一种是?则这一位是另一个字符,如果含有两种字符并且不含?或者含有多种字符则这一位是?,如果只有一种字符,则就是这个字符)
代码:
#include <set> #include <stdio.h> #include <vector> #include <stdlib.h> #include <iostream> #include <string.h> #include <algorithm> using namespace std; char s[100005]; char temp[100005]; set<char> qu; set<char>::iterator ite; int main(){ int n,i,j,len,cou_wen; // freopen("in.txt","r",stdin); while(cin>>n){ memset(s,0,sizeof(s)); cin>>temp; len=strlen(temp); strcat(s,temp); for(i=1;i<n;i++){ cin>>temp; strcat(s,temp); } //因为开不了那么大的二维数组,因此用strcat存到一个一维数组里 memset(temp,0,sizeof(temp)); for(j=0;j<len;j++){ qu.clear(); cou_wen=0; for(i=j;i<len*n;i+=len){ // cout<<"<<<>>>"<<s[i]<<" "; if(s[i]=='?') cou_wen++; qu.insert(s[i]); } if(cou_wen==n) //如果一列全是?则任意赋值 temp[j]='x'; else if(qu.size()==2&&*qu.begin()=='?'){ qu.erase(qu.begin()); temp[j]=*qu.begin(); //这一列只包含两种字符,并且其中一种是? } else if(qu.size()!=1) //包含不只一种字符 temp[j]='?'; else if(qu.size()==1) //只含有一种字符 temp[j]=*qu.begin(); } cout<<temp<<endl; } return 0; }
D.链接:点击打开链接
题意:有n个人,有m种关系(pi,qi)qi必须出现在pi前面,输出任意一种满足所有条件的可能
代码:
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm> #include <queue> #include <vector> using namespace std; int n,m; int s[50005],prefix[50005]; vector<int>v[50005]; void toposort(int x){ int i,u,k,sign; if(prefix[x]) return; prefix[x]=1; for(i=0;i<v[x].size();i++) toposort(v[x][i]); cout<<x<<" "; //dfs输出深度最大的 } int main(){ int i,a,b; // freopen("in.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF){ for(i=0;i<=n;i++){ v[i].clear(); prefix[i]=0; } for(i=0;i<m;i++){ cin>>a>>b; v[a].push_back(b); } for(i=1;i<=n;i++) if(!prefix[i]) toposort(i); printf("\n"); } return 0; }
E.链接:点击打开链接
题意:输入一个字符串,问其中可能是邮箱的字符串的数量(一个邮箱必须含有一个字符'@'和字符'.',这两个字符中间只能是由字母和数字组成的字符串并且不能为空,邮箱的开头必须是字母,'.'后面必须是由字母组成的字符串)
代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char str[1000005]; int main(){ long long i,j,k,x,y,ans; while(cin>>str+1){ str[0]='@'; ans=0; for(i=1;str[i];i++){ x=y=0; if(str[i]=='@'){ for(j=i-1;j>=0;j--){ if(str[j]>='a'&&str[j]<='z') x++; else if(str[j]=='@'||str[j]=='.') break; } //将@前面的字母数量记下来 for(j=i+1;str[j];j++){ if(str[j]=='.'||str[j]=='_'||str[j]=='@') break; //中间只能由数字和字母组成不能 } //含有其他种类字符 if(str[j]=='.'&&j!=i+1) for(k=j+1;str[k];k++){ //最后只能是由字母组成的字符串 if(str[k]<'a'||str[k]>'z') break; else y++; } ans+=x*y; } } cout<<ans<<endl; } return 0; }
相关文章推荐
- opencv3.0配置文件opencv300.props
- 我的Xelatex 中文报告模板
- uva 12186——Another Crisis
- Linux进程管理及作业详解
- Android Camera CameraHal.cpp 初始化分析
- 性能优化的方法
- Android之screenOrientation属性
- 南大软院大神养成计划--jquery
- 如何使用github?github简单使用教程(转自http://blog.sina.com.cn/dashanliu)
- Android Camera数据流分析全程记录(overlay方式二)
- Git的使用小结
- Linux软件包管理详解
- Android setColorFilter 滤镜效果
- 图——最小生成树的克鲁斯卡尔算法
- C++实现的简单日期类
- 让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法)
- SQL与数据挖掘(—)
- 在eclipse下是的编写HTML/CSS/JS/JSP代码时可以自动提示的解决办法
- Swift 数组、字典
- VMware设置共享文件夹