
分治
1
C202044zxy
这个作者很懒,什么都没留下…
展开
-
[ZJOI2015] 幻想乡战略游戏
https://www.luogu.com.cn/problem/P3345原创 2020-12-04 09:17:29 · 291 阅读 · 0 评论 -
CF1442D Sum
一、题目点此看题二、解法一定要充分利用题目条件。第一个明显的题目条件是 aaa 数组单调不降,那么我们最后的选取一定是至多部分选取一个数组。证明可以用反证法,假设部分选取了两个数组,那么不优。然后题目变成了对数组编号为 [1,x),(x,n][1,x),(x,n][1,x),(x,n] 的做 0/10/10/1 背包,然后用 O(k)O(k)O(k) 的时间看部分选取多少。算法瓶颈在第一个部分,max\maxmax 型的背包不能做退背包,所以我们可以用分治解决。#include <cst原创 2020-12-03 17:53:01 · 224 阅读 · 0 评论 -
[unknown OJ] 迷途竹林
一、题目点此看题原创 2020-11-23 16:14:37 · 339 阅读 · 0 评论 -
[APIO 2018] 新家
一、题目点此看题二、解法不难发现答案具有单调性,所以对于每个询问都可以二分答案。具体来说对于位置xxx,如果答案≥m\geq m≥m,那么等价于存在一种店在(x−m,x+m)(x-m,x+m)(x−m,x+m)不存在店,但是区间并不好维护,可以使用前驱来判断存在与否,那么等价于在[x+m,inf)[x+m,inf)[x+m,inf)存在店的前驱≤x−m\leq x-m≤x−m,那么我们只需要判断[x+m,inf)[x+m,inf)[x+m,inf)前驱的最小值mn≤x−mmn\leq x-mmn≤x原创 2020-10-21 17:01:23 · 221 阅读 · 0 评论 -
[POJ 2728] Desert King
一、题目点此看题原创 2020-09-23 22:08:57 · 198 阅读 · 0 评论 -
[JSOI2018]列队
https://www.luogu.com.cn/problem/P4559原创 2020-09-17 21:21:59 · 140 阅读 · 0 评论 -
CF1100E Andrew and Taxi
一、题目点此看题二、解法原创 2020-08-24 09:59:41 · 139 阅读 · 0 评论 -
CF689D Friends and Subsequences
一、题目原创 2020-08-13 18:59:01 · 192 阅读 · 0 评论 -
CF1098C Construct a tree
一、题目点此看题原创 2020-07-26 08:33:52 · 246 阅读 · 0 评论 -
CF949D Curfew
一、题目原创 2020-07-26 08:19:58 · 417 阅读 · 0 评论 -
CF248D Sweets for Everyone!
一、题目点此看题二、解法二分答案是显然的,但是检查有点难了,贪心地看,有这两种情况:原创 2020-07-25 10:32:46 · 150 阅读 · 0 评论 -
CF1227E Arson In Berland Forest
一、题目点此看题原创 2020-07-24 16:33:47 · 236 阅读 · 0 评论 -
CF1132D Stressful Training
一、题目点此看题二、解法显然这个xxx可以二分,关键在于如何检查。我们肯定是去救最危险的,怎么定义这个危险呢?用a[i]/b[i]a[i]/b[i]a[i]/b[i],也就是能承受的天数。#include <cstdio>#include <queue>using namespace std;#define int long longconst int M = 200005;int read(){ int x=0,f=1;char c; while((c=g原创 2020-07-24 16:27:12 · 202 阅读 · 0 评论 -
CF808E Selling Souvenirs
一、题目点此看题原创 2020-07-24 07:42:55 · 200 阅读 · 0 评论 -
CF626E Simple Skewness
一、题目点此看题原创 2020-07-24 07:27:42 · 259 阅读 · 0 评论 -
CF620D Professor GukiZ and Two Arrays
一、题目点此看题原创 2020-07-23 22:03:10 · 229 阅读 · 0 评论 -
CF404E Maze 1D
一、题目点此看题二、解法只可能安放111个或者不安放障碍物,可以一开始模拟一下来判断要不要安放障碍物。把移动理解为数轴上的移动,如果最后一次是+1+1+1,那么障碍物位置一定是负数,否者障碍物位置一定是正数。然后考虑,如果一个离000较远的障碍物可以,那么一个离000较近的障碍物一定可以,因为离000较近的障碍物会挡掉更多的反向移动,那么最后的位置就比额定的位置更远,就合法了,这就是本题可以二分的原因。#include <cstdio>#include <cstring>原创 2020-07-23 16:52:59 · 170 阅读 · 0 评论 -
CF1059D Nature Reserve
一、题目点此看题二、解法显然是二分答案,那么圆心就确定在了y=ry=ry=r这条直线上,每一个点在这条直线上都有一个区间,表示如果圆心选在这个区间里面,那么就可以覆盖到他。检查答案就只需要看这些区间是否有交集即可。还有两个很重要的细节,康康代码。#include <cstdio>#include <iostream>#include <cmath>using namespace std;#define db doubleconst int M = 10原创 2020-07-15 21:57:12 · 124 阅读 · 0 评论 -
AT2435 舞踏会
一、题目点此看题二、解法把这个转化成树,大约就是这个样子:根就是答案,我们可以二分答案midmidmid,我们设每个点大于midmidmid需要的自由点个数(大于等于midmidmid的个数)f[i]f[i]f[i],转移就是三个儿子的最小的fff值之和。考虑一下初始化,如果当前的点是已经固定的,如果值小于midmidmid那么fff是infinfinf,否则为000;如果未固定fff值为111,不难看出这样的复杂度是O(n)O(n)O(n)但是答案好像没有单调性啊,比如如果值都是1e91e91原创 2020-05-09 16:36:59 · 155 阅读 · 0 评论 -
CF1103B Game with modulo
一、题目点此看题题目描述猜一个数aaa,每次可以提一个问题(x,y)(x,y)(x,y),如果x≥ymod ax\geq y\mod ax≥ymoda 返回x,否则返回y,你最多询问606060次,然后必须回答出aaa是多少。二、解法一道神奇的交互题qwqqwqqwq首先必须明确一个结论:若x≥ax\geq ax≥a,则 xmod a≤x/2x\mod a\leq x/2xmoda...原创 2020-02-02 15:54:34 · 203 阅读 · 0 评论 -
[JXOI2018]排序问题
一、题目点此看题二、解法0x01 50分暴力先考虑得到一个序列计算它的期望,如果这个序列两两不同,假设长度为nnn,那么期望就是n!n!n!,考虑序列有重复的情况,发现相同的数的顺序不用考虑,设每个数的出现次数为tit_iti,那么期望就是n!/ti!n!/t_i!n!/ti!。在考虑如果加入数字,观察上面期望的式子,发现在[l,r][l,r][l,r]出现数的总和一定的情况下分布越...原创 2019-12-14 11:39:54 · 272 阅读 · 0 评论 -
[SCOI2012]奇怪的游戏
一、题目点此看题二、解法给定的矩形肯定是一个二分图,我们先对其黑白染色,记n1n_1n1为白点数量,n2n_2n2为黑点数量,s1s_1s1为白点权值和,s2s_2s2为黑点权值和,首先有一个柿子,设xxx为最后所有数字的值,则:x×n1−s1=x×n2−s2⇒x=(s1−s2)÷(n1−n2)x\times n_1-s_1=x\times n_2-s_2\Rightarrow x...原创 2019-12-12 12:56:01 · 204 阅读 · 0 评论 -
[SDOI2013]费用流
一、题目点此看题二、解法贪心地看,我们直接把所有ppp都给到容量用的最多的边,然后我们的目的就是找到一个最大流中流量最多的边的最小值,可以考虑二分这个值,然后给每个点限流,重新建边时把初始的流量和二分的这个值去最小值,然后重新算一遍最大流,时间复杂度O(n2mlog)O(n^2m\log)O(n2mlog)。这道题必须要用当前弧优化,要不然会TTT死,代码中会有注释。#include ...原创 2019-12-10 17:14:21 · 141 阅读 · 0 评论 -
[SDOI2015]星际战争
一、题目点此看题二、解法可以把激光看成XXX部,把机器人看成YYY部,考虑二分答案后建图。建一个起点,把所有的激光连向起点,容量为t×b[i]t\times b[i]t×b[i],也就是把伤害都给激光,然后让它去伤害机器人。建一个终点,把所有机器人连向终点,容量为a[i]a[i]a[i],表示一个机器人能最多接受b[i]b[i]b[i]的伤害,检查受到的伤害是否等于a[i]a[i]a[...原创 2019-12-10 15:12:24 · 143 阅读 · 0 评论 -
冒泡排序
一、题目二、解法这道题要用到一些推论,下面我来列举一下:可以把jjj理解为可移动的指针,a[j]a[j]a[j]的值总是单增的。我们设iii的+1+1+1为一轮,对于每一轮,可以知道当且仅当它前面有比他大的数,该数会左移一位,同时前面比它大的数正好减少−1-1−1。对于不左移的数,他前面已经没有比他大的数。层数越多,操作数越多。利用性质444,我们可以考虑二分,根据性质222...原创 2019-12-07 21:06:08 · 463 阅读 · 0 评论 -
[JOI 2017 Final]王国
一、题目二、解法考虑二分答案,我们把最小值强加于JOI\text{JOI}JOI,最大值强加于IOI\text{IOI}IOI。考虑怎样检查,先想一想势力范围应该如何划分。假设蓝色是JOI\text{JOI}JOI的势力范围,可以发现如果一列一列地区填的话,能填的行应该是单调递减的,既然我们已经二分了答案,为了减轻对面的负担,JOI\text{JOI}JOI肯定拿的越多越好,所以我们就...原创 2019-11-30 16:05:45 · 269 阅读 · 0 评论 -
运输计划
一、题目点此看题二、解法要求答案的最大值,我们考虑二分答案。设二分的值为xxx,对于长度大于xxx的路径,我们用树上差分标记路径上的每一条边,因为我们的每一条边都要满足不大于xxx,所以我们取被全部标记了的边中的最大值,判断最大的路径−最大的边最大的路径-最大的边最大的路径−最大的边是否满足条件,如果它不大于xxx,那就返回111就行了。时间复杂度O(nlogn)O(n\log n)O...原创 2019-11-18 21:37:58 · 189 阅读 · 0 评论 -
[TJOI2016]排序
一、题目点此看题二、解法其实本题的突破口在只有一个询问上,因为没有排序算法能达到O(logn)O(\log n)O(logn)。考虑log\loglog的复杂度排序,发现它只能对010101串进行排序,我们尝试把问题转化为010101串的排序。如果我们有一个分界值xxx,那么小于xxx的是000,否则是111,排序可以用线段树实现,维护000的个数,支持区间赋值。这样我们可以得到一个...原创 2019-11-12 23:17:40 · 176 阅读 · 0 评论 -
[JOISC 2017 Day 1] 烟花棒
一、题目点此看题二、解法这道题很容易想到二分答案,但是难点在于O(n)O(n)O(n)写checkcheckcheck函数(不是一般的毒瘤)。首先原创 2019-10-19 19:30:41 · 355 阅读 · 0 评论 -
赛道修建
普及选手又来做NOIP原题了。一、题目传送门二、解法55分不多说,耐心写拿得到的。正解考虑对答案二分,我们考虑怎么检查midmidmid。用树形dpdpdp的思想,我们先考虑对于uuu的子树的情况:1、如果子树uuu中的最长链大于等于midmidmid,肯定让它单独贡献答案。2、如果子树两条链的组合大于等于midmidmid,让他们组合后贡献答案。3、选择剩下的最长链上传。我们...原创 2019-09-13 12:28:00 · 335 阅读 · 0 评论 -
[JXOI2017]加法
一、题目不想多说,点此看题二、解法说一下这道题的解法吧,没有什么过于复杂的地方(毕竟我都能看出来解法)。这道一看就是要二分答案,我们考虑怎么检查midmidmid。我们先对于每个操作区间按左端点排序(本题可用前向星)。考虑处理到当前的点,将覆盖它的操作区间直接加上去,因为二分的特性我们只需要检查midmidmid的可行性,为了可行我们不能落下任何一个点,所以一定要加到它不小于midmid...原创 2019-09-12 22:29:16 · 313 阅读 · 1 评论