
二分答案
stargazer.
夜を穿つの
展开
-
【洛谷 P3222】【HNOI2012】射箭(半平面交 / 二分答案)
传送门列出限制是li≤axi2+bxi≤ril_i\le ax_i^2+bx_i\le r_ili≤axi2+bxi≤ri可以变成a,ba,ba,b之间的大于小于关系另外有a>0,b<0a>0,b<0a>0,b<0如果询问某关是否可行半平面交即可由于单调性二分答案即可可以先排序一次,这样复杂度就是O(nlogn)O(nlogn)O(nlog...原创 2020-04-01 18:54:27 · 207 阅读 · 0 评论 -
【洛谷 P6142】 【USACO20FEB】 Delegation P(二分答案 / 贪心)
传送门和noip2018noip2018noip2018的那道有点像先二分答案反正是要最大化向上传的链从最小的开始枚举找第一个加起来≥k\geq k≥k的匹配还要考虑把不合法的往上传用setsetset做复杂度O(nlog2n)O(nlog^2n)O(nlog2n)本人的分类讨论稍微有些复杂#include<bits/stdc++.h>using namespace...原创 2020-03-11 18:37:53 · 421 阅读 · 0 评论 -
【LOJ #6066】「2017 山东一轮集训 Day3」第二题(二分答案 / 树哈希 / 括号序列)
传送门首先显然二分答案其实我第一眼想得长链剖分维护树哈希实际上由于这个子树有先后顺序于是可以看做括号序列每个点的kkk子树就是若干区间哈希判一下即可#include<bits/stdc++.h>using namespace std;#define cs const#define re register#define pb push_back#define pi...原创 2020-02-14 19:46:51 · 253 阅读 · 0 评论 -
【LOJ #3161】「NOI2019」I 君的探险(随机化+整体二分)
传送门首先是686868分对于树的做法(和正解没有关系)点编号为1−n1-n1−n考虑对于每一个二进制位ddd把这编号位为1的点modifymodifymodify然后对每个点queryqueryquery如果颜色改变,那么sum+=1<<dsum+=1<<dsum+=1<<d然后可以发现这样求出来每一个点相连点的编号异或和然后考虑一个剥叶子的过...原创 2019-12-18 21:34:29 · 303 阅读 · 0 评论 -
【BZOJ5252】【洛谷P4383】【2018九省联考】—林克卡特树(二分+树形dp)
毒瘤BZOJ1s传送门洛谷传送门题意有点复杂,实际上就是在求n+1n+1n+1条链,使其长度和最大考虑60分的dpf[i][j]f[i][j]f[i][j]表示iii的子树有jjj条链时的最大长度发现这个几乎无法dp对吧考虑到链上的点度数必然小于3再加一维表示iii的度数发现现在就很好维护了分类讨论一下就可以了但100分时k太大了O(nk)O(nk)O(nk)无法承受但如果...原创 2019-02-26 12:05:17 · 181 阅读 · 0 评论 -
【BZOJ4443】【SCOI2015】—小凸玩矩阵(二分+最大匹配)
传送门简单题考虑二分转化成判断性问题既然总共能选且只能选nnn个那也就变成了能否选出n−k+1n-k+1n−k+1个比他小的元素dinicdinicdinic跑最大匹配就完了#include<bits/stdc++.h>using namespace std;#define ll long longinline int read(){ char ch=getchar...原创 2019-03-26 18:50:38 · 175 阅读 · 0 评论 -
【BZOJ4310】—跳蚤(后缀数组+二分答案)
传送门darkbzojdarkbzojdarkbzoj上题面有误,应该是最大的最小考虑二分这个最小的串xxx的排名kkk那么也就是说所有排名比这个大的一定要被切开考虑一个后缀S[p,n]S[p,n]S[p,n]如果lcp(S[p,n],x)=0lcp(S[p,n],x)=0lcp(S[p,n],x)=0那么显然不合法否则考虑在lcplcplcp前切开考虑从后往前考虑每个后缀那么显然...原创 2019-09-26 22:04:10 · 202 阅读 · 0 评论 -
【BZOJ2806】【CTSC2012】—熟悉的文章(二分答案+广义后缀自动机+单调队列优化dp)
传送门考虑二分这样一个LLL现在问题变成是否存在一种切分使得满足熟悉的占909090以上可以考虑dpdpdp设f[i]f[i]f[i]表示前iii位最长的则f[i]=maxj∈[i−match,i−l]f[j]+i−jf[i]=\max_{j\in[i-match,i-l]}{f[j]+i-j}f[i]=j∈[i−match,i−l]maxf[j]+i−jmatchmatchmat...原创 2019-09-27 08:00:14 · 120 阅读 · 0 评论 -
【BZOJ4180】—字符串计数(二分答案+后缀自动机+矩阵快速幂)
传送门定义f[i][j]f[i][j]f[i][j]为以iii开头jjj结尾的最短的不会被别的串表示出来的串这个可以在SamSamSam上dpdpdp得到考虑二分答案于是只需要看midmidmid次拼出的串是否比nnn大即可#include<bits/stdc++.h>using namespace std;const int RLEN=1<<20|1;in...原创 2019-09-27 17:59:56 · 174 阅读 · 0 评论