码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 18E Flag 2 dp

时间:2014-06-29 22:04:26      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:blog   http   get   2014   os   name   

题目链接:点击打开链接

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<set>
#include<vector>
#include<map>
#include<math.h>
#include<queue>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define N 505
#define inf 1000000009
#define siz 26
char s[N][N];
int n, m;
int dp[N][siz][siz];
int a_path[N][siz][siz], b_path[N][siz][siz];
int cost(int x, int a, int b){
	a += 'a'; b += 'a';
	int ans = 0;
	for(int i = 0; i < n; i++)
		if(i&1)
			ans += (a!=s[x][i]);
		else 
			ans += (b!=s[x][i]);
	return ans;
}
void put(int z, int x, int y){
	if(z)put(z-1, a_path[z][x][y], b_path[z][x][y]);
	for(int i = 0; i < n; i++)
		if(i&1)printf("%c",x+'a');
		else printf("%c",y+'a');
		puts("");
}
int main(){
	while(cin>>m>>n) {
		for(int i = 0; i < m; i++)scanf("%s",s[i]);
		for(int i = 0; i < siz; i++) 
		{
			for(int j = 0; j < siz; j++)
				if(i==j)dp[0][i][j] = inf;
				else dp[0][i][j] = cost(0,i,j);
		}
		for(int i = 1; i < m; i++)
		{
			for(int A = 0; A < siz; A++)
				for(int B = 0; B < siz; B++) 
				{
					if(A == B)continue;
					int cur = cost(i, A, B);
					int mid, minn = inf, x = -1, y = -1;

					for(int a = 0; a < siz; a++)
						for(int b = 0; b < siz; b++)
						{
							if(a == A || b == B || a==b)continue;
							if(minn > dp[i-1][a][b])
								minn = dp[i-1][a][b],x=a,y=b;
						}
						dp[i][A][B] = minn + cur;
						a_path[i][A][B] = x;
						b_path[i][A][B] = y;
				}
		}
		int minn = inf, x, y;
		for(int a = 0; a < siz; a++)
		{
			for(int b = 0; b < siz; b++)
			{
				if(a==b)continue;
				if(minn>dp[m-1][a][b])
					minn = dp[m-1][a][b], x = a, y = b;
			}
		}
		cout<<dp[m-1][x][y]<<endl;
		put(m-1,x,y);
	}
	return 0;
}


CodeForces 18E Flag 2 dp,布布扣,bubuko.com

CodeForces 18E Flag 2 dp

标签:blog   http   get   2014   os   name   

原文地址:http://blog.csdn.net/qq574857122/article/details/35782397

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!