随笔 - 531
文章 - 0
评论 - 3
阅读 -
10215
随笔分类 - dp
CF1187E
摘要:换根dp #include<iostream> #include<algorithm> #include<cstring> #include<queue> #define IOS std::ios::sync_with_stdio(0) using namespace std; #define in
阅读全文
Bottles CF730J
摘要:有 n 瓶水,第 ii 瓶水的水量为 ai,容量为 bi。 将 1 单位水从一个瓶子转移到另一个瓶子所消耗时间为 1秒,且可以进行无限次转移。 求储存所有水所需最小瓶子数 k 以及该情况下所用最小时间 t。 第一问直接贪心 第二问 dp , 问题重要的的一个转化: 求不变的水瓶的最大值即可 f[i
阅读全文
Cashback CF940E
摘要:给你一个长度为n的数列a和整数c 你需要把它任意分段 每一段假设长度为k,就去掉前[ k/c] ( 向下取整)小的数 最小化剩下的数的和 #include<iostream> #include<algorithm> #include<cstring> #include<queue> #define
阅读全文
P5337 [TJOI2019]甲苯先生的字符串
摘要:同CF222E #include<iostream> #include<algorithm> #include<cstring> #include<vector> #define IOS std::ios::sync_with_stdio(0) using namespace std; const
阅读全文
Gourmet choice 1131D
摘要:有 n 组序列,第 i 组有 ki个元素,每次可以随机选一组拿掉其目前最左边或最右边的元素, 问 取了m 次后,的最大价值和。 #include <iostream> #include <cstring> #include <vector> using namespace std ; const i
阅读全文
Decoding Genome CF222E
摘要:需要构造一个符合如下条件的字符串: 长度为 n,并且只包含字符 1∼m (n≤1e15,m≤52) 满足 K 个要求,第 i 个要求为 xi 后面不能是 yi 现在问你,有多少种字符串符合条件。 F[ i ][ j] += F[i -1] [lk ]* a[k][j] 用矩阵快速幂优化 Fn =F[
阅读全文
Wizards and Huge Prize CF167B
摘要:最开始你有 K 的容积,有 n 轮比赛, 每轮比赛胜率为 pi,比赛分为两种(具体种类有输入给出,若 ai≥1 则为第一种,若 ai=−1ai=−1 则为第二种), 第一种的奖品是增加 A[i] 的容积,第二种奖品是获得一个物品,体积为 1, n 轮比赛结束后所有物品都能被装下的方案才是合法方案
阅读全文
Pencils and Boxes CF985E
摘要:给出nn个整数a1,a2,...,an,现在需要对其进行分组,使其满足以下条件: 每个数都必须恰好分入一组中 每一组中必须至少包含K个数 在每一组中,整数的权值之差的绝对值<=D。 请判断是否存在满足条件的分组方案,若有请输出"YES",否则输出"NO"。 直接的贪心是错误的,但要魔改一下,双指针+
阅读全文
Towers CF229D
摘要:一个序列A, 每次可以 相邻的数相加为一个数字,求最少次数使得序列非降 f[i ]= min{ f [ j ] + i-j-1 } ,s[i]-s[j] >= s[j] -s[mn[j-1] ] 维护下前缀最小值mn[ i] #include <iostream> #include <queue>
阅读全文
Two out of Three CF82D
摘要:给定一个序列,每次从前三个中选两个值并取他们的最大值累加,不足 3 个就取剩下的 1 个或 2 个的最大值累加, 求和的最小值以及取法。 每一次会取两个数,也就是会剩下一个数,所以我们可以把剩下的那个数来设状态 F[ i] [j ] 前i个数,剩余的数为j #include <iostream> #
阅读全文
Pawn CF41D
摘要:给定一个棋盘,你从最下面一行任选一个位置开始移动,每次只能向右上方或者左上方移动,求满足经过路径的权值和是 k+1k+1 (给定常数)的倍数的情况下最大权值和是多少。 #include <iostream> #include <cmath> #include <cstring> using name
阅读全文
Yaroslav and Two Strings CF296B
摘要:如果两个只包含数字且长度为 nn 的字符串 ss 和 ww 存在两个数字 1≤i,j≤n 使得 si<wi,sj>wj 则称 ss 和 ww 是不可比的。现在给定两个包含数字和问号且长度为 nn 的字符串, 问有多少种方案使得将所有问号替换成0到9的数字后两个字符串是不可比的 明显的容斥原理 但注意
阅读全文
P2495 [SDOI2011] 消耗战
摘要:f[x]=SUM{ min(f[y], z) } ( y是不重要的点) 建立虚树,然后dp #include <bits/stdc++.h> using namespace std ; const int N=3e6,M=N,inf=1e9; #define int long long int mn
阅读全文
P1455 搭配购买
摘要:商店里有n朵云,云朵被编号为i1,2,…,n ,并且每朵云都有一个价值。但一些云朵要搭配来买, 买一朵云则与这朵云有搭配的云都要买。 Joe的钱有限,希望买的价值最大 #include <iostream> #include <queue> #include <algorithm> using na
阅读全文
P5664 [CSP-S2019] Emiya 家今天的饭
摘要:给出一个矩阵,要求每行只能选一个节点,每列选的节点不能超过所有选的节点的一半,给出每个节点的选择方案数(a[i][j] ) 不能完全不选,求总方案数 直接容斥,ALL - 存在一个列的所选个数超过一半 但是发现这种列只能存在一个(脑补 枚举这个列, 对这个列做dp : F [ i] [j ][ k
阅读全文
Apple Catching POJ - 2385
摘要:有个人在2柯树之间来回,在1~T 的时刻i 时,其中一颗棵树会掉一个果子,规定只能掉头m 次,问最多能获得多少果子 f[ i ][ j] #include <iostream> #include <algorithm> #include <cstring> using namespace std ;
阅读全文
Polygon POJ - 1179
摘要:除了维护一个区间最大值,还要一个最小值,( 有负数) #include <iostream> #include <algorithm> #include <cstring> using namespace std ; const int N=160; #define inf 1e9 int n,a[
阅读全文
Communication System POJ - 1018
摘要:目前有一个公司需要购进宽带设备,每种设备有多款机器供选择,每种设备都需购进一台, 现给出每台设备的带宽p与价格q,要求选择设备的最小带宽min(p)/add(q)(其中min(p)表示所有购进设备中最小的带宽,add(q)表示所有购进设备的价格之和)为最大,并求出该值。 f[i][j] j表示最小带
阅读全文
P3195 [HNOI2008]玩具装箱
摘要:[HNOI2008]玩具装箱 f[i] =max( f[j]+ (s[i]-s[j] + i-j+1 )^2 设 a[i] =fi + si ,b[i] =s[i]+i+1 f[i] =max( f[j] + (a[i]-b[j])^2 =max{ f[j]+a[j]^2+b[j]^2 -2*a[j
阅读全文
P4852 yyf hates choukapai
摘要:yyf要抽卡 第 i 张卡的欧气值为 a[i],而在连抽时,欧气值等于第一张卡的欧气值。 每次抽卡的欧气之和”指每次单抽的欧气之和加上每次连抽的欧气之和. yyf想 C 连抽(连续抽 C 张卡) n 次,单抽 m 次, 但不想连续单抽超过 d次(可以连续单抽恰好 d 次)。 共有 c∗n+m张卡,抽
阅读全文