VIrtuoso

两把多兰剑加个布甲鞋

导航

2019年5月4日 #

Codeforces Round #551 (Div. 2) D 树形dp

摘要: 题意 一颗有n个点的数,每个点a[i]为0代表取子节点的最小,1代表取最大,然后假设树上存在k个叶子,问你如何将1~k分配给叶子节点使得根节点最大 题解 实际上最后只有一个值能到达根,我们需要计算没用的叶子节点数量 min:相当于将子节点叶子数量相加 max:相当于将子节点叶子数量取最小 ans=叶 阅读全文

posted @ 2019-05-04 22:08 VIrtuoso 阅读(108) 评论(0) 推荐(0) 编辑

Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) D mt19937

摘要: 用法 代码 c++ include define ll long long define P 23 using namespace std; ll n,l,r,k; char s[5]; ll mu=1; mt19937_64 g(time(0)); ll gen(ll l,ll r){ ll le 阅读全文

posted @ 2019-05-04 21:18 VIrtuoso 阅读(156) 评论(0) 推荐(0) 编辑

Educational Codeforces Round 61 (Rated for Div. 2) E 多重背包优化

摘要: 题意 有8种物品,重量是1~8,每种数量是$cnt[i]$(1e16),问容量为W(1e18)的背包最多能装多少重量 题解1 多重背包二进制拆分物品转换成01背包,用map来剪枝掉无用的状态 c++ include define ll long long using namespace std; c 阅读全文

posted @ 2019-05-04 20:17 VIrtuoso 阅读(135) 评论(0) 推荐(0) 编辑

Codeforces Round #545 (Div. 2) E 强连通块 + dag上求最大路径 + 将状态看成点建图

摘要: 题意 有n个城市(1e5),有m条单向边(1e5),每一周有d天(50),对于每个城市假如在某一天为1表示这天城市博物馆开放,反之闭馆,问你最多能去多少个博物馆 题解 第一个分出来的强连通块是dag的起点 假设博物馆每天都开放,那么求出图的强连通块后,dag上dp就行 现在加上有d天的话,只需要加多 阅读全文

posted @ 2019-05-04 19:35 VIrtuoso 阅读(128) 评论(0) 推荐(0) 编辑

Codeforces Round #545 (Div. 2) 交互 + 推公式

摘要: 题意 有一条长为t的链,一个长为c的环,定义终点为链和环相连环上的第一个点,现在有10个人在起点,你每次可以选择一部分人向前移动一步,然后会返回十个人的分组情况(在同一个点的为一组),一旦进入了环里就只会在环里转圈,让你在最多$3 (t+c)$次操作下,让所有人走到终点 题解 最多只能$3 (t+c 阅读全文

posted @ 2019-05-04 18:43 VIrtuoso 阅读(161) 评论(0) 推荐(0) 编辑

Codeforces Global Round 2 D 差分 + 前缀和 + 二分

摘要: 题意 有n个数组,每个数组大小为$10^{18}+1$且为等差数列,给出n个数组的$s[i]$,q次询问,每次询问一个区间[l,r],问所有数组的[l,r]区间一共有多少不同的数 题解 结果只与选择的区间长度len有关,还有和两个数组s[i]的差cha有关 若lencha,则前面一个数组可以取满le 阅读全文

posted @ 2019-05-04 16:46 VIrtuoso 阅读(161) 评论(0) 推荐(0) 编辑

Educational Codeforces Round 59 (Rated for Div. 2) E 区间dp + 状态定义 + dp预处理(分步dp)

摘要: 题意 给出01字符串s(n define ll long long define MAXN 105 using namespace std; ll f[MAXN],dp[MAXN][MAXN][MAXN],a[MAXN]; vectorb; string s; int n,cnt=0; ll dfs 阅读全文

posted @ 2019-05-04 16:02 VIrtuoso 阅读(181) 评论(0) 推荐(0) 编辑

Educational Codeforces Round 57 (Rated for Div. 2) D dp

摘要: 题意 给一个串s,删掉一个字符的代价为a[i],问使得s的子串不含"hard"的最小代价 题解 定义$dp[i][j]$为到第i位下一个将要匹配j的最小代价 $若s[i]==t[j]$ 删掉:$min(dp[i+1][j],dp[i][j]+a[i])$ 不删,若j define ll long l 阅读全文

posted @ 2019-05-04 15:20 VIrtuoso 阅读(100) 评论(0) 推荐(0) 编辑

Educational Codeforces Round 57 (Rated for Div. 2) C 正多边形 + 枚举

摘要: 题意 问是否存在一正多边形内三点构成的角度数为ang,若存在输出最小边数 题解 三点构成的角是个圆周角,假设n为多边形边数,则能构成的角范围是$\frac{180}{n} \leq ang \leq \frac{n 2}{n} 180$,每次变化$\frac{180}{n}$ 首先明确正多边形一定存 阅读全文

posted @ 2019-05-04 14:52 VIrtuoso 阅读(125) 评论(0) 推荐(0) 编辑

Codeforces Round #549 (Div. 2) F 数形结合 + 凸包(新坑)

摘要: 题意 有n条形如$y=x^2+bx+c$的抛物线,问有多少条抛物线上方没有其他抛物线的交点 题解 $y=x^2+bx+c= y+x^2=bx+c$,转换为点$(x,y+x^2)$在bx+c的直线上 两个点确定一条抛物线,同时也确定了一条直线 需要选择最上面那些点相邻确定的抛物线,所以维护一个上凸包即 阅读全文

posted @ 2019-05-04 10:49 VIrtuoso 阅读(99) 评论(0) 推荐(0) 编辑

Hello 2019 F 莫比乌斯反演 + bitset

摘要: 题意 有n个多重集,q次询问,4种询问 1. 将第x个多重集置为v 2. 将第y和z多重集进行并操作,并赋值给x 3. 将第y和z多重集进行乘操作,并赋值给x,乘操作:将y的每一个元素和z的每个元素的gcd放进多重集中 4. 询问第x个多重集中有多少个v,并将个数%2输出 题解 因为个数%2,所以可 阅读全文

posted @ 2019-05-04 10:17 VIrtuoso 阅读(80) 评论(0) 推荐(0) 编辑