首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
【noi 2.6_687】Color Tunnels(DP)
】的更多相关文章
【noi 2.6_687】Color Tunnels(DP)
P.S.o(︶︿︶)o 唉~虽然这题方程不难,但题目长,代码长,我花了超过3小时!(>﹏<)悲伤辣么大~~~ 谨此题解惠及众人,hh. 题意:给定长度为M的一串颜色序列,和平面上的N个颜色隧道.要求以颜色序列的顺序通过颜色隧道.(隧道可多次使用,可交叉,互不相同.)问从源点到汇点依次通过颜色的最小距离. 解法:f[i][j]表示通过颜色序列前 i 个颜色,这次的第 i 个颜色的隧道选 j 的最小距离.枚举第 i-1 个颜色选的隧道为 k ,则:f[i][j] = min( f[i][j] ,…
【noi 2.6_162】Post Office(DP)
这题和"山区建小学"除了输入不同,其他都一样.(解析可见我的上一篇随笔) 但是,这次我对dis[][]加了一个优化,画一下图就可明白. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 5 const int N=310,M=35; 6 int s[N],f[N][M],dis[N][N]; 7 8 int mmin(int x,int y) {return x<y?x:y…
【noi 2.6_1481】Maximum sum(DP)
题意:求不重叠的2段连续和的最大值. 状态定义f[i]为必选a[i]的最大连续和,mxu[i],mxv[i]分别为前缀和后缀的最大连续和. 注意:初始化f[]为0,而max值为-INF.要看好数据范围. #include<cstdio> #include<cstdlib> #include<cstring> const int N=50010,INF=10010; int a[N],f[N],mxq[N],mxh[N]; int mmax(int x,int y) {r…
【noi 2.6_3531】判断整除(DP)
题意:给一个正整数数列,可将其相加或相减,问是否有一个结果能被K整除. 解法:似上一题"糖果"的状态定义,f[i][j]表示是否有一个选了前 i 个数的结果模K余j. P.S. 可以用滚动数组. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 7 const int N=1001…
【noi 2.6_9271】奶牛散步(DP)
这题与前面的"踩方格"重复了,而且是大坑题!题目漏写了取模12345的条件! 详细解析请见我之前的博文--http://www.cnblogs.com/konjak/p/5936888.html 而这坑在我打了高精+滚动之后才知道..我先把这个代码贴上来.. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using nam…
【noi 2.6_7113】Charm Bracelet(DP)
题意:N个饰物,有重量和渴望程度.问在M的重量限制内能达到的最大的渴望度. 解法:经典的01问题,但有一个小技巧值得记住:用if比较大小比调用max函数快了不少,这题有100ms左右. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 #define VV 12900 7 int w[VV],d[VV…
【noi 2.6_2421】Exchange Rates(DP)
题意:起始有1000元美元,给出N天美元与加拿大元的汇率.问N天内可以不停的兑换,每次兑换需要收取3%的手续费,问可以得到的最大的美元数. 解法:直接用2个变量存第 i 天时手中是美元和加拿大元的最大数额. 注意--不知为何计算机储存小数时会吞掉小数部分,所以保留2位小数时要用先*100后的整型存, 最后答案再输出/100.0的实数. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #inc…
【noi 2.6_6049】买书(DP)
题意:有N元,有无限多本10.20.50和100元的书,问有几种购买方案. 解法:f[i]表示用 i 元的方案数.还有一个 j 循环这次买多少元的书. 注意--要先 j 循环,再 i 循环.因为要先考虑第一种书,再是下一种书.若先 i 循环,后 j 循环,则相同的购买方案由购买次序不同而重复计算. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5…
【noi 2.6_6045】开餐馆(DP)
题意:有N个地址,从中选一些开餐馆,要保证相邻餐馆的距离大于k.问最大利润. 解法:f[i]表示在前 i 个地址中选的最大利润. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 7 const int Maxn=110,Maxm=1000010; 8 int m[Maxn],p[Maxn]; 9 i…
【noi 2.6_4982】踩方格(DP)
题意:一个无限大的方格矩阵,能向北.东.西三个方向走.问走N步共有多少种不同的方案. 解法: f[i]表示走 i 格的方案数. 状态转移方程推导如下--设l[i],r[i],u[i]分别为第 i 步向西.东.北的方案数,f[i]为总方案数.l[i]=l[i-1]+u[i-1], r[i]=r[i-1]+u[i-1], u[i]=l[i-1]+r[i-1]+u[i-1]f[i]=l[i]+r[i]+u[i] =2*l[i-1]+2*r[i-1]+3*u[i-1] =2*f[i-1]+u…