随笔 - 531
文章 - 0
评论 - 3
阅读 -
10215
随笔分类 - dp
acwing 329. 围栏障碍训练场
摘要:坐标纸的 1~n 行,每一整数行有一条线段 [ x,y ] , 从( n,m ) 每次往下掉,碰到线段就向端点跑,然后继续掉 问到达(0,0) 最小的水平移动距离 f[i][0] = min(f[j][0] + abs(L[i] - L[j]), f[j][1] + abs(L[i] - R[j])
阅读全文
acwing 310 启示🦌
摘要:只要某数字的十进制表示中有三个连续的 6 ,古代人也认为这是个魔鬼的数,比如 666,1666,6663,16666,6660666 古代典籍中经常用“第X小的魔鬼的数”来指代这些数, 输入XX ,输出对应的第X个魔鬼数 二分 X ,看1~X 有几个这样的数,以此检验 #include <iostr
阅读全文
AcWing 325. 计算机
摘要:求树上每个点的 最远点的距离 Di 换根dp #include <iostream> #include <vector> #include <algorithm> #include <cstring> using namespace std ; const int N=1e5,M=N; int nx
阅读全文
acwing 322. 消木块
摘要:消除方块,同色可以消除,产生价值 (len)^2 求最后最大的价值 区间dp #include <iostream> #include<queue> #include <cstring> #define IOS std::ios::sync_with_stdio(0) using namespace
阅读全文
acwing 281 硬币
摘要:给定n种硬币,其中第 i种硬币的面值为 Ai,共有p iCi 个。 从中选出若干个硬币,把面值相加,若结果为sS ,则称“面值sS 能被拼成”。 求 1∼M 1~M之间能被拼成的面值有多少个。 #include <iostream> #include <cstring> using namespac
阅读全文
acwing 287积蓄程度
摘要:除了源点之外,树中所有度数为1 的节点都是入海口,可以吸收无限多的水,我们称之为汇点。 也就是说,水系中的水从源点出发,沿着每条河道,最终流向各个汇点。 问最大流量 f[ x] = sum{ min( f[y] ,z) } 换根,考虑 g[x] 流向所有(包括x往上) 时的最大流量 g[y]=f[y
阅读全文
CF1637D Yet Another Minimization Problem
摘要:定义某数组 xx 的权值为 sum{ sum{ a[i]+b[i] } } i<j<n 现在,给定两个长度为 nn 的数组 a,ba,b。你可以执行若干次操作,每次操作选择一个下标 ii,并交换 ai,bi 。 求在进行操作之后两个数组的权值之和最小能够达到多少。 = (a1+....an )^2
阅读全文
CF580D Kefa and Dishes
摘要:有n个菜(0<n<=18)第i个菜的满意度为a[i ](0<=ai<=10^9),有k个规则,如果在吃完第xi个菜之后吃了第yi个菜, 会额外获得ci的满意度。kefa要吃m道任意的菜(0<m<=n),但是他希望自己吃菜的顺序得到的满意度最大 f[j][i] = f[j^(1<<i) ] [k ]+
阅读全文
CF607B zuma
摘要:从序列中每次消去回文串,问最少几次消除完 #include <iostream> #include <cstring> using namespace std ; const int N=503,inf=0x3f3f3f3f; int f[N][N],a[N],n; signed main(){ i
阅读全文
The Great Mixing CF788C
摘要:从序列中找一些数,使平均数>=m,问最少取几个数》 #include <iostream> #include<algorithm> #include <cstring> #define IOS std::ios::sync_with_stdio(0) using namespace std; con
阅读全文
Cut Ribbon CodeForces - 189A
摘要:给3个数字, 求组成n 的方案中 数字个数最多的 ? #include <iostream> #include<queue> #include <cstring> #define IOS std::ios::sync_with_stdio(0) using namespace std; const
阅读全文
CF855B Marvolo Gaunt's Ring
摘要:给了三个数: p,q,r(−1e9<=p,q,r<=1e9)p,q,r(−1e9<=p,q,r<=1e9) 然后给了n个数a1,a2...an(−1e9<=ai<=1e9)a1,a2...an(−1e9<=ai<=1e9) 求找出三个数ai,aj,ak(1<=i<=j<=k<=n)ai,a
阅读全文
CF245H Queries for Number of Palindromes
摘要:对字符串s,多次询问,给你两个数L和R,问在字符串区间l到r的字串中,包含多少回文串。 #include <iostream> #include<queue> #include <cstring> #define IOS std::ios::sync_with_stdio(0) using name
阅读全文
CF1312E Array Shrinking
摘要:给你一个长度为 n(1≤n≤500)n(1≤n≤500) 的数组 aa,每次你可以进行以下两步操作: 找到 i∈[1,n)i∈[1,n),使得 ai=ai+1ai=ai+1; 将 它们 替换为 ai+1ai+1。 每轮操作之后,显然数组的长度会减小 11,问剩余数组长度的最小值。 #inclu
阅读全文
CF 1061C
摘要:给定一个序列 A,求有多少非空序列 B 满足 B 是 A 的子序列 并且 ∀ k ∈ [1,lenb], k∣bk∀ k ∈ [1,lenb], k∣bk, // f[i][j]= f[i-1][j] + (f[i-1][j-1] ,a[i]%j==0 ) 优化: 枚举 a[i] 的因数作为 j
阅读全文
CF 455A
摘要:有 n个数,每一次取一个 x ,将其删除,并将所有值为x+1 与 x−1 的数都删除,ans 加上x ,求最后最大的ans 的值. (1<=a[i]<=1e5) 考虑 f[ i ] 1~i 的数字 最大ans ,f[i]=max{ f[i-1], f[i-2]+cnt[i] *i ) #includ
阅读全文
CF 191A
摘要:大意是:给你nn个字符串,将这些字符串拼接,求一个最长的序列,使这个其中每个串的最后一个字母与第一个字母相同(最后一个串的最后一个字母与第一个串的第一个字母相同),而且后面的串只能接在前面的串的后边。 f[ch][ch] 首尾为ch , 的最大长度 对某个 串s , f[j][y]= max{ f[
阅读全文
POJ 3345 Bribing FIPA
摘要:#include <iostream> #include <map> #include <algorithm> #include <cstring> using namespace std; const int N =203 ,M =N; typedef long long ll; int n,m,
阅读全文
P2016 战略游戏
摘要:#include <bits/stdc++.h> using namespace std ; const int N=1600,M=5*N; int n,in[N],nxt[M],go[M],hd[N],all=1,f[N][2]; void add(int x,int y){ go[++all]=
阅读全文
P4302 字符串折叠
摘要:https://www.luogu.com.cn/problem/P4302 求字符串的最短折叠 AAAAAAAAAABABABCCD 的最短折叠为: 9(A)3(AB)CCD。 #include <iostream> #include <cstring> #include <algorithm>
阅读全文