再一次测试
2017-10-28 14:43
99 查看
暴力模拟,先把他们弄成小写的,再把首字母弄成大写
t1
题意,将一段文章按英语格式输出
t2
每次数出两个相邻的,使字典序最大
每一次找最大的输出,sort一下就行了,再加个链表搞掉已经删除的
t3
题意: 看一个矩阵每行每列加一个0,1,2数最多能否变成几个三的倍数
暴力
正解
只需要加 0,1,2
只需要枚举每一行
每一列就可以贪心了
o(n*m*3*3^n)
注意:只有3 6 9 12稳定,别的都不稳定,不是说3的倍数都稳定。。
t1
题意,将一段文章按英语格式输出
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #define ll long long char a[199999]; int main(){ freopen("nigeru.in","r",stdin); freopen("nigeru.out","w",stdout); gets(a+1);int len=strlen(a+1); for(int i=1;i<=len;i++){ if(a[i]!='.'&&a[i]!=' ') if(a[i]<97&&a[i]>=65) a[i]+=32; } a[0]='.'; if(a[1]!='.'&&a[1]!=' ') a[1]-=32; for(int i=1;i<=len;i++) if(a[i-1]=='.'&&a[i]>=97&&a[i]<123)a[i]-=32; else if(a[i-1]=='.'&&a[i]==' '){ int j=i; while(a[j]==' ')j++; if(a[j]>=97&&a[j]<123) a[j]-=32; } puts(a+1); }
t2
每次数出两个相邻的,使字典序最大
每一次找最大的输出,sort一下就行了,再加个链表搞掉已经删除的
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #define ll long long using namespace std; int a[199999],n,nex[199999],h[199999],vis[199999]; struct st{ int s,t; }p[199999]; bool cmp(const st&x,const st&y){ return x.s>y.s||x.s==y.s&&a[nex[x.t]]>a[nex[y.t]]; } int main(){ freopen("wa.in","r",stdin); freopen(" 10db4 wa.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]),p[i].s=a[i],p[i].t=i,nex[i]=i+1,h[i]=i-1; sort(p+1,p+n,cmp); vis[n+1]=1; for(int i=1;i<=n;i++){ if(!vis[p[i].t]&&!vis[nex[p[i].t]]) { printf("%d %d ",p[i].s,a[nex[p[i].t]]); vis[p[i].t]=1;vis[nex[p[i].t]]=1; nex[h[p[i].t]]=nex[nex[p[i].t]]; h[nex[nex[p[i].t]]]=h[p[i].t]; } } }
t3
题意: 看一个矩阵每行每列加一个0,1,2数最多能否变成几个三的倍数
暴力
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<ctime> #define ll long long using namespace std; int n,m,a[1999][1999],sum[1999][1999],ans; int check(int x){ int t[3];memset(t,0,sizeof t); for(int i=1;i<=m;i++) t[a[x][i]]++; //printf("%d %d %d\n",t[0],t[1],t[2]); if((t[0]>=t[1]&&t[0]>=t[2])||t[1]==t[2]) return 0; return t[1]>t[2]?1:2; } int check2(int x){ int t[3];memset(t,0,sizeof t); for(int i=1;i<=n;i++) t[a[i][x]]++; if((t[0]>=t[1]&&t[0]>=t[2])||t[1]==t[2]) return 0; return t[1]>t[2]?1:2; } int dfs(int o){ int f=0; /*for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) printf("%d ",a[i][j]);printf("\n"); } puts("\n");*/ for(int i=1;i<=n;i++){ int w=check(i); //printf("%d\n",w); //if(o==5) exit(0); if(w!=0){ if(w==2) { for(int j=1;j<=m;j++) a[i][j]=(a[i][j]+1)%3; f|=dfs(o+1); for(int j=1;j<=m;j++) a[i][j]=(a[i][j]+2)%3; } if(w==1) { for(int j=1;j<=m;j++) a[i][j]=(a[i][j]-1+3)%3; f|=dfs(o+1); for(int j=1;j<=m;j++) a[i][j]=(a[i][j]+1)%3; } } } for(int i=1;i<=m;i++){ int w=check2(i);//printf("%d\n",w); if(w!=0){ if(w==2) { for(int j=1;j<=n;j++) a[j][i]=(a[j][i]+1)%3; f|=dfs(o+1); for(int j=1;j<=n;j++) a[j][i]=(a[j][i]+2)%3; } if(w==1) { for(int j=1;j<=n;j++) a[j][i]=(a[j][i]-1+3)%3; f|=dfs(o+1); for(int j=1;j<=n;j++) a[j][i]=(a[j][i]+1)%3; } } } if(!f||o>n*m) { int tot=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i][j]%3==0) tot++; ans=max(tot,ans); return 0; } return f; } int main(){ freopen("haji1.in","r",stdin); //freopen("haji.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]),a[i][j]%=3; dfs(0); printf("%d",ans); }
正解
只需要加 0,1,2
只需要枚举每一行
每一列就可以贪心了
o(n*m*3*3^n)
注意:只有3 6 9 12稳定,别的都不稳定,不是说3的倍数都稳定。。
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<ctime> #define ll long long using namespace std; int n,m,a[19][19],ans; void dfs(int x){ if(x>n){ int tot=0; for(int i=1;i<=m;i++) { int t[3]; memset(t,0,sizeof t); for(int k=0;k<3;k++) for(int j=1;j<=n;j++) { if((a[j][i]+k)%3==0&&a[j][i]+k<=12) t[k]++; } tot+=max(t[0],max(t[1],t[2])); } ans=max(ans,tot); return ; } for(int i=0;i<=2;i++) { for(int j=1;j<=m;j++) a[x][j]+=i; dfs(x+1); for(int j=1;j<=m;j++) a[x][j]-=i; } } int main(){ freopen("haji.in","r",stdin); freopen("haji.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); dfs(1); printf("%d",ans); }
相关文章推荐
- 白盒测试方法之逻辑覆盖法
- Mongodb 副本集 数据同步简单测试
- 后台服务项目的白盒测试之旅
- 转载 测试如何更有效说服研发去修改bug?
- 三角形测试看测试设计
- 软件测试 评测
- jmeter测试工具应用场景【测试帮日记公开课】
- 在真机测试遇到The executable was signed with invalid entitleme
- java基础知识测试,看你能得多少分?
- 测试一
- 如何使用Apache的ab工具进行网站性能测试
- 【黑马程序员Android自学笔记】62期-27天-安卓基础 — Android测试&文件存储
- SQL注入测试平台 SQLol -2.SELECT注入测试
- soapui中的testrunner.bat调研姿势,用于自动化测试
- 设计功能和界面测试用例
- 由测试中的版本同步联想到敏捷开发中的两个实践
- 微软的软件测试方法
- 某机构测试eXtremeDB问题汇总
- spark:spark启动、spark-shell启动及测试--7
- 性能测试笔记之性能测试点选取(二)