随笔分类 -  noi

摘要:这题与前面的“踩方格”重复了,而且是大坑题!题目漏写了取模12345的条件! 详细解析请见我之前的博文——http://www.cnblogs.com/konjak/p/5936888.html 而这坑在我打了高精+滚动之后才知道。。我先把这个代码贴上来。。 1 #include<cstdio> 2 阅读全文
posted @ 2016-10-15 14:57 konjac蒟蒻 阅读(617) 评论(0) 推荐(0)
摘要:这题题意与前面的“判断整除”重复了。具体解释可看我这篇的博文。 http://www.cnblogs.com/konjak/p/5936738.html 阅读全文
posted @ 2016-10-15 11:33 konjac蒟蒻 阅读(245) 评论(0) 推荐(0)
摘要:题意:N个饰物,有重量和渴望程度。问在M的重量限制内能达到的最大的渴望度。 解法:经典的01问题,但有一个小技巧值得记住:用if比较大小比调用max函数快了不少,这题有100ms左右。 阅读全文
posted @ 2016-10-15 09:53 konjac蒟蒻 阅读(281) 评论(0) 推荐(0)
摘要:题意:有N瓶酒,不能连续喝>=3瓶的酒,问能喝的最大的酒量。 解法:同前一题相似,可以f[i][j]表示前i瓶中连续喝了j瓶的最大酒量。1.f[i][0]=f[i-1][3] ; 2.i=1或2时,f[i][j]=f[i-1][j-1]+a[i]; 3. f[i][3]=mx;也可以只用f[i]。 阅读全文
posted @ 2016-10-15 09:16 konjac蒟蒻 阅读(434) 评论(0) 推荐(0)
摘要:题意:n个数中不能同时选连续m个或以上,问方案数。 解法:f[i][j]表示从前i个中选,到第i个已经连续选了j个。j!=0时, =f[i-1][j-1] ; j=0时, =f[i-1][0~m-1] ; 优化1:f[i][m]存f[i-1][0~m-1],就不用多for一重。 1 #include 阅读全文
posted @ 2016-10-14 20:21 konjac蒟蒻 阅读(460) 评论(0) 推荐(0)
摘要:题意:从自然数1到N中不取相邻2数地取走任意个数,问方案数。 解法:f[i][1]表示在前i个数中选了第i个的方案数,f[i][0]表示没有选第i个。f[i][1]=f[i-1][0]; f[i][0]=f[i-1][1]+f[i-1][0] 而若简化方程式,用f[i]表示从前i个中取数的方案数。便 阅读全文
posted @ 2016-10-14 14:33 konjac蒟蒻 阅读(426) 评论(0) 推荐(0)
摘要:由于noi OJ上没有Special Judge,所以我是没有在这上面AC的。但是在POJ上A了。 题意如标题。 解法:f[i][j]表示a串前i个和b串前j个且包含b[j]的最长公共上升子序列长度 首先,可用3重循环得到,k循环找到b串j之前的最大长度子序列的结尾字符b[k],得以更新现在f[i] 阅读全文
posted @ 2016-10-13 22:20 konjac蒟蒻 阅读(752) 评论(0) 推荐(0)
摘要:题意:N*N的方格图每格有一个数值,要求从左上角每步往右或往下走到右下角,问走2次的最大和。 解法:走一次的很好想,而走2次,不可误以为先找到最大和的路,再找剩下的最大和的路就是正解。而应该认清动态规划的实质,定义为最佳解的状态,因此要走的2次都要涵括。 O(n^4)——f[i][j][k][l]表 阅读全文
posted @ 2016-10-12 21:50 konjac蒟蒻 阅读(786) 评论(0) 推荐(0)
摘要:题意:输出最长下降路径的长度。 解法:f[i][j]表示结尾于(i,j)的最长的长度。由于无法确定4个方位已修改到最佳,所以用递归实现。 阅读全文
posted @ 2016-10-12 20:47 konjac蒟蒻 阅读(343) 评论(0) 推荐(0)
摘要:题意:问把整数N分成K份的分法数。(与“放苹果”不同,在这题不可以有一份为空,但可以类比)解法:f[i][j]表示把i分成j份的方案数。f[i][j]=f[i-1][j-1](新开一份,放1)而i≥j时,f[i][j]=f[i-1][j-1] +f[i-j][j](不新开一份时的方案数与每份中都少放 阅读全文
posted @ 2016-10-11 21:49 konjac蒟蒻 阅读(2120) 评论(0) 推荐(0)
摘要:题意:给一个字符串,问至少切割几次使每子串都是回文的。 解法:f[i]表示前i个字符至少需要切割几次,预处理p[i][j]表示子串s[i]~s[j]是否为回文串。O(n^2) 另外,这题也类似“山区建小学”,可以枚举每个回文串的中心。但稍微麻烦一点。 阅读全文
posted @ 2016-10-10 22:12 konjac蒟蒻 阅读(687) 评论(0) 推荐(0)
摘要:题意:N天可买卖2次股票,问最大利润。 解法:f[i]表示前 i 天买卖一次的最大利润,g[i]表示后 i 天。 注意——当天可以又买又卖,不要漏了这个要求;数据较大。 阅读全文
posted @ 2016-10-10 17:16 konjac蒟蒻 阅读(611) 评论(0) 推荐(0)
摘要:题意:起始有1000元美元,给出N天美元与加拿大元的汇率。问N天内可以不停的兑换,每次兑换需要收取3%的手续费,问可以得到的最大的美元数。 解法:直接用2个变量存第 i 天时手中是美元和加拿大元的最大数额。 注意——不知为何计算机储存小数时会吞掉小数部分,所以保留2位小数时要用先*100后的整型存, 阅读全文
posted @ 2016-10-09 20:07 konjac蒟蒻 阅读(311) 评论(0) 推荐(0)
摘要:题意:其中n表示楼的高度,m表示你现在拥有的鸡蛋个数。 解法:f[i][j]表示 i 层楼有 j 个鸡蛋时,至少要扔多少次。3重循环,k为测试的楼层,分这时扔下去的鸡蛋碎和不碎的情况。要注意初始化。 阅读全文
posted @ 2016-10-09 19:56 konjac蒟蒻 阅读(773) 评论(0) 推荐(0)
摘要:这题其实在2.6前面的专题也有出现过,我还以为我有写,结果发现,并没有。于是就现在写了。这2题其实重复了......我就按放苹果的来说。 题意:把N个苹果放在M个盘子里,允许有的盘子空着不放,问共有多少种不同的分法。 解法:f[i][j]表示把 i 个苹果放在 j 个盘子的方案数,分有空盘子和无空盘 阅读全文
posted @ 2016-10-09 14:11 konjac蒟蒻 阅读(221) 评论(0) 推荐(0)
摘要:题意:给出一个带有通配符("?"可以代替一个字符,"*"可以代替零个或多个字符)的a字符串和一个不带通配符的b字符串,判断他们是否能够匹配。 解法:f[i][j]表示a串的前i个是否能和b串的前j个匹配。其中,"?"由f[i-1][j-1]推出,"*"由f[i-1][0~j]推出,便用一个变量p存这 阅读全文
posted @ 2016-10-09 13:22 konjac蒟蒻 阅读(418) 评论(0) 推荐(0)
摘要:题意:有N元,有无限多本10、20、50和100元的书,问有几种购买方案。 解法:f[i]表示用 i 元的方案数。还有一个 j 循环这次买多少元的书。 注意——要先 j 循环,再 i 循环。因为要先考虑第一种书,再是下一种书。若先 i 循环,后 j 循环,则相同的购买方案由购买次序不同而重复计算。 阅读全文
posted @ 2016-10-08 16:45 konjac蒟蒻 阅读(332) 评论(0) 推荐(0)
摘要:题意:有N个地址,从中选一些开餐馆,要保证相邻餐馆的距离大于k。问最大利润。 解法:f[i]表示在前 i 个地址中选的最大利润。 阅读全文
posted @ 2016-10-07 22:01 konjac蒟蒻 阅读(385) 评论(0) 推荐(0)
摘要:题意:一个无限大的方格矩阵,能向北、东、西三个方向走。问走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 阅读全文
posted @ 2016-10-07 21:52 konjac蒟蒻 阅读(1729) 评论(1) 推荐(2)
摘要:题意:小智有N个精灵球,皮卡丘有M的初始体力,有K个野生小精灵。要收服尽可能多的野生小精灵,并使皮卡丘的剩余体力最大。 解法:01背包问题,增多一维来存第二个条件。f[i][j][k]表示抓前i个野生小精灵,用了j个精灵球,耗费了k的体力时能抓的最多的小精灵数。(我把[i]的那维简化掉了,PG里的m 阅读全文
posted @ 2016-10-07 21:39 konjac蒟蒻 阅读(546) 评论(0) 推荐(0)