Guest User

Untitled

a guest
Apr 22nd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. struct a{
  7. int c;
  8. int p;
  9. int q;
  10. };
  11.  
  12. char tab[55][55];
  13. vector<a> dp[550];
  14. int cost[55][55];
  15. int r,s;
  16. int maxn=100000000;
  17.  
  18. bool cmp(a x,a y){
  19. return x.c<y.c;
  20. }
  21.  
  22. void solve(){
  23. for(int pos=0;pos<r;++pos){
  24. for(int i=0;i<52;++i)
  25. for(int j=i+1;j<52;++j){
  26. if(i%2==0 && j==i+1) continue;
  27. if(i%2==j%2) continue;
  28. a bla;
  29. bla.c=maxn;
  30. if(pos==0){
  31. bla.c=0;
  32. bla.p=i;
  33. bla.q=j;
  34. }
  35. else{
  36. for(int k=0;k<51;++k){
  37. if(dp[pos-1][k].p==i || dp[pos-1][k].p==j || dp[pos-1][k].q==i || dp[pos-1][k].q==j) continue;
  38. if(dp[pos-1][k].c<bla.c){
  39. bla.c=dp[pos-1][k].c;
  40. bla.p=i;
  41. bla.q=j;
  42. }
  43. }
  44. }
  45. bla.c+=cost[pos][i]+cost[pos][j];
  46.  
  47. dp[pos].push_back(bla);
  48. }
  49. sort(dp[pos].begin(),dp[pos].end(),cmp);
  50. for(int w=0;w<dp[pos].size();++w)
  51. printf("%d %d %d\n",dp[pos][w].p,dp[pos][w].q,dp[pos][w].c);
  52. printf("\n");
  53. }
  54. }
  55.  
  56. int main(void){
  57. scanf("%d%d",&r,&s);
  58. for(int i=0;i<r;++i)
  59. scanf("%s",tab[i]);
  60. for(int i=0;i<r;++i)
  61. for(int j=0;j<26;++j){
  62. int x=0;
  63. int y=0;
  64. for(int k=0;k<s;++k){
  65. if(k%2==0 && tab[i][k]-'a'!=j) ++x;
  66. if(k%2==1 && tab[i][k]-'a'!=j) ++y;
  67. }
  68. cost[i][2*j]=x;
  69. cost[i][2*j+1]=y;
  70. }
  71. /*for(int j=0;j<r;++j){
  72. for(int i=0;i<7;++i)
  73. printf("%d ",cost[j][i]);
  74. printf("\n");
  75. }*/
  76. solve();//govno sam pojeo
  77. printf("%d\n",dp[r-1][0]);
  78.  
  79. return 0;
  80. }
  81. /*
  82. 3 5
  83. ababa
  84. bbbbb
  85. babab
  86. */
Add Comment
Please, Sign In to add comment