自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

romiqi

千古文人侠客梦,肯将碧血写丹青

  • 博客(42)
  • 收藏
  • 关注

原创 [BZOJ1566][DP]NOI2009:管道取珠

BZOJ1566分析:看到ai2a_i^2ai2​懵逼了,这是要怎么求?冷静下来用脚趾头想一想就知道是分别做两次,然后第一次和第二次分别选一组出来有多少组是一样的那就可以设dp[k][i][j]dp[k][i][j]dp[k][i][j]表示到第k个,第一次的上面管道取了i个,第二次的上面管道取了j个的方案数方程式:(a是上面,b是下面)if(a[i−1]==a[j−1])dp[k][...

2019-03-29 22:02:04 74

原创 [BZOJ1042][DP][容斥原理]HAOI2018:硬币购物

BZOJ1042先考虑没有个数限制时有多少方案,一个递推出来然后有限制时方案就是没有限制的方案数-第一种超过限制的方案数-第二种。。。+第一,二种都超过。。。容斥一下就做完了Code:#include<bits/stdc++.h>#define ll long longusing namespace std;inline ll read(){ ll res=0,f=1;...

2019-03-29 21:52:40 78

原创 [BZOJ1003][区间DP][最短路]ZJOI2006:物流计划

BZOJ1003分析:首先这个题和最短路有关是肯定的,关键是处理好不能走某个点的情况我们可以发现,n天中有几次修改路线,那么可以把没有修改的时候看成一个区间,则整个过程是由若干个区间拼接而成的,结合数据范围可以考虑到区间DP具体地,我们先枚举所有区间,求出一个区间[l,r][l,r][l,r]中,所有限制都生效(只要区间内任意一天某个点被限制了,这个点就不能选,因为这个区间全程都要用处理出...

2019-03-29 21:35:23 124

原创 [BZOJ3594][DP][树状数组]SCOI2014:方伯伯的玉米田

BZOJ3594先分析一下题:要求执行k次区间加1后这个区间最长的LIS长度那么首先考虑区间加1这个操作:很明显这个操作的右端点一定可以为n,如果最优决策中有r不为n的情况,把r后面的数都加1,也对答案没有影响,这个很明显所以就可以考虑dp:设f[i][j]f[i][j]f[i][j]表示dp到第i个,已经执行了j次区间加1操作的ans,转移方程就是f[i][j]=max(f[a][b])+...

2019-03-26 21:51:16 98

原创 [BZOJ4570][数学][凸包]SCOI2016:妖怪

BZOJ4570要求的是max(min(xi+yi+abxi+bayi))max(min(x_i+y_i+\frac{a}{b}x_i+\frac{b}{a}y_i))max(min(xi​+yi​+ba​xi​+ab​yi​)),由对勾函数的性质得ab=xiyi\frac{a}{b}=\sqrt{\frac{x_i}{y_i}}ba​=yi​xi​​​观察一下发现就是求上凸壳,然后用边来更新...

2019-03-26 21:38:52 153

原创 [BZOJ4138][最小圆覆盖]FJOI2015:最小双圆覆盖

BZOJ4138看题目就知道用什么,但是想了半天想不出来,只能考虑到按x坐标排序然后二分分界点,对两边分别做最小圆覆盖然而这样不能保证正确看了唯一一个写了题解的人的写法,把坐标每次旋转1∘1^{\circ}1∘,然后像刚才那样做就好了Code:#include<bits/stdc++.h>#define db double#define eps 1e-9const db...

2019-03-22 16:02:01 282

原创 [BZOJ2823][最小圆覆盖]AHOI2012:信号塔

BZOJ2823最小圆覆盖模板题Code:#include<bits/stdc++.h>#define db doubleusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;ch=getchar();}...

2019-03-22 11:43:36 164

原创 [luogu2774][网络流24题]方格取数

luogu2774这题可以发现我们把格子染色,使得相邻的格子的颜色不同,然后把白色格子和s连一条边,黑色格子和t连一条边,就转化为了最小割问题Code:#include<bits/stdc++.h>using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(c...

2019-03-20 18:00:49 99

原创 [luogu2766][网络流24题]最长递增子序列

luogu2766分析:对于这种一个点只能选一次的问题我们拆点然后考虑连边,就是如果dp的时候一个点可以转移到另一个点就可以连边,然后跑个最大流就完了第三问就是把1和n的流量设成infCode:#include<bits/stdc++.h>using namespace std;inline int read(){ int res=0,f=1;char ch=getc...

2019-03-20 13:38:51 143

原创 [BZOJ4573][LCT]ZJOI2016:大森林

BZOJ4573巧妙的思路:显然分别维护每棵树是不可能的,时间空间都无法接受所以换个想法,发现操作对于没换生长点时候的树都是一致的,所以可以直接改变一下策略,维护同一棵树然后考虑修改生长点,可以离线操作,先保存所有操作和询问,加点就加到它最近新建的点就好了Code:#include<bits/stdc++.h>using namespace std;inline int ...

2019-03-19 20:31:18 114

原创 [51nod1766][线段树][树的直径]树上的最远点对

51nod1766可以发现,如果把两个区间分别求一个直径,记录一下端点,那么最优解一定是这四个端点中的任意两个构成的,且这两个点不能来自同一个区间,用直径的性质很好证明然后我们就可以用一个线段树维护一下下标区间的直径的端点然后,本题卡常,要用rmq-lca才能过Code:#include<bits/stdc++.h>#define ls tr[k].l#define rs...

2019-03-18 18:37:59 140

原创 [luogu4219][LCT]BJOI2014:大融合

luogu4219简单的LCT,连边直接连,维护siz,查询就把两个端点的siz乘起来(luogu数据水了,BZOJ比较强,我被卡常了,准备看一下zxy推荐的小常数LCT改一下)Code:#include&lt;bits/stdc++.h&gt;#define ll long longusing namespace std;inline int read(){ int res=0,...

2019-03-15 07:08:00 80

原创 [BZOJ3639][LCT]Qtree7

BZOJ3639和上题没啥区别吧就是多了个统计子树最大值,可以用splay或者multiset搞Code:#include&lt;bits/stdc++.h&gt;using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;...

2019-03-14 19:32:17 216

原创 [BZOJ3637][LCT]Qtree6

BZOJ3637LCT维护连通块的一个题一个简单的想法是直接两个LCT分别维护黑白森林,改变点的时候就把所有出边linkcut一下然而菊花图可以随便卡被卡的关键在于这个算法是以点的出度为时间复杂度瓶颈的,所以考虑一个和点的出度无关的算法树有一个性质,每个点可以有很多个儿子(上面那个算法被卡的关键),但是只有一个父亲(下面这个算法的实现基础),所以我们link cut只考虑一个点和其父亲的...

2019-03-14 18:27:29 127

原创 [BZOJ4817][LCT][线段树]SDOI2017:树点涂色

BZOJ4817分析:仔细看一下第一个操作像什么(看标题)那么我们在access的过程中把点x的原来的实儿子的子树权值+1,新的实儿子的子树权值-1(可以画图感性理解一下,挂在x下面的权值会+1,新的子树权值会-1)然后第二个操作就维护一个dep第三个操作就是查询子树dep最大值那么开一个线段树维护dep,用树上两点间距离公式来求就好了P.S.大家code的时候一定记得随时ctrl+s...

2019-03-14 15:36:42 97

原创 [BZOJ3091][LCT]城市旅行

BZOJ3091LCT简单题计算期望比较简单吧,都是平衡树基操但是BZOJ算总时间过了,单点有的我要跑1.5sCode:#include&lt;bits/stdc++.h&gt;#define ll long longusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;...

2019-03-14 11:04:03 264

原创 [BZOJ4522][pollard rho][exgcd]CQOI2016:密钥破解

BZOJ4522又来做愉快的板子OI题面很复杂啊,但是读完题就会发现我们只需要求几个线性同余方程的解和质因数分解一个最大为2622^{62}262的数(保证此数等于两个不等质数p,q之积)如果你不会线性同余方程请出门右转NOIP专区如果你不会分解那个巨大的数(不好意思我做这题之前也不会 )请去了解一下pollard rho算法zxyoi的讲解link:https://blog.csdn....

2019-03-13 19:12:26 140

原创 [BZOJ3252][长链剖分]攻略

BZOJ3252长链剖分之后把每条长链拿出来然后排个序选就完了Code:#include&lt;bits/stdc++.h&gt;#define ll long longusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=...

2019-03-12 09:13:45 195

原创 [BZOJ3653][长链剖分]谈笑风生

BZOJ3653我也不知道题面的引申意义发现可以求出以每个点为p时的ans,讨论一下祖先和子孙的贡献,用长链剖分维护就好了Code:#include&lt;bits/stdc++.h&gt;#define ll long longusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); whil...

2019-03-12 09:11:47 300

原创 [COGS][长链剖分]秘术(天文密葬法)

没有传送门题意:你有一棵有n个点的树,每个点有两个权值ai,bi,请找出一条长为m的路径,使得ans=∑ai/∑bi最小,若没有长度为m的路径输出-1解法:明显的分数规划,二分后问题转化为求有没有一条长度为m的路径的权值和使∑ai−mid∗∑bi\sum{ai}-mid*\sum{bi}∑ai−mid∗∑bi≤0\le0≤0就可以长链剖分了Code:#include&lt;bits/st...

2019-03-11 16:01:56 434

原创 [CF226D][构造]The table

CF226D就暴力找需要改的那一行(列),一定会在1e6次前找到Code:#include&lt;bits/stdc++.h&gt;using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;ch=getchar();} w...

2019-03-11 10:10:22 127

原创 [BZOJ4813][贪心]CQOI2017:小Q的棋盘

BZOJ4813很明显,走过的点可以走回去,需要花费2的代价,我们第一次贪心地走最长链,可以发现剩下的步数都肯定用在走到某个点再回来上面,所以就把剩下的除以个2再加上最长链长度就好了为什么一个O(n)O(n)O(n)的题给的数据范围是1000???Code:#include&lt;bits/stdc++.h&gt;using namespace std;inline int read(...

2019-03-10 17:42:49 119

原创 A summary

romiqi是一个高一scoier,现就读于cdsszx虽然有提前学过一点OI,但是并没有学很多(ldxoi和我学的时间一样久,然而她 他一直处于全面碾压我的状态)Part 1:我从初中过渡到高中的OI之路,无疑是一次艰难的蜕变过程初中的时候,都是每天水水普及组题,遇到难题懒得想,每周6h的学习时间确实没用,因为主要的精力都在文化课上(觉得初中搞竞赛没什么必要)中考还算取得了比较满意的成...

2019-03-09 09:05:19 234 1

原创 [BZOJ5316][计算几何][网络流]JSOI2018:绝地反击

BZOJ5319一个比较好想的暴力:二分答案,然后把每艘飞船的能到达的距离算出,是一个圆,把所有圆和攻击轨道求交,相交这段弧和多边形顶点可以匹配,可以发现一定有个多边形顶点在某个交点处那么就枚举这个顶点,然后(O(n2))(O(n^2))(O(n2))连边,跑dinicdinicdinic是O(ee)O(e\sqrt e)O(ee​)总复杂度O(n4logn)O(n^4logn)O(n4l...

2019-03-08 15:17:53 200

原创 [BZOJ5319][主席树]JSOI2018:军训列队

BZOJ5319首先,不动就可以站到队里面的人肯定不动在集合点左边的人依次从左往右排右边的人从右往左排距离的计算有个绝对值不好去掉,但发现把休息点排序后满足单调性,就可以在主席树上二分了Code:#include&lt;bits/stdc++.h&gt;#define ll long long#define ls tr[k].l#define rs tr[k].r#define...

2019-03-08 10:57:39 136

原创 [BZOJ5317][凸包][闵科夫斯基和]JSOI2018:部落战争

BZOJ5317闵科夫斯基和模板题吧,求出闵科夫斯基和然后判断每个询问在不在里面就好了JSOI2018就比较好,有简单一点的题也有难题,比较均衡Code:#include&lt;bits/stdc++.h&gt;#define db double#define ll long long#define eps 1e-11using namespace std;inline int ...

2019-03-08 09:58:34 214

原创 [BZOJ5314][树形背包]JSOI2018:潜入行动

BZOJ5314sb树形dp如果你做JSOI了还做不来这个(复杂度不会证就算了,我也不会,好像是O(nk2)O(nk^2)O(nk2))你就该去反思一下了Code:#include&lt;bits/stdc++.h&gt;#define mod 1000000007#define ll long longusing namespace std;inline int read(){...

2019-03-08 08:07:59 147

原创 [BZOJ5287][虚树]HNOI2018:毒瘤

BZOJ5287题面说了那么多,其实就一句话:一棵有不超过十条非树边的树,选一个节点就不能选与之相连的节点,求选的方案数如果没有非树边,就是个sb树形dp有非树边呢?可以暴力枚举选不选非树边的端点,然后每一种情况树形dp一次复杂度爆炸因为非树边很少,所以这不是明摆着用虚树吗预处理出虚树上每个节点对其父亲的贡献,然后就可以爆搜了Code:#include&amp;amp;lt;bits/stdc++...

2019-03-07 21:53:40 162

原创 [BZOJ5329][tarjan][圆方树][虚树]SDOI2018:战略游戏

BZOJ5329一眼就看出这样的点是割点然后发现在图上并不好做,又和tarjan有关,所以搞个圆方树出来然后就可以dp了询问有点多,但是发现∑∣s∣≤2∗105\sum{|s|}\leq2*10^5∑∣s∣≤2∗105,想到了什么(看标题)Code:#include&lt;bits/stdc++.h&gt;using namespace std;inline int read(){...

2019-03-07 16:24:48 160

原创 [BZOJ5328][扫描线][set]SDOI2018:物理实验

BZOJ5328很明显的旋转坐标然后用set维护扫描线离x轴最近的两条线段要开long doubleCode:#include&lt;bits/stdc++.h&gt;#define ll long long#define db long doubleusing namespace std;inline int read(){ int res=0,f=1;char ch=get...

2019-03-07 09:30:10 190

原创 [BZOJ5292][概率DP]BJOI2018:治疗之雨

BZOJ5292实在是对概率不感冒膜了一下学姐scarlyw的题解不过学姐的fff那里写错了吧,第二个括号里应该是1m+1\frac{1}{m+1}m+11​Code:#include&lt;bits/stdc++.h&gt;using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(...

2019-03-06 16:11:24 109

原创 [BZOJ5291][线段树]BJOI2018:链上二次求和

BZOJ5291一看就知道要维护一堆前缀和推了一会发现还有前缀和的前缀和sumsumsum为前缀和,ssumssumssum表示前缀和的前缀和要求∑i=lr∑j=insum(j)−sum(j−i)\sum_{i=l}^r{\sum_{j=i}^{n}}{sum(j)-sum(j-i)}i=l∑r​j=i∑n​sum(j)−sum(j−i)=∑i=lr(ssum(n)−ssum(i−1)−...

2019-03-06 09:13:24 205

原创 [BZOJ2361][LCT]tree

BZOJ2631练习一下打标记LCT**要用UNSIGNED INT!!!!!!!!!!!LONGLONG 要T**Code:#include&amp;lt;bits/stdc++.h&amp;gt;#define int unsigned int#define mod 51061using namespace std;inline int read(){ int res=0,f=1;ch...

2019-03-05 20:32:47 119

原创 [BZOJ5293]BJOI2018:求和

BZOJ5293你都做BJOI了你会做不来这道题?Code:#include&lt;bits/stdc++.h&gt;#define mod 998244353#define ll long long#define int long longusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar()...

2019-03-05 17:54:25 151

原创 [BZOJ3669][LCT]NOI2014:魔法森林

BZOJ3669LCT板子题吧用类似于kruscal的想法,先对a排序加边,然后每次加入如果连通了两个连通块就直接加如果已经连通就查询一下原来的路径上的最大值删去就好如果某一步操作下1和n已经连通就更新答案Code:#include&lt;bits/stdc++.h&gt;using namespace std;inline int read(){ int res=0,f=1;c...

2019-03-04 19:57:21 116

原创 [BZOJ2002][LCT]HNOI2010:弹飞绵羊

BZOJ2002LCT板题:新建结点,如果被弹飞就把边连到这个点上然后就是简单的模板了Code:#include&lt;bits/stdc++.h&gt;using namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-f;ch=g...

2019-03-04 16:45:56 91

原创 [BZOJ5308][ST表]ZJOI2018:胖

BZOJ5308因为城墙是一条直线,所以很容易看出我们只需要考虑城堡到城墙的路那么关键是求出一条城堡到城墙的路的贡献把一条路的终点向左右走的边界拓展出来,然后用ST表辅助查询就好了Code:#include&lt;bits/stdc++.h&gt;#define ll long longusing namespace std;inline int read(){ int res=...

2019-03-04 10:03:03 193

原创 [CF1009F][长链剖分]Dominant Indices

CF1009F长链剖分模板题定义f[i][j]为子树i中到i的距离为j的点的个数然后就是套路了长链剖分简单讲解:按照dep划分重儿子(称作长儿子有点奇怪)然后合并信息的时候先直接继承重儿子信息,然后暴力合并轻儿子信息因为一个点只会在一条长链中,一条长链只会被合并一次,所以是O(n)O(n)O(n)的空间开不下?动态分配内存Code:#include&lt;bits/stdc+...

2019-03-01 17:21:38 163

原创 [BZOJ5289][贪心]HNOI2018:排列

BZOJ5289膜了一下PIPIBOSS的题解我觉得我自己描述的都没有他好所以就贴吧:首先注意到实际上约束关系构成了一棵树考虑这个排列 pp,编号为 a[i]a[i] 的出现了,ii 才可以出现那么如果连边 (a[i],i)(a[i],i),就会构成一棵以 00 为根的树,每一个点只有一个父亲否则就不合法因为要父亲被选入,这个点才能被选入,所以排列 pp,相当于是这棵树的一种合法的...

2019-03-01 16:15:26 92

原创 [BZOJ5290][树形DP]HNOI2018:道路

BZOJ5290这题。。。我还以为是什么玩意,结果不是按难度顺序排的简单dp,f[i][j][k]f[i][j][k]f[i][j][k]表示iii点向上走jjj条铁路kkk条公路的最小代价Code:#include&lt;bits/stdc++.h&gt;#define ll long longusing namespace std;inline ll read(){ ll re...

2019-03-01 14:47:16 108

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除