Remembering Strings - CodeForces 543 C 状压dp
来源:互联网 发布:网络模式切换 编辑:程序博客网 时间:2024/05/21 01:43
题意:给定你一些字符串和每个字符修改成任意字符的花费。要求使得每个字符串都存在一个在其j列上唯一的字符。
思路:如果要使得i行j列的字符唯一,有两种方式,一种是改变这个字符,一种是改变该列上其他所有的字符。用状态压缩存储有哪些行的字符串不存在唯一的字符,然后逐一去进行上述两种操作。
AC代码如下:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char s[25][25];int n,m,dp[1100000],num[25][25],INF=1e9,MAXS;int POW[25],MS[25][25],cost[25][25];void init(){ int i,j,k,S; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { MS[i][j]=MAXS; for(k=1;k<=n;k++) if(s[i][j]==s[k][j]) { MS[i][j]-=POW[k]; if(k!=i) cost[i][j]+=num[k][j]; } }}int main(){ int i,j,k,ret,S,S2; bool flag; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) scanf("%s",s[i]+1); for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&num[i][j]); POW[1]=1; for(i=2;i<=23;i++) POW[i]=POW[i-1]*2; MAXS=POW[n+1]-1; init(); ret=MAXS; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { flag=true; for(k=1;k<=n;k++) if(s[i][j]==s[k][j] && i!=k) flag=false; if(flag) { ret-=POW[i]; break; } } } dp[ret]=0; for(S=0;S<ret;S++) dp[S]=INF; for(S=ret;S>0;S--) if(dp[S]<INF) { for(i=1;i<=n;i++) if(S&POW[i]) { for(j=1;j<=m;j++) { S2=S-POW[i]; dp[S2]=min(dp[S2],dp[S]+num[i][j]); S2=S&MS[i][j]; dp[S2]=min(dp[S2],dp[S]+cost[i][j]); } } } printf("%d\n",dp[0]);}
0 0
- Remembering Strings - CodeForces 543 C 状压dp
- [Codeforces 543C] Remembering Strings (状压DP)
- codeforces 543 C Remembering Strings
- codeforces 543C C. Remembering Strings(状态压缩dp)
- Codeforces 544E Remembering Strings 状压dp
- codeforces 543C C. Remembering Strings
- Codeforces 543C Remembering Strings 题解
- Codeforces Round #302 (Div. 2) E. Remembering Strings(状压dp)
- codeforces #302 Remembering Strings (dp)
- codeforces C. Remembering Strings 状态压缩-预处理
- cf#302 E. Remembering Strings 状压dp
- CodeForces - 482C Game with Strings(状压DP,期望)
- Codeforces 482C. Game with Strings 状压DP
- Codeforces 360C Levko and Strings (dp)
- Codeforces 360C Levko and Strings dp
- 【codeforces】477C Dreamoon and Strings dp
- Codeforces544E:Remembering Strings(状态压缩)
- Codeforces 360C - Levko and Strings 组合数学+DP
- 为什么你说“就差一个码农了”,我们是拒绝的
- App开发日报 2015-05-15 大疆无人机IOS开发之搭建DJI Phantom和iOS视觉平台
- 第一次在csdn写博客
- 在数据库中根据经纬度查找数据中所有附近的经纬度点
- 应用的响应性(Responsive)
- Remembering Strings - CodeForces 543 C 状压dp
- 第三章第42题
- c#开发注意事项
- Code[vs]1008 选数( dfs+枚举判素)
- Java 父类引用指向子类对象(面试常考知识,来自转载)
- 【HTML+CSS+JavaScript】网页实战开发笔记之一——HTML的头部信息里你不知道的事
- Tomcat部署Web应用方法总结
- c++程序设计——实验7
- something need to figure it out