自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(153)
  • 收藏
  • 关注

原创 Runaway to a Shadow 幅角相关函数的运用的板子

atan2(y,x):表示点(x,y)的方位角,值域(-pi,p],想跟高中几何象限定义统一就加个pi,asin,acos返回值都可以用作角度来在方位角上加减,在这基础上就可以很方便地算三角函数了//#include<bits/stdc++.h> #pragma comment(linker, "/STACK:1024000000,1024000000") #include&...

2018-03-14 01:13:37 378

原创 分块模板

#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algorithm> #include<queue> #include<string.h> #i...

2018-03-08 16:41:51 1000

原创 Proud Merchants HDU - 3466 贪心背包的证明

做状态更新是使用[ qi - pi , m - pi ]去更新[ qi , m ],对于第i个物品前者是利用域,后者是更新域。当m足够大,两个区间会产生相交,这段相交会更新在从dp[m]向前一段等长上,更新为为w1+w2先1的交区间是[ q1 , m - p2],先2的交区间是[ q2 , m - p1 ],考虑m越来越小,两张图上两个区间右端点都在左移如果有q1-p1<q2-p2,显然第二...

2018-03-08 15:59:07 197

原创 739B - Alyona and a tree倍增+差分

发现cf文本读确实变快了,但是用了快读树剖还是过不了2e5,好像常数大了4?后来才想起来这是离线的树链改值,差分就行了跪了的树剖:#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algo...

2018-03-07 20:01:21 212

原创 Lost Cows POJ - 2182 树状数组+倍增

需要用树状数组维护01序列前缀和,并且查找某个位置的前缀和是k,也就是前面有k个1这个可以用二分,两个log,但是用倍增就是一个log不得不说树状数组和倍增的相性真的很好,倍增到的节点维护信息与上一级完全没有重合譬如说跳8可以跳到8,跳4的时候如果可以跳12直接加上c[12]就可以,因为c[12]维护的是c[9]到c[12]#include<bits/stdc++.h> //#pr...

2018-03-04 17:23:18 433

原创 并查集负值根表集合大小的写法

这个写法就能高效查集合大小了const int maxn=1e2+43;int fa[maxn],n;void init(){for(int i=1;i<=n;i++)fa[i]=-1;}int find(int x){ if(fa[x]<0)return x; fa[x]=find(fa[x]); return fa[x];}void unite(int x,in...

2018-03-04 15:22:40 196

原创 [Poi2011]Tree Rotations线段树合并

整理一下线段树合并的思路,大体是给每个树上节点分配一个根编号建一棵log长的权值线段树,一开始树上只有这个树节点的节点权merge两个树节点的时候,对于当前合并的值域(例如两棵线段树的表示1到n/2的节点),任意取两棵树中的一个节点编号,空的返回另一个,把树丰满起来,同时更新一下计数就可以了#include<bits/stdc++.h> //#pragma comment(link...

2018-03-02 00:21:40 184

原创 [Usaco2017 Jan]Promotion Counting 线段树合并模板/dfs序

两种做法,因为是求整个子树的值域问题所以可以按dfs序把进点和出点的数量作差#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algorithm> #include<que...

2018-03-01 22:30:33 191

原创 BZOJ4727: [POI2017]Turysta tarjan/竞赛图哈密顿

首先竞赛图保证是一定有哈密顿路径的,强连通的竞赛图一定有哈密顿回路竞赛图求每个点的最长链,不重复经过点思路就是对每个scc求出哈密顿回路,再按拓扑序n^2dp一下哈密顿路径和哈密顿回路的构造法看的这篇文章Bfk_#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #...

2018-02-28 20:36:45 273

转载 【POJ Challenge】生日礼物 加强m子段和

还是链表跟二叉堆的双映射//#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algorithm> #include<queue> #include<str...

2018-02-24 11:02:20 181

原创 BZOJ2351: [BeiJing2011]Matrix 行列哈希

ull的读写用%llu,二维哈希跟二维前缀和是一个方法//#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algorithm> #include<queue> ...

2018-02-22 12:18:16 229

原创 Tree 倍增

每个节点有重量,询问节点的祖先序列中最长重量递增序列长度赛中写的倍增没调出来,感觉这种从指数最大到最小枚举做倍增的方法也不错比之前那个从每次都从低位开始凑的更快//#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> ...

2018-02-16 02:31:00 175

原创 NUMBER BASE CONVERSION POJ - 1220 进制转换/模拟除法

给a进制下的x,求x的b进制表示考虑20(10)→(3)20/3=6余2,那么3^0位记录2,接下来考虑用3^1位表示6整体像是一个递归,把原数字不断除以b,每一轮余下的数字作为这个深度的余数最深一层也就是除以b最多的一层是最高阶的余数,按阶从高向下写余数就是b进制的x表示//#include<bits/stdc++.h> //#pragma comment(linker, "/S...

2018-02-15 17:19:30 215

原创 Raid POJ - 3714 分治最近点对模板

复杂度大约是nloglog//#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algorithm> #include<queue> #include<st...

2018-02-11 17:59:30 275

原创 Genius ACM HihoCoder - 1384 倍增/归并排序模板

倍增可行长度和直接二分都可以保证对于每个左端点至多log次找到最远右端点但是倍增的过程中所需要计算的长度是从小逐渐变大的,而且可以利用前一步倍增的有序数组做一轮归并,整体就比直接二分右端点所需要计算的长度快一个log//#include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #

2018-02-06 00:20:53 402

原创 BZOJ1500: [NOI2005]维修数列 Splay维护序列

//#include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include

2018-02-06 00:13:30 191

原创 BZOJ3245: 最快路线 拆点dijkstra

150个点,500种速度,乘起来大概8e4个点,3e4的边其他题解写的基本都是spfa,想想dij也能做,还挺快#include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include

2018-01-17 16:39:55 258

原创 存个头

#include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #

2018-01-08 21:54:16 167

原创 895E - Eyes Closed 线段树维护区间线性变换 好题

考虑左区间中的任意数x,令len1为左区间长度,sum1为左区间的期望和经过操作1,x的期望会变为x*(len1-1)/len1+sum2/len2*(1/len1)这个变化相当于y=kx+b,因此可以用线段树维护乘法和加法要注意的是pushdown的时候子节点的加法受到父节点乘法的影响#include //#pragma comment(linker, "/STACK:1

2017-12-07 20:09:25 303

原创 894E - Ralph and Mushrooms 缩点/dp

想出正解之后感觉不太会缩点,今天学了一下tarjan,发现就是遍历边。。tarjan只是过程,存反向边dfs两次分解scc也能做#include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #includ

2017-12-07 16:40:10 174

原创 tarjan缩点/求桥模板

这么一看缩点用tarjan也没必要啊,用之前那个存反向边dfs两次的做法就行了缩点过程就是遍历边,两侧不同scc就加边#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algorithm&...

2017-12-07 15:39:21 209

原创 895D - String Mark 组合计数

给你串a串b,问用a的排列生成新串c满足字典序a问题转化成问f(s),表示用已有字符构建的字符串字典序上小于s,答案就是f(b)-f(a)-1这样一转化就不用枚举两个字典序变化点了。。然后i枚举字典序变化点,j枚举字符集由于字典序变化点越靠后贡献越小,所以维护一个cur表示当前可用字符的排列法,去重后的每当决定一个字符,cur就要除掉剩下字符的个数,在乘上这个要用的字符的个数

2017-12-06 01:58:42 299

原创 895C - Square Subsets 状压DP

div2从没这么接近过rk100以内的水平。。想到了奇偶性质模二的素因子表,想到了dp第一维逐渐添加数字,第二维枚举1奈何第一维默认了是1-n,算下来复杂度1e10从而卡手做不下去没完整做出来挺遗憾的吧#include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include

2017-12-05 02:21:55 152

原创 BZOJ1818 [Cqoi2010]内部白点 扫描线/线段求交

毫无头绪。。hint了一波瞄到了用扫描线做线段求交想了想开始码。。过样例之后谜之wa估计是加line的时候没把点做第二维排序,line不是一段一段进去的,加上就过了//#include #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #includ

2017-12-02 17:33:38 232

原创 BZOJ2330 [SCOI2011]糖果 差分约束模板

很久以前学的差分约束,基本忘了,复习一下aa>=b+c,ins(b,a,c)是最长链,每个元素最小#include #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #includ

2017-12-02 08:43:59 291

原创 BZOJ1614 [Usaco2007 Jan]Telephone Lines架设电话线 二分/魔性剪枝/最小边长连通

拿到手感觉是二分。。就瞎搞了搞,用并查集维护连通关系,bfs搜了搜,加了一大堆魔性剪枝,调了一年就过了正解是二分之后最短路。。超mxlen的长1不超为0。。我是正解的两倍慢&&两倍长←_←#include #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include

2017-12-02 01:21:32 230

原创 BZOJ1040 [ZJOI2008]骑士 环套树/dp

借题区别了一下环套树和仙人掌常见做法是拆环,可双边+环的设定使得邻接表拆边做题体验极差。。4条边或者2条边难以区分,难以表现出边的封堵。。挣扎改了好久最后还是向链式前向星低头。。//#include #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #includ

2017-12-01 22:05:15 183

原创 3-idiots HDU - 4609 FFT模板

给N个木棍问任选三个可组合出三角形的概率以前写的,整理整理存个档//#pragma comment(linker, "/STACK:1024000000,1024000000") //#include#include#include#include#include#include#include#include#include#include#includeus

2017-11-30 15:42:22 187

原创 2017南宁现场赛E 存档

现场时间不够,没加记忆化T了,滚cu当时还写错了mx1,mx2的关系。。。出场喜闻乐见有人加记忆化传参递归过。。这份代码未必是正解,等到放上hdu交上去试试吧。。#include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #inc

2017-11-28 21:54:20 265

原创 BZOJ1056 [HAOI2008]排名系统 treap实现map

需要的功能:①更新一个字符串对应的最新分数②获得一个字符串对应的最新分数③获得平衡树中第几名hint是哈希,感觉没什么头绪。。题解存下了字符串和一个哈希内存池,用链式前向星处理hash冲突,用时间戳作为第二比较关键字,在分数相同时检索时间戳具体来说就是在查询一个字符串时,先在哈希内存池顺着前向星用字符串匹配找到时间戳,再用分数和时间戳的关键字从treap中找到对应信息(

2017-11-28 21:13:17 204

原创 线段树区间加板子

#include#include#include#include#include#includeusing namespace std;#define maxn 101000#define maxq 101000int Sum[maxn << 2];int Add[maxn << 2];int n, t, q;int a, b, c;int ans;void push

2017-11-24 00:22:35 253

原创 BZOJ1015: [JSOI2008]星球大战starwar

要求支持图上的动态删点&&维护联通块个数似乎这个要求4e5个点不太可做。。正解是离线下来之后倒序用并查集加点。。。长见识了#include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #inc

2017-11-22 23:29:57 224

原创 894D - Ralph And His Tour in Binary Country 完全二叉树点对计数

打完模拟被xz忽悠去码,粗略听了一波题解之后开始搞总体感觉自己码力确实有进步了。。起码遇到啥问题了会找地方改,改啥肯定能出想要的效果。。好像别人的代码都很短啊?我感觉自己这版写的逻辑挺清楚的。。就是长了点。。一点一点实现自己脑内搭建的逻辑还是挺愉快的。。//#include //#pragma comment(linker, "/STACK:1024000000,10240

2017-11-22 03:28:28 215

原创 Codeforces Round #367 (Div. 2) Vasiliy's Multiset 异或字典树带删除模板

多重集版的异或字典树,拿之前的板子改改就交了莫名wa7,回忆一波代码意义之后感觉没问题啊读读题发现这个多重集里居然永远有0。。。赛中debug出来还是挺开心的

2017-11-22 03:19:52 163

原创 Codeforces Round #446 (Div. 2) D

讨论版提供的一个思路,感觉挺好的Yes, and it's easy to prove. Let's consider for convenience the permuted arrays a and b:a1a2a(N-1)aN^ ^ ^ va2a3aN >a1If we take any subset that doesn't co

2017-11-18 03:33:11 162

原创 BZOJ1067 [SCOI2007]降雨量 模拟/线段树/map经验书

从知道x,y能是没出现过的我就知道GG了学到了max_element以及map的一些坑map的lower_bound熟练度++#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define ll

2017-11-15 23:57:03 235

原创 BZOJ1087 [SCOI2005]互不侵犯King 状压DP

参考自き9*9的棋盘问能放多少互不攻击的国王。。这种预处理状态间能否转移的做法还是第一次见(naive不过用位运算判转移可能性在当状态大存不下没法预处理的时候也不算慢。。?左右移位判重合挺巧妙的。。。#include#include#include#include#include#include#include#include#include#includ

2017-11-14 20:46:32 143

原创 unique离散化用法

用法类似lower_bound,sort,不过下标从1开始的话和lower_bound减去的东西不一样用来离散化很好用pos就是在原数组a中的rank了,根据cnt建线段树啥的。。。 sort(a2+1, a2+1+n); cnt = unique(a2+1, a2+1+n) - (a2+1); FOR(n) { int pos = lower_bound(a2+

2017-11-13 15:41:21 550

原创 BZOJ1295 [SCOI2009]最长距离 智商

大体就是给一个01矩阵,1不可通行,可以破坏k[0,30]个1方格,问最长欧式距离脑洞1小时没啥想法。。给正解跪。。居然是跑破坏方块的最短路,然后枚举点对更新答案,只要点对的最短路距离naive!#include#include#include#include#include#include#include#include#include#include#inc

2017-11-11 21:58:33 150

原创 BZOJ4017 小Q的无敌异或 好题

给一个序列询问这个序列1:所有子区间的异或值的和2:所有子区间的和的异或值第一个操作,拆二进制位,枚举右端点r,记录这个位前r个数字0/1的个数,右端点转移O(1)第二个操作比较复杂,对于每个右端点要询问sum[r]-sum[l-1]mod(2^(k+1))>=2^k的左端点个数(的奇偶性)题解用了树状数组维护,参考skywalkert,题解里对于模不等式的解释很巧妙,复习

2017-11-10 00:47:03 694

空空如也

空空如也

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

TA关注的人

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