随笔分类 - ACM
大二到大三不堪回首的记忆....
摘要:原题链接 考察:线性DP 本蒟蒻是完全没想到这个方程...思路基本照搬Y总 思路: 可以从题目分析出两个性质: 1.第i行人数一定>=第i+1行.(因为每列都要求递减) 2.每一行人数只能从左开始相邻放 行数最多5,可以考虑每行一个状态.设f[i][j][k][t][p]设置为第一行有i个人,第二行
阅读全文
摘要:原题链接 考察:线性DP 最长上升子序列+最长公共子序列的综合版 思路: 要写这道题必须明白最长上升子序列+最长公共子序列的推导过程. 由最长上升子序列: 它的状态是由倒数第二个数字来分类,也就是说我们必须固定倒数第一个数字 由公共子序列: 有a[i]b[j]的有无来分类,f[i][j]代表1~i和
阅读全文
摘要:原题链接 考察:线性dp 思路: 第一问是套模板. 第二问的思路是要想到增加序列个数的条件.由贪心法,我们求不上升子序列的组数.对于一个数x,假设已有两组a,b.如果a,b内没有比x更大的数.说明我们需要重新开辟一组.如果x较小,因为不允许插入,所以我们只能在末尾加入元素,我们要保证序列个数最少,就
阅读全文
摘要:原题链接 考察:线性dp 题目本质:求最长上升子序列+下降子序列 易错: 这种题一般都要求下降子序列 j>=i,避免 100 100 100这种数据 也可以用朴素法求,但是要预处理长度数组. 1 #include <iostream> 2 #include <cstring> 3 #include
阅读全文
摘要:原题链接 考察: 线性dp 错误思路: 先走一遍,将走过的地方mp标为0 这个算法本蒟蒻想不出来怎么实现.... 正确思路: 可以将两次走当作两次一起走.设第一次为A,第二次为B.只要步数相同,A和B的横纵坐标和就会相同.本来是需要4维数组,所以可以优化到三维. f[k][i][j]表示的就是到mp
阅读全文
摘要:原题链接 考察:多重背包dp 坑爹题目,敲半天代码发现题目意思都弄错了 这道题的ai 不是i木块的高度和不准超过ai 而是i木块在整个电梯的高度不允许超过ai 我还奇怪为什么题解都没累加答案.... 这道题本蒟蒻不会用二进制优化..如果用了不知道怎么处理它属于哪个物品. 思路: 显而易见需要将木块按
阅读全文
摘要:原题链接 考察:多重背包dp 实际上是考察多重部分和的问题. 在本题如果直接用二进制优化时间复杂度是108 会TLE.因此必须优化 多重背包问题中f[j] = 1是因为上一轮f[j] = 1或者本轮f[j-v] = 1.如果f[j]在枚举第i-1种硬币时就已经为1,那么f[j]在第i轮就没必要在赋值
阅读全文
摘要:原题链接 考察:完全背包dp+线性代数 思路: 这道题其实是求给定a数组的极大无关向量组. 这里要能分析出一些性质: 如果(a,n)能被(b,m)所替代,那么a数组能被b数组表示 b数组中gcd>1的一对数,大的没必要存在 b数组是a数组的一部分元素. 假设b数组能表示a数组,且存在一个数x属于b数
阅读全文
摘要:原题链接 考察:完全背包dp 思路: 写这道题需要有前置知识: 已知互质的数a与b,最大的不能由它们表示的数是(a-1)*(b-1)-1. 现在新加入数字c,不能表示的范围应该变小,因为>(a-1)*(b-1)-1的数都能被表示. 现在给出n个正整数,那么最大的不能由它们表示的数<10000. 确定
阅读全文
摘要:原题链接 考察:完全背包dp 或者 打表 思路: 1.如果知道公式的话,三行代码就可以解决,答案是(n-1)*(m-1)-1.前提条件是n与m互质. 2.如果不知道,可以用暴力dfs打表.先固定一个数n,再看m变化时答案如何变化.eg:当n==3,ans在m情况下每次比m-1多2.最后说不定能推出公
阅读全文
摘要:原题链接 考察:完全背包dp 人傻了,本来还想先用二维,结果没写出来,一脸懵逼看了题解.题解全是一维,最后发现是我f[i][j] = min(f[i-1][j],f[i][j-i*i]+1)的第二个i写成了i-1,板子背错了= = 这道题的物品体积是i*i,价值是1.这样才能算出个数来 1 #inc
阅读全文
摘要:原题链接 考察:完全背包dp 思路: n可以看成体积为n,从1~n-1的数选的背包.因为f[i][j]代表从前i个数选,体积恰好为j的方案数. 感觉我代码刷新前后是一模一样的,刷新前是输出错误答案,刷新后又对了 = = 1 #include <iostream> 2 #include <cstdio
阅读全文
摘要:原题链接 考察:01背包 错误思路: 把概率*100当作体积 此思路错在小数点不止两位... 正确思路: 参考上一题把牛的智商当作体积,这题可以把钱当作体积.从大到小遍历,如果当前的概率能逃脱就break出 但是这道题,概率应该用逃脱后的概率,如果用被捕概率应该是:前i家银行被捕概率是第一家银行被捕
阅读全文
摘要:原题链接 考察:01背包 完全不会...是看大佬的题解. 自己空想了几个小时,还是要动笔啊!!! 思路: 这里有两个属性值,一个是智商,一个情商,而且没有体积等限制条件,只有智商和情商的限制条件.但是我们可以将智商和(或者情商和)作为体积值,这个背包的最大体积不是数据的牛的智商和,而是牛的最大智商*
阅读全文
摘要:原题链接 考察:01背包 这道题懵逼半天,看了大佬的代码终于懂了点 思路: 这道题是和购买顺序有关的,我们先拿出最贵的菜,同时余额拿出5元,在剩余的余额尽可能买总和贵的菜.买完最后余额拿出的5元再买最贵的菜,这就是正解了.... 也因为这道题搞明白了点01背包的板子.f[i][j]表示在j余额条件下
阅读全文
摘要:原题链接 考察:01背包 应该是简单题,毕竟连我这种lj都写出来了233 思路: 这道题是求方案数,不是取最值,因此我们是将模板的状态转移方程的max改成+,初始化的时候f[0][0] = 1,因为从前0个数选,和为0视为一种方法.(否则f数组一直是0)233 注意这道题不能取模,因为和需要恰好是m
阅读全文
摘要:原题链接 考察:01背包dp 错误思路: 很容易想到f[i][j]代表最大值,i代表从前i个物品选,j代表此方案数量和的余数. 像之前的01dp模板题一样,先给f[i][j]赋值f[i-1][j],再是当j>=sum[i]%k时再赋最大值. 错误原因已在注释标明 1 for(int i=1;i<=n
阅读全文
摘要:原题链接 考察:容斥原理 这题完全不会....本蒟蒻连求出x~y区间p倍数的和都没想出来....虽然在质数距离那道题有涉及但是不完全想写那个公式..... 这道题也是HDU 1695 的变式,那道题是求[x,y]区间与x互质的个数,本质也是转化为1~y互质数-1~x的互质数. 参考大佬的思路: 将[
阅读全文
摘要:原题链接 考察:容斥原理 错误思路: 枚举预处理每一个数C4n 的组合数,将p数组的每一个数求约数集合,将约数个数>=4的纳入容斥的集合内.再用容斥计数解决. 时间复杂度是10000*100*2出现次数>=4的约数个数 ,前面的时间复杂度已经到了1e6,如果个数>7就已经有超时风险,更不要说总共10
阅读全文
摘要:原题链接 考察:容斥原理 思路: 这道题就是 GCD HDU - 1695 的弱化版.把这道题翻译一下就是在(1,a)区间有多少个与(1,b)区间的数gcd=1 想出这个就可以解决了,如果a b都声明int型,相乘的时候我们不要忘记转化long long 1 #include <iostream>
阅读全文

浙公网安备 33010602011771号