UVA 11552 四 Fewest Flops
2015-08-30 20:34
435 查看
Fewest Flops
Time Limit:2000MS Memory Limit:0KB 64bit IO Format:%lld & %llu
Submit Status Practice UVA 11552
View Code
Time Limit:2000MS Memory Limit:0KB 64bit IO Format:%lld & %llu
Submit Status Practice UVA 11552
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int main() { int T; int k,numk; int i,j; char a[1005]; int num[1005],q[1005][30],dp[1005][30]; scanf("%d",&T); while(T--) { memset(num,0,sizeof(num)); memset(q,0,sizeof(q)); memset(dp,0,sizeof(dp)); scanf("%d",&k); scanf("%s",a); int l=strlen(a); numk=l/k; if(l%k!=0) numk++; for(i=1;i<=numk;i++) { for(j=(i-1)*k;j<=i*k-1 && j<l;j++) { int o=a[j]-'a'+1; if(q[i][o]==0) { num[i]++; q[i][o]=1; } } } for(i=1;i<=26;i++) { if(q[1][i]==1) dp[1][i]=num[1]; } for(i=2;i<=numk;i++) { for(j=1;j<=26;j++) { if(q[i][j]==1) { if(q[i-1][j]==1) { dp[i][j]=dp[i-1][j]+num[i]; if(num[i-1]==1) dp[i][j]--; else { for(int u=1;u<=26;u++) { if(u!=j && q[i-1][u]==1) dp[i][j]=min(dp[i][j],dp[i-1][u]+num[i]-1); } } } else { dp[i][j]=9999; for(int u=1;u<=26;u++) { if(q[i-1][u]==1) dp[i][j]=min(dp[i][j],dp[i-1][u]+num[i]); } } } } } int ans=9999; for(int i=1;i<=26;i++) { if(q[numk][i]==1 && dp[numk][i]<ans) ans=dp[numk][i]; } printf("%d\n",ans); } return 0; }
View Code
相关文章推荐
- 【坑】【实例】【未解决】html5-canvas中实现图片的浮雕效
- html2D转换
- 前端路上的各种问题-javascript-2
- ASP.NET MVC Unobtrusive JavaScript 实现 onfocusout 验证, onfocusin 清除错误(转)
- 深入理解磁盘文件系统之inode
- css3弹性盒布局
- BackboneJs入门学习[05]—Sync
- Servlet3.1规范和JSP2.3规范
- 网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容如下:
- CodeForces 219B Special Offer! Super Price 999 Bourles!
- Javascript引擎单线程机制及setTimeout执行原理说明
- jquery 获取 outerHtml 包含当前节点本身的代码
- CSS3鼠标悬停图片动画
- 【WordPress插件】文章页和feed页显示版权插件
- 线性约束最优化问题的Frank-Wolfe方法
- PHP与jquery前后台交互的小程序
- <jsp:include page="index.jsp">和<%@include file="index.jsp" %>的区别
- jquery选择器(原创)
- JavaScript循环之for/in循环
- CSS基础1