其他dp
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
[AGC022F]Checkers
Description令x=10100x=10^{100}x=10100,数轴上有n个点,第i个点的坐标为xix^ixi进行n-1次操作,第i次操作选择两个点A和B,将A变为A关于B的对称点,然后删去B最后会剩下1一个数,问这个数有多少种可能的取值n<=50Solution由于x很大,我们可以只考虑每个数的贡献容易知道每个数的贡献形式为±2^k如果我们选择A和B,就从B向A连...原创 2019-11-06 15:44:42 · 855 阅读 · 1 评论 -
[bzoj3522][bzoj4543][POI2014]HOTEL
Description给出一棵树,求这棵树中有多少种方法选择三个点使得这三个点之间的距离两两相等。 n<=1e5Solution首先我们来考虑一种奇怪的可优化的N^2做法。 设Fi,j表示i的子树中到i的距离为j的点的个数 Gi,j表示i的子树中有多少个点对满足到他们的lca的距离为d,同时lca到i的距离为d-j 也就是还能再伸出j的长度的点对数。 首先我们考虑选择一个儿子继承可以发现转原创 2017-09-11 22:22:38 · 542 阅读 · 0 评论 -
【NOIP2017提高A组模拟9.7】简单无向图
Description给出一张n个点的简单图,和每个点的度数di,求这样的图的个数。 n<=2000,di=1,2Solution既然度数只有1,2两种,那么显然这种图中只有环和链。 但是这个环有要求大小>=3,因为简单图不能有重边。 很好想到把环和链分开考虑,链的个数是确定的。 那么我们设si,j表示i个2,放到j个环中的方案数, 如果没有考虑环的大小限制s显然是斯特林数, 但是有限制原创 2017-09-08 21:54:38 · 633 阅读 · 0 评论 -
[ZJOI2016]线段树
Description给出一个长度为n的序列,对这个序列进行m次操作,每次操作随机一个区间[l,r],把这个区间里面的数全部变成这些数的最大值。 求最后每个位置的数的期望,答案乘上(n(n+1)/2)^m后对1e9+7取模 n,m<=400,a[i]<=1e9,数据随机Solutionzj的题都好毒啊QwQ 这是一个基于数据随机的算法 在随机数据下我们可以把每个数看做不同的(虽然相同也可以做原创 2017-09-04 21:39:46 · 764 阅读 · 0 评论 -
【WC模拟】Equation
Description n,m<=10^5Solution考虑图论转化,既然每个变量最多只会出现两次,那么我们把出现两次的变量所在的or组看做点,每个出现两次的变量看做边,边权视这两个变量是否相同而定。(0或1) 根据题目条件我们每个点的度数最多为2,也就是只会出现环和链。 设Fi,j,k表示当前做到第i个点,异或值为j,上一位填的是k的方案数,转移显然。 最后分类讨论一下就行了,注意特判自原创 2017-01-19 22:56:39 · 415 阅读 · 0 评论 -
【WC模拟】优美的树
Description众所周知,树是n 个节点n-1 条边的结构,而所谓的优美的树需要满足如下条件: 1. 这是一棵有根二叉树; 2. 非叶节点需有两个儿子; 3. 不可以变换为k-左偏树。 所谓的k-左偏树是指一棵有k 个叶子的树,每个非叶节点的右儿子均为叶子且均有左儿子。 所谓的变换指的是经过若干次如下两种变换: 1. 删去一个节点的两个儿子; 2. 用一个节点的某个儿子替换该节点原创 2017-01-18 20:49:49 · 478 阅读 · 0 评论 -
【GDKOI2017模拟1.12】与运算
Description给出一个序列,Fi为前i项进行and运算之后的值。求这个序列的一个排列,使得∑Fi\sum Fi最大。 输出这个最大值。 n<=10^6Solution首先考虑F数组,显然是单调不升的。 那么我们考虑Dp,Dp i表示F数组目前最后一位为i的最大和。注意可以不放满。 那么我们枚举一个数转移,复杂度是O(N^2)的。 转移的话我们可以预处理cnt[i]表示有多少个数a原创 2017-01-16 21:59:54 · 510 阅读 · 0 评论 -
[51nod1326]遥远的旅途
Description一张有n个点,m条变的无向图,每条边有边权。 在0时刻有一个人在点1,每一次他走过一条边,消耗的时间为这条边的边权,而不能停留在原地。 现在他想知道是否存在一种方案使得他在T时刻刚好到达点n。 多组数据,case<=3,2<=N<=50,1<=M<=50,1<=T<=10^18Solution上上周做GDOI组时WorldWide_D说这道题是T2原题,于是就被强行安利来原创 2016-12-19 19:36:52 · 870 阅读 · 0 评论 -
[51nod1327]棋盘游戏
Description给出一个n*m的棋盘,其中每一列可以放最多一个棋子。 每一行有两个限制,left和right,表示这一行的前left个各自和后right个格子都有且仅有一个棋子。 保证left和right没有交集。 求放置棋子的方案数对1e9+7取模之后的结果。 n<=50,m<=200Solution考虑如果只有左边的限制,那么我们可以设Fi,j表示前i列,有j列没有放的方案数。原创 2016-12-31 16:44:22 · 469 阅读 · 0 评论 -
【3.16XJ模拟题】圆
Description二维坐标平面内有n个圆,第i个圆圆心在(Xi,Yi),半径为Ri,权值Vi。任何两个圆都不会相交(也不会相切),但是圆与圆之间可能存在包含关系。当我们在一个圆里面的时候,我们必须经过它的边界一次,才能走出这个圆。 对于不同的两个圆A、B,如果可以从A到B且经过不超过K次边界,则称A、B是连通的。现在的问题是:对于所有的连通的一对圆(A,B),权值差的绝对值最大有多少。原创 2016-12-19 12:46:53 · 842 阅读 · 0 评论 -
【GDOI2018模拟9.16】幽雅的绽放吧,墨染之樱
Description给出一棵大小为n的树,以及m条祖先后代链,选择第i条边会付出代价ci,求选择代价最小的边使得覆盖整棵树。 n<=3*1e5Solution“愿春死樱花下,释迦入灭日。後人悼我,当奉佛樱花。” 额原谅我中二了,不过只是喜欢上一只忘却了过去的亡灵而已。。。。栋栋搬的好题。。。原题CF671D 栋栋有一种将原问题对偶之后的贪心做法,然而我不会(其实是懒得看)。。。 考虑最简单原创 2017-09-28 21:30:11 · 963 阅读 · 0 评论 -
浅谈决策单调性在1D1D动态规划中的运用
1D1D动态规划是指状态数为O(n),每个状态的决策数为O(n),直接求解的复杂度为O(n^2)的动态规划方程。但这种方程往往都能够通过一些合理的组织和决策优化到O(n log n)甚至O(n)的。 由于博主比较弱所以只分析下面几种情况(其他的等会了有时间再补)1.斜率优化很奇怪我最开始接触的竟然是这个效率最高的但适用性最窄的优化 具体来讲,每一个决策可以看做一个二维平面上的点,某两个决策的优劣原创 2017-10-27 08:30:13 · 1720 阅读 · 0 评论 -
[CodeChef Nov Challenge]Max-digit Tree
Description给出以1为根的有根树,每个点上有个数字di (d1!=0)定义一个包含1的连通块对应的数是其按编号从小到大做dfs序得到的序列中,di按顺序连接起来形成的数字定义序列a,满足a1=1,ai=ai−1+maxdigit(ai−1)a_1=1,a_i=a_{i-1}+maxdigit(a_{i-1})a1=1,ai=ai−1+maxdigit(ai−1)其中max...原创 2018-11-26 22:04:55 · 328 阅读 · 0 评论 -
[LOJ6395]「THUPC2018」城市地铁规划 / City
Description定义一棵树的价值为∑f(deg(i)) 其中f为一个给定的函数 构造一棵树使得价值最大。 n<=3000Solution比赛的时候xdl写了一个n^2log n基于调和级数的做法。 现在想想当时真的是被降智了~~ 直接设背包显然是不行的,因为我们强制要选n个物品 但是如果我们先把背包里放满大小为1的物品,然后每次转移相当于替换一个物品 这样...原创 2018-05-23 21:17:40 · 586 阅读 · 0 评论 -
[CF891D]Sloth
Description给出一棵n个节点的树,你需要删去并加入一条边,使得原图仍然是一棵树,并且有完美匹配。 求方案数。 n<=5*1e5Solution考虑枚举删去一条边,我们只需要统计某个子树内和外有多少个点可以成为匹配点。 可以设Dp,四种状态,根节点是否被匹配,除根外是否有节点未被匹配。 这样子可以O(n)统计出子树内的答案,但是子树外的答案似乎没有那么好求。 观察我们的转移,是从儿原创 2018-03-15 22:27:14 · 489 阅读 · 0 评论 -
agc009e Eternal Average
Description有n个0和m个1,每次操作选择k个数删去,并写上它们的平均数。 求最后剩余的数有多少种可能。 n,m,k<=2000Solution第一次的思路假了。。。。 题意可以转化为有多少个数x可以表示成m个k^-i的和 但为了保证合法我们需要保证1-x也可以表示为n个k^-i的和。 为了方便我们可以把m-1,那么我们每一个k^-i分配给0和1的个数和就是k-1 有进位的话就原创 2018-02-28 21:35:08 · 295 阅读 · 0 评论 -
Try to find out the wrong in the test
Description有n个人排成一排,你需要对这n个人分组,每组必须是连续的一段。 每个人有要求,(c[i],d[i])表示这个人所在的组的最少人数和最多人数。 求最多能分成多少组和方案。 nSolution如果只有d的限制这道题就很好做了。 因为d限制了我们i只能从i前面的一段区间转移过来,不妨设为left[i],显然left是单调的 但是有c的限制就很麻烦了,因为c原创 2018-01-15 17:31:55 · 474 阅读 · 0 评论 -
Hello my friend
Description给出一棵黑白树,你现在在一号节点。 你现在有一个计数器,初始为0,每个时刻你需要进行如下操作 1:如果你所在的点为第一次到达或者为黑点则计数器+1 2:等概率的走到和你所在的点相邻的点 3:如果你所在的点度数为1则停止 保证1号点的度数>1,求最后计数器的数值的期望。 n<=1e5Solution概率期望和我讲不来.jpg 显然黑点白点可以独立考虑,先考虑黑点怎么原创 2018-01-15 17:21:46 · 498 阅读 · 0 评论 -
[CF889E]Mod Mod Mod
Description给出一个长度为n的序列a,定义f(x,n)=x%a[n],f(x,i)=x mod a[i]+f(x mod a[i],i+1) (1<=i < n) 求最大的f(x,1) n<=2*1e5,ai<=1e13Solution我太菜了不会做,还是来翻译题解吧: 设x=初始值mod a[1] mod a[2] mod a[3]…mod a[i],F[i][j]为当前做到第i个原创 2018-01-22 22:46:23 · 963 阅读 · 0 评论 -
[CF913F]Strongly Connected Tournament
Description太长了自己看 相信各位打过Hello 2018的dalao都知道题意我就不多讲了。Solution这道题比赛时没想真是亏了。。。 首先根据一些竞赛图相关姿势我们知道汉密尔顿回路唯一且一定存在,那么这个条件就没有用了 然后让我们来慢慢套路。 首先设Fn表示n个点的答案,枚举n所在的强联通分量的大小,我们可以得到:F[n]=∑i=1n(F[n−i]+F[i原创 2018-01-11 10:21:05 · 760 阅读 · 0 评论 -
[51nod1450]闯关游戏
Description有n个游戏,互相独立,对于第i个游戏,每次玩有1-xi-yi的概率失败,xi的概率获得一颗星,yi的概率获得两颗星。对于每个游戏我们会记录你的历史最好成绩。 对于所有游戏,通关的条件为:所有游戏都有星,且总成绩至少有M颗星 求从0开始玩游戏,最优策略下的通关期望次数 n,m<=2000Solution感觉自己数学真差。。。QwQ 推了一个下午都没理解,晚上某个时候豁然开原创 2017-11-04 21:28:00 · 326 阅读 · 0 评论 -
【NOIP2017提高A组集训10.22】友谊
Description一个长度为2m的序列,每个位置可以是0或1 任意两个i < j,i为偶数,j为奇数的0/1相同的位置可以匹配,每个位置最多匹配一次 求有多少个序列满足匹配完剩余的位置<=2n 答案对p取模 n,m<=3000,p<=1e9+7Solution一道吼题,正解有些猎奇 首先考虑mn^2Dp,这个相信大家都会,设Fi,j,k表示前i个位置,剩余j个可匹配0,k个可匹配1的方原创 2017-10-24 22:12:16 · 294 阅读 · 0 评论 -
[hackerrank random]
Description给出一个数列{d},|d|=n。 依次进行a次操作1和b次操作2。 操作1:随机一个二元组(l,r)[l< r],交换d[l],d[r] 操作2:随机一个二元组(l,r)[l< r],翻转区间[l,r] 最后随机一个二元组(l,r)[l< r],求出区间[l,r]的和。 求最终答案的期望值。 n<=1000,a<=10^9,b<=10Solution被WorldWi原创 2016-12-24 16:31:34 · 577 阅读 · 0 评论 -
【GDOI2017模拟12.9】完全背包问题
Description有n种物品,第i种物品的大小为vi,数量为无限多。 现在有m个询问,每次询问一个容量w是否能被装满。 我们限制大小大于等于l的物品最多只能有c个。 n<=50,m<=1e5,w<=1e18,c<=30Solution普通的暴力dp相信大家都会写。 但这个状态太大,我们需要一点优化。 首先把v排序,如果v1>=l,那么所有的物品都是有限制的,并且最多只能选30个,随便d原创 2016-12-14 20:54:36 · 828 阅读 · 0 评论 -
String
Description有两种字符串S,T。长度分别为n,m。现在需要在S里面有序地选出k个子串,且在T中出现的顺序与这k个子串的顺序相同。问这k个子串最大的长度和 n,m<=1000,k<=10Solution题意简洁系列。 顺带一说,字串不可重。 显然Dp。 三维可能会算重,多开一维,表示前面是不是连续一段匹配的。 然后就没有了。COde#include<cmath>#include<原创 2016-07-08 15:42:33 · 652 阅读 · 0 评论 -
[51nod1201]整数划分
Description求将一个正整数n划分成不同的正整数的和的方案数。 n<=50000Solution很巧妙的一道DP题。 我们设Fi,j表示将i划分成j个不同整数的方案。 j的上界大概是根号n的,不会超时。 那么我们有两种转移方案。 我们可以从Fi-j,j转移过来,把它的每个数+1。 我们也可以从Fi-j,j-1转移过来,把它的每个数+1,再加多一个1. 于是就解决了。Code#i原创 2016-07-06 16:44:33 · 641 阅读 · 0 评论 -
【GDOI2014模拟】服务器
Description我们可以从n个数中选择一些,选择第i个数的代价为Ci,且必须选择n。对于每个没有被选择的数i,若它右边离它最近的一个被选择的数是j,则代价为j-i。 求最小代价。 n<=10^6SolutionN^2Dp还是很显然的。 设Fi表示i必须选,且i的右边已经搞定了的最小代价,那么Fi=min(Fk+(k−i−1)∗(k−i)/2)+CiFi=min(Fk+(k-i-1)*(k原创 2016-06-11 18:41:25 · 613 阅读 · 1 评论 -
【NOIP2013模拟联考5】军训(training)
Description给出一个序列,序列的每个位置有两个值,H和G。 现在要把这个序列分成几份。每一段必须是连续的,并且要求每一段的max(Hi)的和<=lim,且使每一段的∑Gi的最大值最小。 求这个值。 n<=20000Solution看到双最值,直接二分就好~(≧▽≦)/~啦啦啦 关键是如何判断。 我们可以写一个n^2的dp,设fi表示以这一段i结尾的最小的max(Hi)的和,那么转原创 2016-06-27 12:46:49 · 772 阅读 · 0 评论 -
GDOI 2016 Day1 T2 最长公共子串
Description给出两个字符串A和B,求最长公共子串。 其中B串中有k个区间的字符可以任意调换。 |A|,|B|<=2000,k<=100000Solution首先,一个很明显的性质,两个区间如果有交集,那么这两个区间可以合并成一个。 然后,k就可以降到2000级别了。 开始乱搞。 你可以选择双指针往后推,也可以使用DP。 这里介绍后者。 设f[i,j]表示以A串的第i位和B串的原创 2016-05-14 16:25:47 · 834 阅读 · 0 评论 -
GDSOI 2016 T2 星际穿越
Description有n个人在排队。他们会按顺序选择自己喜欢的点a[x]。如果a[x]已经被选择了,那么他会选择f[a[x]],如果f[a[x]]已经被选择了,则选择f[f[a[x]]]…保证所有人都有点选择。求选择的点本质不同的排列的方案数。 n<=10^6Solution我们把x向f[x]连边,那么原图就是一个环加内向树的模型。 如果只是一棵树的话,那么我们从叶子节点开始,设size[x]原创 2016-05-26 12:34:19 · 923 阅读 · 0 评论 -
【NOIP2013模拟】粉刷匠
Description给出n个球,其中有C1个球是颜色1的,有C2个球是颜色2的,有C3个球是颜色3的…… 有Ck个球是颜色k的。求相邻两个球颜色不同的排列方案。 k<=15,ci<=6,数据组数<=2000Solution这种题一般很难有直接的通式,可以考虑Dp。 设Fi,j表示,前i中颜色已经放完了,其中产生了j个不合法的空的方案数。(这里的空指的是每两个球中间的位置,包括开头结尾,不合法原创 2016-05-30 19:37:33 · 1072 阅读 · 0 评论 -
【NOIP2015模拟11.3】备用钥匙
Description在一个公司里有n个职员。每一天被分成了m个时刻,每一个职员都会在每天的第Si个时刻出去,第Ti个时候回来。保证同一时刻不会有两个或以上的人出去/回来。 这个公司有一把很神奇的锁,只能从里面开、关,从外面只能用钥匙开、关。现在公司内有k把钥匙,要保证每个人都能回得来的情况下,求门锁着的最长时间。 n<=2000,m<=10^9,kSolution我们把每个人的出/进时刻映射下原创 2016-04-16 16:53:21 · 789 阅读 · 0 评论 -
【GDOI2016模拟4.23】无界单词
Description学过kmp吗? 一个只由a和b组成的字符串S,如果next[|S|]=0,那么这个单词就是无界的,否则就是有界的。 给出n和k,求长度为n的无界单词有多少个,和其中字典序第k小的是什么。 多组询问。 Type<=50,n<=64Solution很考验思维的一道题。 一般人(我)看到就想到鬼畜数论,结果正解是dp(也不算吧)首先处理第一问。好像很难做 正难则反。 设原创 2016-04-26 19:26:12 · 997 阅读 · 0 评论 -
【NOIP2015模拟11.2晚】舳舻牌
DescriptionAlice和Bob,哦不,CZL和YYY在玩一个游戏。桌上有n张牌,每张牌对两人各有一个诱惑值,和它自己的价值。CZL先手,每次操作方喊出一个值X,然后把桌上剩下的对他诱惑值<=X的牌全部收走(至少一张),并获得其的价值。 求CZL的最大得分。Solution博弈,倒着DP。 首先把诱惑值离散化。 设Fi,j表示CZL喊到i,YYY喊道j,CZL的最大收益;Gi,j表示Y原创 2016-04-13 20:49:41 · 914 阅读 · 0 评论 -
[51nod1274]最长递增路径
Description一个无向图,每条边有一个边权。可以从任何点出发,任何点结束,可以经过同一个点任意次。走过的路必须满足所有边的权值严格单调递增,求最长能经过多少条边。 n,m<=50000Solution既然它是要求严格单调递增,那么我们就可以直接Dp了。 不会有后效性。 把所有边排一遍序,然后就可以了。Code#include<cstdio>#include<cstring>#inc原创 2016-07-08 16:53:28 · 1229 阅读 · 0 评论 -
西行妖
Description给出一棵树,你可以让最多s个叶子节点被染色。 然后,如果一个节点的儿子至少有一个被染色,那么他也会被染色。 如果一棵树有大于等于m个被染色的点,那么这棵树就是美丽的。 问给出一棵树,有多少种染色方案使得它是美丽的。 n,m<=1000,s<=20Solution很好的一道考验思维的题目。 我们可以按照dfs序中的顺序来对叶子节点进行dp。 我们设F[i,j,k]表示原创 2016-07-09 17:20:37 · 818 阅读 · 1 评论 -
[51nod 1306]高楼和棋子
Description一栋高度为n层的楼,你有m个棋子,在第x层以上扔棋子会碎。 问对于x=0~n,最坏情况下需要试多少次才可以试出这个x。 T<=50000,1 <= N <= 10^18, 1 <= M <= 64Solution是不是长得有点眼熟? 相信大家都在小学奥数书上见过这种题。 不过搬到OI上来似乎就没有那么好做了。 最优策略很难想啊。。。 那我们不妨换个角度。 直接求次原创 2016-11-09 19:56:01 · 923 阅读 · 0 评论 -
[CF 724E]Goods transportation
Description给出n个点,第i个点原来有p[i]个“good”(我也不知道为什么要叫这个名字,看来是Chinese round吧),可以售出s[i]个“good”。对于两个点i,j(iSolution这道题不是显然的最大流嘛~~ 从源点向每个点连p[i],从每个点向汇点连s[i],然后每个点向后面的所有点连c,最大流就是答案。。。 但是,图的规模太大了,无法兹瓷,也不能动态开点TAT原创 2016-10-17 19:46:11 · 900 阅读 · 1 评论 -
[CF 712D] Memory and Scores
Description有两个人在玩游戏,第一个人初始有a分,第二个人有b分。 总共玩t轮游戏,每一轮游戏每个人可以从[-k,k]中任选一个数,加进自己的分数中。 分数大的人获胜。 求有多少种情况先手获胜。 答案mod 1e9+7 1 ≤ a, b ≤ 100, 1 ≤ k ≤ 1000, 1 ≤ t ≤ 100Solution直觉告诉我这道题应该是有数学方法的,然而本蒟蒻不会。。。 那么原创 2016-10-09 20:43:17 · 594 阅读 · 0 评论 -
[CF 702E]Analysis of Pathes in Functional Graph
Description给出一张n个点,n条边的有向图。每个点的出度均为1,每条边有边权。 求:从每个点出发走k条边,所有方案中的边权和和最小值。 n<=10^5,k<=10^10Solution由于最近颓总在刷一些C、D题,今天闲着没事干随便找了道E题来刷~~ 然而这道E题不是水题吗? 我才不会说我找了道通过人数三位数的E题呢 看到k这么大,肯定想到有一些神奇的log算法辣== 然后发现原创 2016-10-14 20:20:37 · 529 阅读 · 0 评论