Fewest Flops

Time Limit:2000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <algorithm>
  4. using namespace std;
  5. int main()
  6. {
  7. int T;
  8. int k,numk;
  9. int i,j;
  10. char a[];
  11. int num[],q[][],dp[][];
  12. scanf("%d",&T);
  13. while(T--)
  14. {
  15. memset(num,,sizeof(num));
  16. memset(q,,sizeof(q));
  17. memset(dp,,sizeof(dp));
  18. scanf("%d",&k);
  19. scanf("%s",a);
  20. int l=strlen(a);
  21. numk=l/k;
  22. if(l%k!=)
  23. numk++;
  24. for(i=;i<=numk;i++)
  25. {
  26. for(j=(i-)*k;j<=i*k- && j<l;j++)
  27. {
  28. int o=a[j]-'a'+;
  29. if(q[i][o]==)
  30. {
  31. num[i]++;
  32. q[i][o]=;
  33. }
  34. }
  35. }
  36.  
  37. for(i=;i<=;i++)
  38. {
  39. if(q[][i]==)
  40. dp[][i]=num[];
  41. }
  42.  
  43. for(i=;i<=numk;i++)
  44. {
  45. for(j=;j<=;j++)
  46. {
  47. if(q[i][j]==)
  48. {
  49. if(q[i-][j]==)
  50. {
  51. dp[i][j]=dp[i-][j]+num[i];
  52. if(num[i-]==)
  53. dp[i][j]--;
  54. else
  55. {
  56. for(int u=;u<=;u++)
  57. {
  58. if(u!=j && q[i-][u]==)
  59. dp[i][j]=min(dp[i][j],dp[i-][u]+num[i]-);
  60. }
  61. }
  62. }
  63. else
  64. {
  65. dp[i][j]=;
  66. for(int u=;u<=;u++)
  67. {
  68. if(q[i-][u]==)
  69. dp[i][j]=min(dp[i][j],dp[i-][u]+num[i]);
  70. }
  71. }
  72. }
  73. }
  74. }
  75.  
  76. int ans=;
  77. for(int i=;i<=;i++)
  78. {
  79. if(q[numk][i]== && dp[numk][i]<ans)
  80. ans=dp[numk][i];
  81. }
  82.  
  83. printf("%d\n",ans);
  84. }
  85. return ;
  86. }

UVA 11552 四 Fewest Flops的更多相关文章

  1. UVa 11552 DP Fewest Flops

    题解 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ...

  2. uva 11552 Fewest Flops 线性dp

    // uva 11552 Fewest Flops // // 二维线性dp // // 首先,在该块必须是相同的来信.首先记录每块有很多种书 // 称为是counts[i]; // // 订购f[i ...

  3. 多维DP UVA 11552 Fewest Flop

    题目传送门 /* 题意:将子符串分成k组,每组的字符顺序任意,问改变后的字符串最少有多少块 三维DP:可以知道,每一组的最少块是确定的,问题就在于组与组之间可能会合并块,总块数会-1. dp[i][j ...

  4. uva 11552 dp

    UVA 11552 - Fewest Flops 一个字符串,字符串每 k 个当作一组,组中的字符顺序能够重组.问经过重组后改字符串能够编程最少由多少块字符组成.连续的一段字符被称为块. dp[i][ ...

  5. UVa 11552 Fewest Flops (DP)

    题意:给一个字符串,把它分为k块,每一块里面的字母可以任意的排序.最终字符串, 连续的一样的字母算作一个chunk,问总chunks最少是多少? 析:dp[i][j] 表示第 i 个块,第 j 位在末 ...

  6. UVA 11552 Fewest Flops(区间dp)

    一个区间一个区间的考虑,当前区间的决策只和上一次的末尾有关,考虑转移的时候先统计当前区间出现过的字母以及种数ct 枚举上一个区间的末尾标号j,规定小于INF为合法状态,确定j之后看j有没有在当前的区间 ...

  7. UVA - 11552 Fewest Flops

    传送门: 题目大意:给你一个字符串,可以平均分成很多段,每一段之内的元素可以任意排序,最后再按原来的顺序把每一段拼起来,问最少的块数.(块:连续相同的一段字符成为一个块) 题解: 首先我们可以发现,每 ...

  8. UVA11552:Fewest Flops

    发现如果只有一块就是种类的数目,也就是同种放在一起, 再考虑多块,如果违背的上面的规律,可以发现不会更优, 于是问题就是求在满足同种类放在一起的前提下,尽量使得相邻块的两端一模一样 然后dp一下就可以 ...

  9. UVa 11552 最小的块数(序列划分模型:状态设计)

    https://vjudge.net/problem/UVA-11552 题意:输入一个正整数k和字符串S,字符串的长度保证为k的倍数.把S的字符按照从左到右的顺序每k个分成一组,每组之间可以任意重排 ...

随机推荐

  1. Yii2下拉框实现

    详细介绍yii2下拉框的实现方法,以商品分类的下拉框为例: 第一种方法:使用Html的activeDropDownList(),该方法的优点是:可以自定义下拉框的样式.具体实现如下: 1.控制器中,获 ...

  2. RMB转换人民币大小金额

    MXS&Vincene  ─╄OvЁ  &0000015 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...

  3. loadrunner具体实例教你如何进行结果分析

    1.对于吞吐量,单位时间内吞吐量越大,说明服务器的处理能越好,而请求数仅表示客户端向服务器发出的请求数,与吞吐量一般是成正比关系. 2.一般瓶颈应该就是某个因素在不断增加,某个相关性能指标也会不断增加 ...

  4. 【Pro ASP.NET MVC 3 Framework】.学习笔记.11.ASP.NET MVC3的细节:概览MVC项目

    书Adam The Definitive Guide to HTML5 Adam Applied ASP.NET 4 in Context and Pro ASP.NET 4 到此为止,我们已经学了为 ...

  5. 【Pro ASP.NET MVC 3 Framework】.学习笔记.6.SportsStore:导航

    在之前的章节,偶们设置了核心的基础设施,现在我们将使用基础设计添加关键特性,你将会看到投资是如何回报的.我们能够很简单很容易地添加重要的面向客户的特性.沿途,你也会看到一些MVC框架提供的附加的特性. ...

  6. ectouch第九讲 之ectouch 开始调试模式方法

    ectouch 开始调试模式方法 原文: http://my.oschina.net/u/1036767/blog/407067页面报错对于发现编程过程中的问题很重要,所以在开发之前要先搞定它,免得出 ...

  7. POJ 3580:SuperMemo(Splay)

    http://poj.org/problem?id=3580 题意:有6种操作,其中有两种之前没做过,就是Revolve操作和Min操作.Revolve一开始想着一个一个删一个一个插,觉得太暴力了,后 ...

  8. HDU 5724:Chess(博弈 + 状压)

    http://acm.hdu.edu.cn/showproblem.php?pid=5724 Chess Problem Description   Alice and Bob are playing ...

  9. git学习相关资料

    入门还是廖大师的博客. 搭建git服务器: http://blog.csdn.net/code_style/article/details/38764203

  10. PullToRefresh 下拉刷新的样式修改

    资源文件结构图, 先看看下拉刷新头的布局, <?xml version="1.0" encoding="utf-8"?> <merge xml ...