poj3373Changing Digits(dp)
dfs倒着搜 返回的路径不能满足相同的数最多 借鉴了下别人的代码。。
先dp出来 再倒着标记一下 然后正回来一定可以满足了
dp保存的是最小的不相同数
#include <iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define INF 0xfffffff
int dp[][];
char s[];
int flag,path[],k,m,pp[],f[][];
int main()
{
int i,j,g;
while(scanf("%s%d",s,&m)!=EOF)
{
k = strlen(s);flag=;
memset(f,,sizeof(f));
for(i = ; i <= k ; i++)
for(j = ; j <= m ; j++)
dp[i][j] = INF;
if(k==)
{
printf("%c\n",s[]);
continue;
}
for(i = ; i <= ; i++)
{
if(i==s[]-'')
dp[][i%m] = min(dp[][i%m],);
else
dp[][i%m] = min(dp[][i%m],);
}
for(i = ; i < k ; i++)
for(j = ; j<m ; j++)
{
if(dp[i][j] == INF) continue;
for(g = ; g <= ; g++)
{
int o;
if(g==s[i]-'')
o = ;
else
o = ;
dp[i+][(j*+g)%m] = min(dp[i+][(j*+g)%m],dp[i][j]+o);
}
}
f[k][] = ;
for(i = k- ; i>= ; i--)
for(j = ; j < m ; j++)
{
if(dp[i][j]==INF) continue;
for(g = ; g <= ; g++)
{
int o;
if(g==s[i]-'')
o = ;
else
o = ;
if(dp[i][j]+o==dp[i+][(j*+g)%m]&&f[i+][(j*+g)%m])
{
f[i][j] = ;
}
}
}
int ss;
for(i = ; i < ; i++)
{
int o;
if(i==s[]-'')
o = ;
else
o = ;
if(f[][i%m]&&dp[][i%m]==o)
{
printf("%d",i);
ss = i%m;
break;
}
}
for(i = ; i <= k ;i++)
{
for(g = ; g <= ; g++)
{
int o;
if(g==s[i-]-'')
o = ;
else
o = ;
if(f[i][(ss*+g)%m]&&dp[i][(ss*+g)%m]==dp[i-][ss]+o)
{
printf("%d",g);
ss = (ss*+g)%m;
break;
}
}
}
puts("");
}
return ;
}
poj3373Changing Digits(dp)的更多相关文章
- URAL 1658. Sum of Digits(DP)
题目链接 隔了一年零三个月,重新刷URAL,这题挺麻烦的输出路径.输出路径挺扯的,乱写了写乱改改就A了...我本来想用很靠谱,记录每一条路径的,然后输出最小的,结果Tle,然后我使劲水水又过了一组,发 ...
- POJ 3373 Changing Digits(DP)
题目链接 记录路径的DP,看的别人的思路.自己写的也不好,时间居然2000+,中间的取余可以打个表,优化一下. 写的各种错,导致wa很多次,写了一下午,自己构造数据,终于发现了最后一个bug. dp[ ...
- URAL1658. Sum of Digits(DP)
链接 这题卡了挺久了 昨天试着用类似dfs的方法直接TLE在第二组 看了下题解,,发现s1,s2的范围是个幌子..100位最大的s1900 s28100 觉得s1s2太大不敢开二维.. 这样就简单了 ...
- poj3373--Changing Digits(DFS+剪枝///记忆化)
题目链接:点击打开链接 题目大意:给出一个n和一个k 求m 要求1.m要和n相同的位数 要求2.m要整除k 要求3.如果1和2满足,那么m要和n有尽量少的不同位 要求4.如果1.2.3满足,要使m尽量 ...
- Leetcode: Count Numbers with Unique Digits
Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n. Examp ...
- F. Igor and Interesting Numbers
http://codeforces.com/contest/747/problem/F cf #387 div2 problem f 非常好的一道题.看完题,然后就不知道怎么做,感觉是dp,但是不知道 ...
- Odoo小数精度及货币精度详解
一.小数精度的设置 一般在设置-数据结构-精度设置中就可以对 小数类型的字段进行精度设置: 对于代码中定义为 digits=dp.get_precision('Product Price') 或 di ...
- 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 ...
- odoo小数精确度
python round() 函数 Python用于四舍五入的内建函数round() ,它的定义为 意思是, 将 小数部分保留到 ndigits 指定的 小数位,也就是 精度保持到 ndigi ...
随机推荐
- [译]当你在浏览器输入url后发生了什么
面试题会经常问这个,之前也被问过,回答的不是很好,后来看到百度前端的一篇博客,啰嗦了好多,很么触摸屏都上了..后来看到stackoverflow上的一个回答,比较短. 原文地址:http://stac ...
- [翻译][MVC 5 + EF 6] 7:加载相关数据
原文:Reading Related Data with the Entity Framework in an ASP.NET MVC Application 1.延迟(Lazy)加载.预先(Eage ...
- Stable Matching 稳定匹配 婚姻算法 shapley 算法
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4051286.html 稳定匹配问题:有N男N女,每个人对于异性都一个排名,先需要得到一种稳 ...
- Oracle配置
1.安装Oracle11g--->通过Database Configuration Assistant创建新数据库 建数据库注意记住数据库名和SID,安装最后一步解锁scott[密码填tiger ...
- Asp.net 图片文件防盗链介绍
想要实现文件放盗链的功能 首先添加一个全局文件 Global.asax 在 Application_BeginRequest中我们可以判断Http报文头中的UrlReferre是否来源本站. if ( ...
- CSS3 关于@font-face引用中文字体解决办法
有两种方法,一种简单的,一种比较复杂,都可以实现(注:这里的方法只适合使用少量的中文字体,如果使用的字量过大,请使用其他方法解决) 第一种:简单的 1.下载需要的中文字体的.ttf格式,这个都不难找到 ...
- Educational Codeforces Round 7 F - The Sum of the k-th Powers 拉格朗日插值
The Sum of the k-th Powers There are well-known formulas: , , . Also mathematicians found similar fo ...
- FatFsVersion0.01源码分析
目录 一.API的函数功能简述 二.FATFS主要数据结构 1.FAT32文件系统的结构 2.FATFS主要数据结构 ① FATFS ② DIR ③ FIL ④ FILINFO ⑤ wi ...
- codevs 1743 反转卡片
题目描述 Description [dzy493941464|yywyzdzr原创] 小A将N张卡片整齐地排成一排,其中每张卡片上写了1~N的一个整数,每张卡片上的数各不相同. 比如下图是N=5的一种 ...
- poj 3250 Bad Hair Day (单调栈)
http://poj.org/problem?id=3250 Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissi ...