codeforces 154A Hometask 贪心 dp
2012-12-20 21:57
369 查看
题意:在一串文字中有一些字符对不允许出现,问最小修改数。输入时的字符对保证两个字符不同,且其中字符唯一
做法:一个字串只含有某个对中的字母,这个字符对才可能存在,要破坏这个字串,就在改变出现次数最少的那个字符,由此寻找符合题意的字串,并且求出修改次数,叠加即可。
做法:一个字串只含有某个对中的字母,这个字符对才可能存在,要破坏这个字串,就在改变出现次数最少的那个字符,由此寻找符合题意的字串,并且求出修改次数,叠加即可。
#include <iostream> #include <cstdio> #include <cstring> #include <utility> #define LMT 100003 using namespace std; int get[15][27]; char str[LMT],ord[3]; bool have[15][27]; pair<char,char>ford[15]; int min(int a,int b) { return a<b?a:b; } int main() { int len,n,ans=0; scanf("%s",str); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%s",ord); ford[i]=make_pair(ord[0],ord[1]); have[i][ord[1]-'a']=have[i][ord[0]-'a']=1; } len=strlen(str); for(int i=0;i<=len;i++) { for(int j=0;j<n;j++) if(!str[i]||have[j][str[i]-'a']==0) { ans+=min(get[j][ford[j].first-'a'],get[j][ford[j].second-'a']); memset(get[j],0,sizeof(get[j])); } if(str[i]) for(int j=0;j<n;j++) get[j][str[i]-'a']++; } printf("%d\n",ans); return 0; }
相关文章推荐
- CodeForces 154A Hometask dp
- CodeForces 337C Captains Mode(dp+位运算+贪心)
- Codeforces 318 div2.D Bear and Blocks(dp,贪心)
- CodeForces 645E Intellectual Inquiry(构造+贪心+dp)
- codeforces 913 c Party Lemonade(贪心+DP)
- [Codeforces 940.E] Cashback(dp,数据结构,贪心)
- codeforces 269B Greenhouse Effect (贪心+dp)
- codeforces 637D D. Running with Obstacles(dp,水题,贪心)
- CodeForces 645 E.Intellectual Inquiry(dp+贪心)
- Codeforces 645E Intellectual Inquiry (贪心+DP)
- Codeforces 5C Longest Regular Bracket Sequence [贪心] [DP]
- Codeforces 155C Hometask【思维+Dp】
- codeforces 571B--Minimization(贪心+dp)
- Codeforces 320E Kalila and Dimna in the Logging Industry【思维+贪心+斜率优化Dp】好题!
- Codeforces 365D 贪心+dp
- Codeforces 77C 树形dp + 贪心
- codeforces 527D D. Clique Problem(二分+线段树+贪心+dp)
- Codeforces 154A Hometask
- [Codeforces 814D] An overnight dance in discotheque 树形dp,贪心
- Codeforces 545 C Woodcutters(贪心/DP)