随笔分类 -  dp

摘要:我 是 个 傻 逼 T1 给你一个长度不超过10的数字串,问你可不可以加若干加号和一个等号使它变成一个等式 sol: 搜 T2 给一个01串,每个地方有一个代价$c_i$,交换两个字符的代价是$c_i + c_j$ 求最后逆序对数 - 交换代价的最大值 $n \leq 1000$ sol: 首先想到 阅读全文
posted @ 2018-10-15 18:59 探险家Mr.H 阅读(205) 评论(0) 推荐(0)
摘要:有一个圆方树,每次给出一个点集,询问虚树上圆点数量-询问点数量 sol:题意读懂就很简单了...可以建虚树dp 也可以考虑每一条链对答案的贡献,最后要注意单独计算虚树根对答案的贡献 #pragma GCC optimize("-funsafe-loop-optimizations") #pragma 阅读全文
posted @ 2018-10-10 19:05 探险家Mr.H 阅读(173) 评论(0) 推荐(0)
摘要:Alice和Bob轮流在n*m的棋盘上放棋子 a[i][j]表示Alice放在这的收益,b[i][j]表示Bob放在这的收益 一个地方没有棋子且它的左边上边都有棋子才能放棋子,边界外视为有一圈棋子 n,m<=10,求两人都用最优方案时,Alice可以赢多少 sol:上次用的轮廓线dp,现在已然不会写 阅读全文
posted @ 2018-10-09 14:13 探险家Mr.H 阅读(154) 评论(0) 推荐(0)
摘要:190滚粗QAQ T1 「LibreOJ NOI Round #1」接竹竿 一天,神犇和 LCR 在玩扑克牌。他们玩的是一种叫做“接竹竿”的游戏。 游戏规则是:一共有 nnn 张牌,每张牌上有一个花色 ccc 和一个点数 vvv,花色不超过 kkk 种。将这些牌依次放入一列牌的末端。若放入之前这列牌 阅读全文
posted @ 2018-09-18 18:58 探险家Mr.H 阅读(363) 评论(0) 推荐(0)
摘要:在知乎上听zzx大佬说AGC练智商...于是试了一下 A.Range Product 给$a$,$b$,求$\prod^{b}_{i=a}i$是正数,负数还是$0$ 。。。不写了 B.Box and Ball 有$n$个盒子,每个里面有一些小球,在$1$号盒子里有一个红球,现在给你若干次移动操作 每 阅读全文
posted @ 2018-09-17 20:15 探险家Mr.H 阅读(382) 评论(0) 推荐(0)
摘要:给定n个长度分别为$a_i$的木棒,问随机选择3个木棒能够拼成三角形的概率。 $a_i$和$n$都在$10^5$以内 对于每一个i,我们统计比i短的边有多少组合能组成长度<=i的 用1减去这个概率就是能拼成的概率 具体就是用sum[i]表示i出现的次数 sum[i]可以转化成如下卷积的样子 $$su 阅读全文
posted @ 2018-05-02 19:42 探险家Mr.H 阅读(243) 评论(0) 推荐(0)
摘要:t1灾难 给一个食物网 如果一个生物吃的所有东西都灭绝了 它也跟着灭绝 求每个生物灭绝时跟着灭绝的生物数量 支配树裸题,我们先拓扑排序,然后建立一棵树满足一个点灭绝时,有且仅有它的子树跟着灭绝 考虑如何建立这棵支配树 我们可以考虑先建立一个假想的根节点$root$,让所有“生产者”都吃$root$ 阅读全文
posted @ 2018-02-22 10:07 探险家Mr.H 阅读(245) 评论(0) 推荐(0)
摘要:闲来无事做了丽洁姐姐的题 t1给一棵树 每个点有点权 每次修改点权 修改后询问每个点到树的带权重心的带权距离是多少 每个点度数不超过20 很显然的一个点分树。。。 我们记一下 每个点的子树中的所有点到该点的带权距离。每个点的子树中的所有点到该点的父亲的带权距离。每个点的子树中的所有点的权值和。 大概 阅读全文
posted @ 2018-02-19 17:06 探险家Mr.H 阅读(205) 评论(0) 推荐(0)
摘要:数据范围:$$2 \leq S \leq 2 * 10^6$$ $$1 \leq n \leq 10^{18}$$ $$ 1 \leq q \leq 10^5$$ 数学+dp 题解写一年系列... 观察一下原题, (1)因为每个$p_i$必须出现,所以我们可以把$n$减去$\sum p_i$来转化为 阅读全文
posted @ 2018-02-05 13:57 探险家Mr.H 阅读(282) 评论(0) 推荐(1)
摘要:高老师让我更我就更了...一道一道看吧 1.ZJU 3201 Tree of Tree 给出一棵N个点的无根树,每个节点都有对应的权值现要求你找出一棵K个节点的子树,使得这个子树上的权值和最大 题解:dp[v][i]表示以v为根下的子树选i个点的最大权值和,做一下背包就可以了 代码源网侵删 (ZOJ 阅读全文
posted @ 2017-12-20 20:08 探险家Mr.H 阅读(261) 评论(1) 推荐(0)
摘要:考场上未曾光顾的一道题... 结果回来20min想出方程1hA掉了 我是真的蒻,Orz机房里其他的各位dalao 图上dp 两遍spfa(我写的dijkstra)判断一个点对答案的贡献 然后随便dp一下 零环在dp的时候单独处理一下,如果访问过一个点又访问回来了且目前超过的长度没变就是零环 然后就轻 阅读全文
posted @ 2017-12-06 17:45 探险家Mr.H 阅读(305) 评论(0) 推荐(1)
摘要:bitset练习题。。。 位运算真的是玄学。。。 一开始真的“只能过样例” 后来发现把左移写成了小于号 鬼知道我在想什么/手动微笑 loj第一题 #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #includ 阅读全文
posted @ 2017-11-25 18:07 探险家Mr.H 阅读(420) 评论(0) 推荐(0)
摘要:这我能怎么办 这我只能%了呀 群论+Burnside定理引理+DP #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 110 using namespace std; typ 阅读全文
posted @ 2017-11-16 16:07 探险家Mr.H 阅读(146) 评论(0) 推荐(0)
摘要:#include #include #include #include #include #include #define ll long long using namespace std; inline int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)){if(ch=='-')f=-f;ch=... 阅读全文
posted @ 2017-11-09 16:24 探险家Mr.H 阅读(238) 评论(0) 推荐(0)
摘要:考虑区间dp dp[i][j][k]表示区间[i,j]可不可以缩成字符k dp[i][j][k]=-1表示没算过 0表示不可以 1表示可以 dp[i][j][k]=1当且仅当 dp[l][j][a]=1 且 dp[j+1][r][b]=1且ab可以转化成k #include<iostream> #i 阅读全文
posted @ 2017-11-01 14:02 探险家Mr.H 阅读(140) 评论(0) 推荐(0)
摘要:给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 n<=1000000 发现当根从某个位置移到它的一个子树时只要O1的时间就可以果断得出ans 所以大概就一个dfs完事 #include<iostream> #include<cstdlib> #include<algori 阅读全文
posted @ 2017-10-23 19:04 探险家Mr.H 阅读(134) 评论(0) 推荐(0)
摘要:给定一个无向有权图,首先一个最小生成树 MST,从 MST 中选取一个度数大于 1 的点 作为根 K,使每颗子树及该子树到根的边权之和方差最小。输出 K 和最小方差的值。 对于60%的数据:3 ≤ N ≤ 2,000,N-1 ≤ M ≤ 50,000 对于100%的数据:3 ≤ N ≤ 40,000 阅读全文
posted @ 2017-10-23 16:40 探险家Mr.H 阅读(508) 评论(0) 推荐(0)
摘要:卡特兰数 打表 滑稽 #include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #include<cmath> #include<cstring> using namespace std; string cat 阅读全文
posted @ 2017-10-20 17:50 探险家Mr.H 阅读(208) 评论(0) 推荐(0)
摘要:背包问题小合集 01背包 完全背包 多重背包混着来 对于01背包:把它想象成最大物品数为1的多重背包 对于完全背包:把它想象成最大物品数为m/w[i]的多重背包 对于多重背包:把它想象成。。。等等这本来就是个多重背包 数据比较水 但是我也写了个倍增优化 #include<iostream> #inc 阅读全文
posted @ 2017-10-20 17:47 探险家Mr.H 阅读(253) 评论(0) 推荐(0)
摘要:多重背包问题 一开始我们的转移方程是 然后我们发现T了 有一个简单的优化 最内层k是从0-c[i]相当于一条链 对于一条链我们很容易想到倍增 然后我们优化: 对于第i个物品,我们把它拆成若干份:取1个 取2个 取4个 取8个 ... 取2^(一大堆)个 取剩下的那么多个 这样可以把最内层循环变成lo 阅读全文
posted @ 2017-10-20 17:44 探险家Mr.H 阅读(282) 评论(0) 推荐(0)