UVA 11552 Fewest Flops

来源:互联网 发布:可以免费开淘宝店吗 编辑:程序博客网 时间:2024/06/09 13:45

水题

#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define MAX 1100using namespace std;char s[MAX];int L,k,dp[MAX][26],count_t[26];void init(){cin>>k;cin>>s;L=strlen(s);memset(dp,0x7f,sizeof(dp));}void solve(){for(int i=0;i<L/k;i++){int front=i*k,rear=(i+1)*k-1;memset(count_t,0,sizeof(count_t));for(int j=front;j<=rear;j++)count_t[s[j]-'a']++;int kind=0;for(int j=0;j<26;j++)if(count_t[j])kind++;for(int j=0;j<26;j++){if(count_t[j]){if(i==0)dp[i][j]=kind;else{for(int t=0;t<26;t++){if(j!=t){if(count_t[t])dp[i][j]=min(dp[i][j],dp[i-1][t]+kind-1);elsedp[i][j]=min(dp[i][j],dp[i-1][t]+kind);}else{if(kind==1)dp[i][j]=min(dp[i][j],dp[i-1][t]);elsedp[i][j]=min(dp[i][j],dp[i-1][t]+kind);}}}}}}int ans=0x7f7f7f7f;for(int i=0;i<26;i++){ans=min(ans,dp[L/k-1][i]);}cout<<ans<<endl;}int main(){int T;cin>>T;while(T--){init();solve();}return 0;}


0 0
原创粉丝点击