随笔分类 -  DP

摘要:题目大意 一个长为n的哈希表,每次在ai处加一个元素,其可以往左或往右找位置,设x为最终位置,则贡献为|ai-x| 对所有的不走出边界的a和所有的方向集合b求和,模p n<=500,p是质数 题解 ll:也是简单题 于是顺便把标爆成了nlogn 一开始以为可以走出边界,后来发现看错了 所以直接设一段 阅读全文
posted @ 2020-11-18 22:46 gmh77 阅读(301) 评论(0) 推荐(0)
摘要:题目大意 题解 貌似之前杂题讲过,但是完全忘了 先假设n<=D,否则取个min之类的 首先显然可以差分后变成一次对子树操作,则变为二元组(vi,wi)表示代价为wi,贡献为vi,且除了1以外的子树最多选d个 考虑假的贪心:按照vi/wi从大到小排序,之后按顺序选 发现这样有个性质:当vi/wi>vj 阅读全文
posted @ 2020-11-15 22:03 gmh77 阅读(98) 评论(0) 推荐(0)
摘要:题目描述 题解 设每条边都有一个初始为0的边权,每次查询断成两个块后就把两个块的边权+1,最后得到的树上任意两条边权相同的边之间都有一条边权小于其的边,则操作次数为最小边+1 把边权反过来,即初始为k每次把两侧-1,则变为相同的之间有大于其的 考虑dp,设f[i]表示以i为根的子树中能连上来的边的集 阅读全文
posted @ 2020-11-10 22:37 gmh77 阅读(449) 评论(0) 推荐(1)
摘要:题目大意 给出n个不减数组,每个数组可以取一段前缀,求恰好取出k个数的最大和 n,k<=3000,Σ|a|<=1e6 题解 比C阳间 显然只会有最多一个选了的数组没有选满,否则找出两个不满的可以将其调整,一定是越调越优 做法1:设f[i,j,0/1]表示当前到i选了j个,是否已经选过一个未满的,写出 阅读全文
posted @ 2020-11-06 19:19 gmh77 阅读(244) 评论(0) 推荐(0)
摘要:题目大意 给出n条水平线段和m条竖直线段,将其组合成一个多边形满足封闭且边不相交,构造方案 Σn+m<=1e3,len<=1e3 题解 被C搞死了 显然可以类似 这样构造,红色的按照水平大->小、竖直小->大放,黄色的反之 dp设f[i,j]表示放了前i和为j,bitset优化,最后逆推求出方案 问 阅读全文
posted @ 2020-11-02 09:17 gmh77 阅读(350) 评论(0) 推荐(0)
摘要:题目描述 题解 虽然不会做,但是感觉3500还是高了 首先在博弈问题中,如果一个状态的sg=i,那么一定存在一条从该状态出发的长度为i的链 设f[i,j]表示以i结尾,最后差为j的sg,则显然sg不超过√2maxc 所以直接dp存sg,设f[i,j]表示以i结尾,sg为j的最大差,显然随着差的不断减 阅读全文
posted @ 2020-10-29 19:08 gmh77 阅读(290) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-10-26 20:35 gmh77 阅读(7) 评论(0) 推荐(0)
摘要:题目描述 题解 《暴力》 597 考虑如何匹配一个子序列,每次在S串找到最近的T串的下一位匹配 那么设f[s,t]表示已经匹配了s,剩下还能匹配的是t,有前导0 比如[101,0011]可以转移到[1101,001]、[0101,0]、[101,空] 具体可以记f[i,j]表示二进制位为j,在第j位 阅读全文
posted @ 2020-10-23 18:44 gmh77 阅读(161) 评论(0) 推荐(0)
摘要:题目描述 题解 最水的E题没有之一 枚举最终点,显然可以转化成若干个数,每次把两个数各-1,不能减到负数 那么如果最大数大于剩下的就无解,否则一定有解,具体每次把最大和次大拿出来-1,如果次次大>=2那么仍合法,如果为1且减的两个都为1,那么根据每次-2的原则即总和为偶数还存在另一个1,所以也合法 阅读全文
posted @ 2020-10-22 21:41 gmh77 阅读(188) 评论(0) 推荐(0)
摘要:题目大意 n堆石子,AB两个人分别从两头开始取,每次取1~个数个,不能操作者输 n,t<=100 题解 好题 首先AB两人每次要么取一个,要么全部取完 题解并没有详细说明,这里感性证一下 如果某一方对应的那堆石子大于其余的之和,那么其必胜,否则他会弃掉这堆去抢后面的 但是如果直接弃掉的话可能会输,所 阅读全文
posted @ 2020-10-20 19:04 gmh77 阅读(369) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-10-13 21:58 gmh77 阅读(10) 评论(0) 推荐(0)
摘要:题目描述 题解 首先有一个显然的重要结论:一个数减k后只会影响到最后log k位 所以先把异或和求出来,问题变成给出一些集合$(0,x ;xor ;(x-1),x ;xor ;(x-2),...x ;xor ;(x-k))$,在里面选择一些数异或起来求方案 这样的组数很少,因为只和最后log k位以 阅读全文
posted @ 2020-10-11 21:03 gmh77 阅读(128) 评论(0) 推荐(0)
摘要:题目描述 题解 止步于此 把边从小到大排序依次加入,维护f[i,j]表示在当前连通块i中有j个团的方案 团只考虑当前加入的边,加入一条边后先把两个块卷积合并(如果不同的话) 然后考虑新增的团,如果当前连通块不是一个团,那么如果要加就只能加一部分,即剩下一些边不加 由于当前边是连通块中最大的,所以不能 阅读全文
posted @ 2020-10-08 15:09 gmh77 阅读(262) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2020-10-06 21:27 gmh77 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-10-06 21:18 gmh77 阅读(2) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2020-10-06 16:17 gmh77 阅读(2) 评论(0) 推荐(0)
摘要:题目大意 题解 半想半看myh的做法 官方题解是暴力枚举划分然后算,因为n和k很小所以跑得很快 首先有一个结论:一段有d个连续b段的染色结果是由rb+(d-1)个r或b所造成的 证明考虑归纳,首先d=1的时候成立,然后每加上一个b就把第一段b去掉,剩下的是d-1的情况;如哦加上一个r就考虑把第一段的 阅读全文
posted @ 2020-09-30 12:45 gmh77 阅读(223) 评论(0) 推荐(0)
摘要:题目大意 题解 和dyp交♂流过后写时发现完全不是一个东西 假做法:在原图上建生成树,按照min(两端点A-B)小到大排序,然后在建出来的树上换根dp 首先这个树不知道是不是对的,并且dp的时候可能会在子树内横跳 2.4k 真做法: 如果没有图的限制,那么显然按照A-B从大到小选,原因根据https 阅读全文
posted @ 2020-09-28 21:57 gmh77 阅读(133) 评论(0) 推荐(0)
摘要:题目大意 题解 简单dp 假设一个数的移动方向确定了,那么这个数可以移到方向所指的任意一个位置,等价于把这个数拿掉最后再放 那么剩下的是一个上升子序列,设f[i][j]表示考虑完1~i,上一个的是j 如果a[i+1]<a[j],那么显然不能放,加上左移的代价 如果a[i+1]>a[j],那么可以放也 阅读全文
posted @ 2020-09-27 22:28 gmh77 阅读(114) 评论(0) 推荐(0)
摘要:题目大意 |S|<=100 题解 标算是状压,这波出题人在地下室 一开始想直接设f[i]来求[1,i],然后枚举结尾重复串再考虑里面的,反演计算 以为里面的子问题可以设成g[i][j]表示循环节为i的长度为j的串的答案,然后假了,比如100100这种情况,100并不能表示成g 实际上直接把里面的暴力 阅读全文
posted @ 2020-09-27 20:22 gmh77 阅读(194) 评论(0) 推荐(0)