01 2017 档案
摘要:题意给定一个n元集,元素为ai,求其有多少个子集,使得其中的元素ai1,.....aik满足 ai1&ai2&⋯&aik=0 (1⩽n,a⩽106)分析要是n和a的范围小一些自然可以直接用01背包做,然而这里a与n都达到了1e6的范围,则要另寻他法。 先求有多少种情况使得与出来的结...
阅读全文
摘要:题意将1到n的数分成不互质的数对,问最多能分出多少对?分析贪心构造,先打出小于等于n的所有素因子,从最大的素因子开始(因为越大的因子,在数列中的倍数越少),两两匹配其倍数。若刚好是奇数个,则将其2倍留下,因为若能匹配出至少一对,其二倍必在数列中,同时,其二倍除了其本身以外必然只有2...
阅读全文
摘要:题意有n个物品,每个物品的重量是ai,求以下式子: ∑ni=i∑nj=1∑nk=1∑nl=1∑sm=1f(i,j,k,l,m)(i≠j≠k≠l) 其中f(i,jk,l,m)表示在所有物品中必选i和j,且必不选k和l,重量总和为m的选法总数。分析设状态dp[i][j][x][y]为选...
阅读全文
摘要:题意给一串数列,求区间GCD和整个数列中与该区间GCD相等的区间数分析首先区间GCD易求,用能求RMQ的方法都可以,比如ST表、线段树。关键是如何求第二个问题,这里有两种做法: 方法一 利用GCD的性质,若固定区间左端点,增大右端点,区间GCD必然非递增。因此我们可以遍历区间左端点...
阅读全文
摘要:题意给出接下来T天每天卖出、买入股票的价格,每天买入、卖出的上限,持有的股票的总上限,并且两次股票操作之间有时间间隔,求T天之后最多能赚多少钱。分析很容易可以写出状态转移方程: dp[i][j]↔第i天持有j的股票能获得的最大利益 dp[i][j]=max(dp[i−1][j],m...
阅读全文
摘要:题意给定一串数列,要求把它划分成一些小段,每个小段的和不超过M,找到一种分段方法使得每一段的最大值的和最小,求这个最小值分析易得转移方程 dp[i]=min(dp[k]+max(num[k+1],⋯,num[i])) 其中∑ij=k+1num[j]#include #include...
阅读全文

浙公网安备 33010602011771号