Fewest Flops

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

 #include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int T;
int k,numk;
int i,j;
char a[];
int num[],q[][],dp[][];
scanf("%d",&T);
while(T--)
{
memset(num,,sizeof(num));
memset(q,,sizeof(q));
memset(dp,,sizeof(dp));
scanf("%d",&k);
scanf("%s",a);
int l=strlen(a);
numk=l/k;
if(l%k!=)
numk++;
for(i=;i<=numk;i++)
{
for(j=(i-)*k;j<=i*k- && j<l;j++)
{
int o=a[j]-'a'+;
if(q[i][o]==)
{
num[i]++;
q[i][o]=;
}
}
} for(i=;i<=;i++)
{
if(q[][i]==)
dp[][i]=num[];
} for(i=;i<=numk;i++)
{
for(j=;j<=;j++)
{
if(q[i][j]==)
{
if(q[i-][j]==)
{
dp[i][j]=dp[i-][j]+num[i];
if(num[i-]==)
dp[i][j]--;
else
{
for(int u=;u<=;u++)
{
if(u!=j && q[i-][u]==)
dp[i][j]=min(dp[i][j],dp[i-][u]+num[i]-);
}
}
}
else
{
dp[i][j]=;
for(int u=;u<=;u++)
{
if(q[i-][u]==)
dp[i][j]=min(dp[i][j],dp[i-][u]+num[i]);
}
}
}
}
} int ans=;
for(int i=;i<=;i++)
{
if(q[numk][i]== && dp[numk][i]<ans)
ans=dp[numk][i];
} printf("%d\n",ans);
}
return ;
}

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. 关闭微软对win10的推送

    找到windows中安装的更新,卸载 KB3035583 这个更新即可

  2. setTimeout() 与 setInterval()

    setTimeout() 从载入后延迟指定的时间去执行一个表达式或者是函数;       仅执行一次 ;和window.clearTimeout一起使用. setInterval() 在执行时,它从载 ...

  3. setInterval 实时驱动界面改变

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. android 学习随笔五(界面)

    把数据库内容显示到界面 清单文件设置为线性布局(5大布局属于ViewGroup) 在清单文件中可以增加View显示 LinearLayout ll = (LinearLayout) findViewB ...

  5. uploadify3.2.1加载时,报NetworkError 404 Not Found或NetworkError forbidden错误

    我用的uploadify的版本是3.2.1 在打开配置了uploadify的页面的时候,什么操作都没有,仅仅是打开了页面,在火狐里可以看到一行报错信息,我的uploadify页面 在"/项目 ...

  6. Access数据库导入到SQL Server 2005 Express中

    安装好SQL Server 2005 Express后,再安装SQL Server Management Studio Express CTP就可以很方便的使用控制台进行数据库的管理.但SQL Ser ...

  7. va_list/va_start/va_arg/va_end深入分析【转】

    转自:http://www.cnblogs.com/justinzhang/archive/2011/09/29/2195969.html va_list/va_start/va_arg/va_end ...

  8. Memcached 分布式缓存实现原理

    摘要 在高并发环境下,大量的读.写请求涌向数据库,此时磁盘IO将成为瓶颈,从而导致过高的响应延迟,因此缓存应运而生.无论是单机缓存还是分布式缓存都有其适应场景和优缺点,当今存在的缓存产品也是数不胜数, ...

  9. hobby

    如果把战争的原则凝缩为一个词,那就是集中. 人生有三把钥匙, 接受. 改变. 离开.不能接受,那就改变,不能改变,那就离开. 少问别人为什么,多问自己凭什么. 太平自古将军定,不许将军见太平

  10. PHP获取不了React Native Fecth参数的解决办法代码是怎样?

    fetch('https://mywebsite.com/endpoint/', { method: 'POST',headers: {'Accept': 'application/json','Co ...