链接

dfs倒着搜 返回的路径不能满足相同的数最多 借鉴了下别人的代码。。

先dp出来 再倒着标记一下 然后正回来一定可以满足了

dp保存的是最小的不相同数

  1. #include <iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<stdlib.h>
  5. #include<algorithm>
  6. using namespace std;
  7. #define INF 0xfffffff
  8. int dp[][];
  9. char s[];
  10. int flag,path[],k,m,pp[],f[][];
  11. int main()
  12. {
  13. int i,j,g;
  14. while(scanf("%s%d",s,&m)!=EOF)
  15. {
  16. k = strlen(s);flag=;
  17. memset(f,,sizeof(f));
  18. for(i = ; i <= k ; i++)
  19. for(j = ; j <= m ; j++)
  20. dp[i][j] = INF;
  21. if(k==)
  22. {
  23. printf("%c\n",s[]);
  24. continue;
  25. }
  26. for(i = ; i <= ; i++)
  27. {
  28. if(i==s[]-'')
  29. dp[][i%m] = min(dp[][i%m],);
  30. else
  31. dp[][i%m] = min(dp[][i%m],);
  32. }
  33. for(i = ; i < k ; i++)
  34. for(j = ; j<m ; j++)
  35. {
  36. if(dp[i][j] == INF) continue;
  37. for(g = ; g <= ; g++)
  38. {
  39. int o;
  40. if(g==s[i]-'')
  41. o = ;
  42. else
  43. o = ;
  44. dp[i+][(j*+g)%m] = min(dp[i+][(j*+g)%m],dp[i][j]+o);
  45. }
  46. }
  47. f[k][] = ;
  48. for(i = k- ; i>= ; i--)
  49. for(j = ; j < m ; j++)
  50. {
  51. if(dp[i][j]==INF) continue;
  52. for(g = ; g <= ; g++)
  53. {
  54. int o;
  55. if(g==s[i]-'')
  56. o = ;
  57. else
  58. o = ;
  59. if(dp[i][j]+o==dp[i+][(j*+g)%m]&&f[i+][(j*+g)%m])
  60. {
  61. f[i][j] = ;
  62. }
  63. }
  64. }
  65. int ss;
  66. for(i = ; i < ; i++)
  67. {
  68. int o;
  69. if(i==s[]-'')
  70. o = ;
  71. else
  72. o = ;
  73. if(f[][i%m]&&dp[][i%m]==o)
  74. {
  75. printf("%d",i);
  76. ss = i%m;
  77. break;
  78. }
  79. }
  80. for(i = ; i <= k ;i++)
  81. {
  82. for(g = ; g <= ; g++)
  83. {
  84. int o;
  85. if(g==s[i-]-'')
  86. o = ;
  87. else
  88. o = ;
  89. if(f[i][(ss*+g)%m]&&dp[i][(ss*+g)%m]==dp[i-][ss]+o)
  90. {
  91. printf("%d",g);
  92. ss = (ss*+g)%m;
  93. break;
  94. }
  95. }
  96. }
  97. puts("");
  98. }
  99. return ;
  100. }

poj3373Changing Digits(dp)的更多相关文章

  1. URAL 1658. Sum of Digits(DP)

    题目链接 隔了一年零三个月,重新刷URAL,这题挺麻烦的输出路径.输出路径挺扯的,乱写了写乱改改就A了...我本来想用很靠谱,记录每一条路径的,然后输出最小的,结果Tle,然后我使劲水水又过了一组,发 ...

  2. POJ 3373 Changing Digits(DP)

    题目链接 记录路径的DP,看的别人的思路.自己写的也不好,时间居然2000+,中间的取余可以打个表,优化一下. 写的各种错,导致wa很多次,写了一下午,自己构造数据,终于发现了最后一个bug. dp[ ...

  3. URAL1658. Sum of Digits(DP)

    链接 这题卡了挺久了 昨天试着用类似dfs的方法直接TLE在第二组 看了下题解,,发现s1,s2的范围是个幌子..100位最大的s1900 s28100 觉得s1s2太大不敢开二维.. 这样就简单了 ...

  4. poj3373--Changing Digits(DFS+剪枝///记忆化)

    题目链接:点击打开链接 题目大意:给出一个n和一个k 求m 要求1.m要和n相同的位数 要求2.m要整除k 要求3.如果1和2满足,那么m要和n有尽量少的不同位 要求4.如果1.2.3满足,要使m尽量 ...

  5. Leetcode: Count Numbers with Unique Digits

    Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n. Examp ...

  6. F. Igor and Interesting Numbers

    http://codeforces.com/contest/747/problem/F cf #387 div2 problem f 非常好的一道题.看完题,然后就不知道怎么做,感觉是dp,但是不知道 ...

  7. Odoo小数精度及货币精度详解

    一.小数精度的设置 一般在设置-数据结构-精度设置中就可以对 小数类型的字段进行精度设置: 对于代码中定义为 digits=dp.get_precision('Product Price') 或 di ...

  8. 2017.7.4 ACM校内赛 Round 2

    这是一个向导 A - hdu 3652 B - bzoj 4152 C - bzoj 2429 D - bzoj 1087 E - bzoj 1566 F - bzoj 4043 G - bzoj 1 ...

  9. odoo小数精确度

    python round() 函数     Python用于四舍五入的内建函数round() ,它的定义为 意思是, 将 小数部分保留到 ndigits 指定的 小数位,也就是 精度保持到 ndigi ...

随机推荐

  1. 01线性表顺序存储_List--(线性表)

    #include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...

  2. Markdown編輯器

    MarkDown编辑器 一.什么是Markdown编辑器 二.怎么使用Markdown编辑器 1.标题/Head 2.超链接/Link/Reference ②自動的郵件連結也很類似,只是Markdow ...

  3. 暑假集训(2)第四弹 ----- 敌兵布阵(hdu1166)

    D - 敌兵布阵 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64bit ...

  4. C++ map.insert 传参类型不同,构造/析构次数不同

    1. 传参方式 使用 insert 为 map 插值时,insert 的传参包含以下几种可能: make_pair 生成对象 pair(key_type, value_type) 生成对象 pair( ...

  5. CentOS7 yum安装配置

    一.安装必要包 yum install gcc 二.linux下安装 #下载 wget http://download.redis.io/releases/redis-3.0.0.tar.gz tar ...

  6. Html盒子模型学习总结

    Html的盒子模型 1.总的来说Html元素可以分为两类:即块状元素和行内元素. 2.块状元素(Block)类型的元素可以设置Width和Height值属性,而行内(Inline)类型无效. 3.浏览 ...

  7. Cassandra1.2文档学习(3)——数据分配和复制

    参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/a ...

  8. 创建一个cocos2d-x工程添加一个自定义Scene并显示

    #include "cocos2d.h" class RunScene :public cocos2d::CCLayer { public: virtual bool init() ...

  9. PHP学习笔记(3) - 奇怪的class与autoload

    PHP的class与其他语言有很多不同点.PHP允许很奇葩的在静态方法中调用实例方法,提供了关键字self和static用于访问类自身的静态成员.self永远是指当前的类,而static则可能会变成指 ...

  10. CentOS安装SetupTools(easy_install)

    确保Py版本在2.6或以上 (旧版本需升级或参考旧版本安装) cd /opt wget https://pypi.python.org/packages/source/s/setuptools/set ...