文章分类 - OI题目
摘要:/* 第i只鸟在第j棵树 可以飞到j+1~j+ki棵 若后一棵树更高 花费1 问第i只鸟 最小花费 f[i]飞到第i棵树 最小花费 f[i]=min(a[j]>a[i]? f[j]:f[j]+1) i-ki<=j<=i-1 单调队列维护f[i] 若a[i]大且f[i]小 于 a[j] j 出列 */
阅读全文
posted @ 2023-12-14 04:49
JMXZ
摘要:/* f[0]=0,f[n]=0,所有极小值==0,且都是斜率+-1的直线 若干点固定 问1.有多少种方法2.最大值<= 因为 刻画斜率 f[i][0/1] 当前处理i点 之前是up/down 即i-1 down/up len=x2-x1-y1-y2; 1.x1-x2==y1-y2 add(f[i]
阅读全文
posted @ 2023-12-12 04:17
JMXZ
摘要:/* n<=24张卡牌ai 随意选择顺序 若过程中值==厄运数字 失败 否则成功 问成功的方案数 dfs->RE 考虑状压dp f[i]:i状态下成功的方案数 f[i]=sum(f[i^(1<<j-1)]) (i&(1<<j-1)==1) f[0]=1(f[1]=f[0]+0) dis[i]=dis
阅读全文
posted @ 2023-12-10 12:49
JMXZ
摘要:/* n个字符串 问恰好匹配(si==ti||si=='?')k个串 的字符串T的方案数 二项式反演 共n个元素 fi至少选出i个元素的方案数 gi恰好i个 fi=C(i,i)gi+C(i+1,i)gi+1...+C(n,i)gn gi=C(i,i)(-1)^(n-i)*fi+C(i+1,i)(-1
阅读全文
posted @ 2023-12-10 04:01
JMXZ
摘要:/* 一串人 编号Ti 容忍后Bi(<=7)个人在他前面吃饭 第一人花费0 (Ti+1 |Ti)-(Ti+1 &Ti) 即Ti^Ti+1 问最小花费的时间 因为 bi<=7 所以对bi状压dp 且 代价与前一个位置直接相关 设f[i][j][k+8]:前i-1个已经吃过 i及后7个状态j 共8 上一
阅读全文
posted @ 2023-12-07 05:52
JMXZ
摘要:/* k<=1e18个字母 构造L<=1e18 长度的字符串 以及s位置的字符是w 问 没有长度>1的回文字串 的方案数 1.若没有限制 则k*(k-1)*(k-2)^len-2 2.有限制 (k-1)*(k-2)^len-2 eg: k=4 l=5 X*3*2*2*2 3*X*2*2*2 ....
阅读全文
posted @ 2023-11-21 06:17
JMXZ
摘要:/* 吗 m<=20 状态dp 初始 n个人排成一排 m<=10集合 问如何让最少的人出列 使队伍中 每个集合的人都连续 1.集合不用按编号 只要连续就行 2.只要统计最后不符合的人数就行 --暴力枚举集合排列顺序 -20 3.只要确定状态 区间[i,i+sum[j]-1] 4.考虑局部最优情况 f
阅读全文
posted @ 2023-11-21 05:44
JMXZ
摘要:/*k<=16->状态dp 有n个物品 k枚硬币 可以随时停下来 按顺序购买 之前累计的未付款 货物 但不能找零 问最多可以剩下多少钱 / -1 1.f[i][j]:i物品从j开始 可以连续买几个->到编号几 2.dp[i]:在硬币选择上 i 状态 最多到第几个 :i 0~(1<<k)-1 :j 1
阅读全文
posted @ 2023-11-21 03:34
JMXZ
摘要:/*状态dp n*n的棋盘 放k个国王 攻击8个临近格子 问有多少方法 f[i][p][k]前i行 NO i 状态 sit[p] 放了p个 f[i][p][k]=sum(f[i-1][L][k-sum(k)]) */ /* */ #include<cstdio> #include<cstring>
阅读全文
posted @ 2023-11-16 04:55
JMXZ
摘要:/* n*m的 0、1图 只有 1 可以种草 每个草 不相邻(没有哪两块草地有公共边) 问有多少种方法分配 状态dp f[i][p]:第i行 状态位p 的方案数 f[i][p]=f[i][p]+f[i-1][k] */ /* */ #include<cstdio> #include<iostream
阅读全文
posted @ 2023-11-15 05:11
JMXZ
摘要:/*状态dp n*m的图中 每次选一点 覆盖 。 . 。。+ 。 。 。 。 +不能被。覆盖 问最多能放置几个 m<=10 选/不选 ->状压 dp[i][P][k][L]=max(dp[i][P][k][L],dp[i-1][k][L][F]+sum(P)) 第一维不能滚掉 因为 不是紧接着更新的
阅读全文
posted @ 2023-11-15 04:05
JMXZ
摘要:/* XOY 一排点(xi,yi) 下降vi/s 从(x0,y0)出发 lft/rht pre:按坐标xi排序 假设已经走了i-j 在决定走新点 时 可以去 i-1/j+1 现在的pos==i/j 正着 很难算贡献 收益max->损失min ->dp[i][j]:从(x0,y0) 走了i-j 位置i
阅读全文
posted @ 2023-11-13 05:04
JMXZ
摘要:/* 一棵树 每个点放置监听器 只能染色 距离==1的点 但不能染色自己 问 有多少种方式可以 监听整棵树 f[u][i][0/1][0/1] root=u 的子树 放置i个装置 --u 放1/不放0 u 被监视1/不监视0 :::f[j][u][i][0/1][0/1] 前j棵子树 :::除了ro
阅读全文
posted @ 2023-11-13 04:00
JMXZ
摘要:/* 每一个人只有一个厌恶的point 问选取若干个point 其权值max 可以有环 厌恶是一种偏序关系 u hate v -> v->u 即可 即可能是 基环树 或 树 基环树枚举 root 和fa[root] 不选 树 不影响 */ /* 3 10 2 20 3 30 1 30 */ #inc
阅读全文
posted @ 2023-11-12 12:31
JMXZ
摘要:/* 一棵树 用0-k的val去染色 将k个染成black,n-k个染成white 定义 收益为 任意两个 同色的point 之间的dis 之和 求收益最大是多少 直接任意枚举两个点的颜色 求 dis=abs(dep[u]-dep[v]) ->对于每一条边来说 tot=w[u->v]*( num_k
阅读全文
posted @ 2023-11-12 11:03
JMXZ
摘要:/* 直接贪心 用1/2 但可以hcak 考虑最优解的情况下 令maxval为无根树的根 可见 maxval 与层数有关 当N总数一定时 二叉树最深 logN+1一定>=maxval */ /* 10 7 5 1 2 1 7 8 9 4 1 9 7 5 6 10 2 9 3 14 */ #inclu
阅读全文
posted @ 2023-11-12 09:31
JMXZ
摘要:/* 贪心: 1 N<=len最长链-1 ->N 2 N>len -> len+(N-(len-1))/2 */ /* 5 2 1 0 2 1 3 2 4 3 3 9 5 0 1 0 2 2 6 4 2 8 1 1 3 3 7 3 5 5 */ #include<cstdio> #include<i
阅读全文
posted @ 2023-11-12 09:06
JMXZ
摘要:/* 明显的区间dp f[x][y]:x~y之间合并的最大值 f[x][k]==f[k+1][y]? f[x][y]=f[x][k](已经更新)+1(or ==0 就会多算) */ /* 4 1 1 1 2 3 */ #include<cstdio> #include<iostream> #incl
阅读全文
posted @ 2023-11-12 08:57
JMXZ
摘要:/* 一棵树删去若干条边 各点权值max f[u]:root==u 的树 删去若干条边 max f[u]=a[u]+f[v]>=0? f[v]:0 */ /* 7 -1 -1 -1 1 1 1 0 1 4 2 5 3 6 4 7 5 7 6 7 2 */ #include<cstdio> #incl
阅读全文
posted @ 2023-11-09 06:05
JMXZ
摘要:/* tree root->若干个转播站->若干个用户终端 每条边wi 每个终端vali*1 成本==sum(vali*1)-sum wi 问成本>=0 人数最大值 1.分组DP 每一个问题都可以拆分成若干子问题 dp[u][i]表示i节点,选j个用户,能得到的钱的最大值 root / / \ /
阅读全文
posted @ 2023-11-09 05:22
JMXZ

浙公网安备 33010602011771号