2022年10月20日
摘要: 一个环上有n个点,价值 a[i],现在要选择m个点, 其中连续段的第一个元素的价值不算,求总和最大? 先考虑一条链 f[i][j][0/1] ,j 是目前选择了的点的个数, 0/1 当前点i 是否选择 状态转移: f[i][j][0]=max(f[i-1][j][0],f[i-1][j][1]) f 阅读全文
posted @ 2022-10-20 16:56 towboat 阅读(31) 评论(0) 推荐(0)
  2022年10月19日
摘要: 水题 这里记录个步骤 对某节点x,其子节点为y 求 a[y1]*(a[y2]+a[y3]+ ... +a[yn]) + a[y2]*(a[y1]+a[y3]+...a[yn]) + .... + a[yn]*(a[y1]+a[y2]+...+a[y(n-1)] ) 观察一下,很容易推出 answer 阅读全文
posted @ 2022-10-19 21:58 towboat 阅读(38) 评论(0) 推荐(0)
摘要: 普通的dp写法 f[i] = max{ f[j] +1 } j<i &&a[i]<=a[j] 复杂度 O(n^2) 单调队列写法 O(nlogn) int n,a[N],f[N],st[N],len; int cmp(int x,int y){ return x>y; } void solve(){ 阅读全文
posted @ 2022-10-19 19:34 towboat 阅读(50) 评论(0) 推荐(0)
摘要: 四方定理是众所周知的:任意一个正整数n,可以分解为不超过四个整数的平方和 给定的正整数n,统计它能分解的方案总数。注意:25=4^2+3^2 与 3^2+4^2 相同 背包,把每个平方数作为一个物品 直接用背包会重复累加,此时要利用这个定理,f[4][j] #include <iostream> # 阅读全文
posted @ 2022-10-19 16:30 towboat 阅读(36) 评论(0) 推荐(0)
摘要: 一些不同类型的物品,每种物品有可取个数的上限( a[i] ) 从中挑m个,求方案个数 这是背包问题? 考虑前 i 种物品,f[i][j] 表示方案个数, j 表示第i个物品取多少 f[i][j]+= f[i-1][j-k] f[0][0]=1 #include <iostream> using na 阅读全文
posted @ 2022-10-19 15:06 towboat 阅读(23) 评论(0) 推荐(0)
摘要: n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。 有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次以后,又 阅读全文
posted @ 2022-10-19 13:32 towboat 阅读(11) 评论(0) 推荐(0)
摘要: 1~M 挑数字(可重复), 能组成多少长度为n的合法序列? ( n,k =2000 合法序列: a[i] %a[i-1]==0 f[i][j] += f[i-1][k] , j%k==0 #include <iostream> using namespace std; const int N=200 阅读全文
posted @ 2022-10-19 12:26 towboat 阅读(27) 评论(0) 推荐(0)
  2022年10月18日
摘要: 数字串分割为m个部分,求乘积最大? 例如有一个数字串:312, 当 N=3,K=1 时会有以下两种分法: 3 * 12 31*2 这时,符合题目要求的结果是: 31 *2 转移方程 在注释里,不解释 以下代码只有80分,AC需要换成高精度(笔者大概是没学过的 #include <iostream> 阅读全文
posted @ 2022-10-18 21:18 towboat 阅读(30) 评论(0) 推荐(0)
摘要: 有一个箱子容量为 VV,同时有 nn 个物品,每个物品有一个体积。 现在从 nn 个物品中,任取若干个装入箱内(也可以不取),使箱子的剩余空间最小。输出这个最小值。 #include <iostream> #include <vector> #include <cstring> using name 阅读全文
posted @ 2022-10-18 20:33 towboat 阅读(17) 评论(0) 推荐(0)
摘要: 这里的图染色问题 : 用最少的颜色给一个无向图的点染色,且相邻节点颜色不同 f[s] = min{ f[s-s2]+1 } ,s2为s的子集 值得注意集合S 的子集如何枚举? for(j=S; j ;j=(j-1)&S) #include <iostream> #include <vector> u 阅读全文
posted @ 2022-10-18 18:49 towboat 阅读(25) 评论(0) 推荐(0)