自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2017.9.23 Count on a tree 思考记录

这个题就是把区间第k大搬到了树上、、于是想到链剖、但链剖是要支持区间合并的,第k大显然不可以合并,那怎么办呢所以就可以容斥,,把所有重链起点终点用两个rt截下来,再把每个+和每个-离散下来,然后由于主席树查找是logn的,离散的点最多有logn对,所以复杂度是(2*nlog^2n)  可以卡过、网上的题解是dfs序。。感觉dfs序好想比较神奇,,但已经不知道用多少链剖水过d

2017-09-23 17:41:06 152

原创 2017.9.23 循环格 思考记录

终于不是失败总结了,这个题其实还是很好分析的,由于每个格子只有一个方向,所以可以考虑每个格子选取唯一的哪个方向(其实很多网络流的题都隐含1的条件,找到1的条件限制网络流就好想了)然后就是自带的方向费用是0,修改的方向是1,限制每个点的流入流出,跑完mcmf就是答案了、码:#include#include#includeusing namespace std;#d

2017-09-23 09:26:26 174

原创 2017.9.22 middle 失败总结

神题三连跪。。思路特别玄妙,,首先要想到二分、、当然这种求特殊数字的题二分确实是比较好想到的但检验似乎是nlogn、、、、似乎不如开桶暴力?,而且区间是变动的,,似乎还要枚举所以想到这就不敢二分了。所以这时候就需要用到一些类似分类讨论的思想,将区间拆成三部分,左区间,中区间,右区间中区间一定全部参与中位数的选举左区间?选右边开始往左选右区间?选左边开始往右选由于

2017-09-22 23:11:39 194

原创 2017.9.22 小约翰的游戏John 失败总结

第一次正式接触anti-sg、、惨到暴力都不会、这里的胜负条件相反不是简单地将胜负取反,它的胜负局面的判断是不一样的、所以如果第一次碰到这种题就手玩找规律吧,,毕竟这可以说是一个结论题:如果sg==0 且 有石子堆石子个数数>1或 sg>0且 所有石子堆石子个数则先手赢、、博弈的证明太难了码:#include#includeusing namespa

2017-09-22 17:03:37 514

原创 2017.9.22 松鼠的聚会 失败总结

首先切比雪夫距离是不支持离散的,所以想要排序on的算法必须将其转成可以离散的计算方法。。这个题要求的是切比雪夫距离和、、而他竟然可以转化成曼哈顿距离、曼哈顿距离:  max(y-yy+x-xx,y-yy+xx-x,yy-y+x-xx,yy-y+xx-x )切比雪夫距离:max(y-yy,xx-x,yy-y,x-xx)然后观察二式特点,设 x=x+y  y=x-y,,

2017-09-22 11:14:54 375

原创 2017.9.21 problem a 失败总结

zz到怀疑人生、这种要求规划决策取最大方案的题不应该很快想到dp二分网络流吗、怎么还在乱搞、首先做这种题需要把题目中的抽象的信息量化首先简单容斥:取说真话最多的(←而已经好几次无视简单容斥了)然后一个人说的话可以这么理解:1、如果它判定为真,则剩下的左右位置已经确定,,注意和他本身相同的数也已经确定2、如果比他小比他大的数加起来>=n,一定是假但知道这一些是基本没用的,

2017-09-21 20:04:40 174

原创 2017.9.21 紧急集合 思考记录

、这个集合点的选取一定有规律吧,于是秒猜结论:集合点一定在至少两个点的lca上其实这是很显然的,因为如果不在两个点的lca上,那一定至少要花费2个点的移动而减少1个点的移动,这一定是不值的、由于多次被卡rmq空间的经历所以就老老实实地写链剖lca了。。码:#include#include#includeusing namespace std;#define N 50

2017-09-21 15:35:40 247

原创 2017.9.21 道路修建(noi2011) 思考记录

这个题,,dfs即可但听说dfs会爆栈,还会被卡、所以就写了一个拓扑、noi2011很良心啊码(不知为何,非常的慢):#include#includeusing namespace std;#include#include#define N 1000006#define ll long longqueueq;int bian[N][3],tot,

2017-09-21 10:40:23 299

原创 2017.9.21 所驼门王的宝藏 思考记录

、并不知道哪里错了,所以就在错误的地方打了个表、、、如果所有的点都在横移,那建边就是n^2的所以就建一个点,向其他点连边,如果有横移就直接连然后tarjan缩点,注意虚拟点是没有贡献的,所以sz为0然后拓扑即可,但不知为何会wa一个点、还和答案相差1、用压位处理map十分zz爆空间被迫重复用更zz码:#include#include#include#i

2017-09-21 10:04:35 220

原创 2017.9.20 回文串 思考记录

这个题官方解法是 manacher+sa、但pam诞生之后这个题就变成了模板题。。事实证明,科技是第一解题力网上的pam讲解感觉很迷啊,,核心思想一张图就搞定了:黑色箭头就是指向以右端点为结尾的小一些的回文串调到如果重的就++没有的就新建,再画新建点的箭头pam实现起来有一个很神的技巧:len[1]=-1;这样正常匹配到1就是失配num计

2017-09-20 19:35:08 154

原创 2017.9.20 cheat 失败总结

。。不知道是太不熟练还是题目太难,这个题竟然没有什么想法、想到了二分,但二分的条件是>=,就感觉检验的不太方便、然后才发现 这个检验是需要dp的、、还可以优化所以dp是万能算法、、 f【i】表示前i位中最多可以匹配多少个 这样就有一个上下界,用枚举断点转移就写出dp了:  f【i】=max(f【i-1】,f【j】+i-j)也可以归为i一类,j一类,就可以单调队列了下界就是二

2017-09-20 14:10:10 190

原创 2017.9.20 mode 思考记录

这题卡数组的空间、就只能往比较上想由于要求的数超过一半,所以以一换一是还会有余剩的所以就每次用不同的两个数互删,到最后 众数一定留在桶里码:#includeusing namespace std;int tong=1,i,tzds,n,a;int main(){scanf("%d",&n);for(i=1;i<=n;i++){ scanf("%d",&a);

2017-09-20 07:14:01 245

原创 2017.9.19 L语言 失败总结

写了一个下午+半个晚上好不容易调出来然后只有50分之后改了又错、错了又改之后发现自己写的是错的、、这个题出的太刁钻了,万万没想到这个题是卡2e7的时限题、所以可以暴力找每个点往后的匹配情况、、、、、、、就没了,而且很快。。  这数据范围有毒   以后看看数据范围猜了、码(一开始写了180+行):#include#include#includeusing names

2017-09-19 20:31:01 383

原创 2017.9.19 Gcd 思考记录

一开始想错了        有时候还是要用欧拉函数的。。    用反演的话需要提取质数,比较麻烦,先利用初中奥数分成gcd和两个质数,然后剩下的就是互质了设i=gcd*a ,  j=gcd*b      , b>a所以ans=   phi(2/2)+phi(4/2)+phi(6/2)+...phi(n/2)     +     phi(3/3)+phi(6/3)+p

2017-09-19 14:12:30 478

原创 2017.9.19 禁忌 失败总结

这题一上来还以为是矩乘dp、、然而它要求的是最大值的期望,所以没有什么思路然后原来可以ac自动机上转移、其实n这么小就完全可以考虑拆到ac自动机里,然后就变成了图上期望问题所以题目就变成了求从s点出发,走len步的期望权值和所以只有作为词结束的点到答案点的权值为1,其他皆为0所以我们就要算出从s走len步到达答案点的期望权值和可以根据边构造矩阵,  自乘来表示走一次(类似矩

2017-09-19 10:05:29 411

原创 2017.9.18 鬼谷子的钱袋 思考记录

、、要表示所有m个数,就首先考虑递推1个的一定有一个是12个的一定有一个是23个的一定不用4个的一定有一个是4...8个的一定有一个是8...就是二进制、没了(送分结论题)码:#include#includeusing namespace std;int ans,n,i;int main(){ scanf("%d",&n); for(i=1;i

2017-09-18 20:29:56 657

原创 2017.9.18 HH的项链 思考记录

莫队模板题、、以前还有一个队列的做法,但似乎莫队更直观注意:空间大小cmp函数n、m不能混码:#include#include#include#includeusing namespace std;int sy[100005],kuai,ksh,v[100005],tong[1000005],ans,n,m,i,l,r,daan[200005];

2017-09-18 16:03:57 396

原创 2017.9.18 数颜色 思考记录

这个题暴力是不是可以过啊,感觉卡卡常数问题不大、做这个题需要主席树套树状数组或带改莫队,,处于经济考虑,于是学了带改莫队其实差不多,主体和普通莫队基本一样,就是多了对修改的暴力处理、、把修改次数作为第三关键字,放到sort里就好了码:#include#include#include#includeusing namespace std;#define N 10

2017-09-18 14:36:28 536

原创 2017.9.18 calc 失败总结

这种题十分的不可做、题目极短,数据范围极大,条件匪夷所思这种求整除数对数量的题多半是反演,就尽量往gcd上靠,然后利用初中奥数的代数法可得到:所以可以根n枚举p,分解出p的所有因数再枚举q,用因数套mu函数统计贡献即可、码:#include#include#include#define ll long longusing namesp

2017-09-18 08:58:28 481

原创 2017.9.17 kamp 思考记录

一开始读错题了,以为只有一个座位、首先,通过从一个点出发,它走过的路径是一个半环,如果把半环补上,那所有的环上的点答案都一样对于不在环上的点,它一定是沿树上路径到达环上的点所以剩下的问题就是求每个点的最远点于是就可以用树dp的思想来统计max1【i】表示i这个节点到子树的最远点及距离max2【i】表示i这个节点到子树的次远点及距离为什么要统计次远点?因为不能折返,所以离

2017-09-17 17:23:15 207

原创 2017.9.17 function 思考记录

这题一眼是奥数题、十分不可做然后感觉它应该是结论题然后手玩了几组小数据,之后发现似乎有规律:  2、 4、 6、 8、 10、这规律也太**了。然后打了三行,就过了、这结论竟然猜对了,这题出到省选有毒啊其实也好想,因为每新加一条直线,必然会对前n条直线夹成的区间在两端多出两条直线,而如果直线在每个交点的上方,是不会影响下面的直线相交情况所以如果是奇数条,必然有直线和k在

2017-09-17 10:40:46 192

原创 2017.9.17 选数 失败总结

这题做了好久,主要是老想找到式子解决问题,忽略了容斥以后像这种约束条件比较单一的一定要考虑容斥‘然后就是枚举倍数做递推了,,f【i】表示最大公约数为i的数对有几个然后枚举倍数减掉就行了注意相等的情况要提出来,不然就需要10^9枚举公约数码:#include#includeusing namespace std;#define P 1000000007int

2017-09-17 09:57:06 292

原创 2017.9.17 相关分析 思考记录

想不明白考场上怎么爆零了、可能太自信了     基本用初中的数学就可以把式子化成要维护的东西,x^2,x*y,x,y    然后就计算就行了注意:   循环变量作为取值需要long long               不要太自信               不对拍就不要交码:#include#includeusing namespace std;#d

2017-09-17 09:30:43 232

原创 2017.9.15 最大数maxnumber 思考记录

数论太难了,就水水结构都是splay的基本操作,维护最大值和size即可插入时直接找右子树查找时往左边找数据结构不对拍就不要交(奇奇怪怪的错误)注意:区间合并时要考虑自己这个节点码:#include#includeusing namespace std;#define N 200005 int sz[N],ch[N][3],maxx[N],ma

2017-09-15 09:19:06 306

原创 2017.9.14 星际竞速 失败总结

这个题就是要选一些边,覆盖所有点,并且边的权值和最小然后这是一开始建的图:有如下问题:1、变数太多2、最大流不满足问题性质为了解决2,我们必须让每一个方案都满足最大流的条件原图的问题是:想用一条流量干和许多流量等价的事(一条流量流1、 2  一条流量流3),那必然会导致最大流和方案是不协调的所以我们必须让一条流量 干有且仅有一个事这样最大流就和方案等价了

2017-09-14 18:57:31 503

原创 2017.9.14 仪仗队 思考记录

似乎只要会了莫比乌斯反演就不用会phi了、感觉反演更顺手、码:#include#includeusing namespace std;#define N 40005int mu[N],i,j,n,tot,ans,su[N];bool he[N];void eular(){ mu[1]=1; for(i=2;i<=n;i++) { if(!he[i]) { s

2017-09-14 14:36:21 270

原创 2017.9.14 棘手的操作 思考记录

mdzz,手残没法治一开始想按编号顺序用splay维护最值,但没法查找然后想用线段树启发式合并,然而空间会爆由于连接之后的连通块顺序没有关系,所以可以考虑并查集来表示区间,然后就可以用线段树维护了(坚决不写左偏树)注意:1、统计并查集一定找父节点,不要扫(因为集合和编号顺序没关系)2、标记有时可以是负值,不要zz的写>03、开对空间码:#incl

2017-09-14 10:46:17 154

原创 2017.9.14 dispatching 思考记录

看发表时间不知道的以为是美国人这个题是要求出一个点作为管理,那我们就可以枚举这个点然后再在他的子树中从小到大累加,统计个数,知道>m为止由于涉及到维护大小、这种大小关系的合并,所以我们考虑splay以及splay启发式合并于是就用splay维护size、点的花费,splay子树的花费和注意空间重复利用,不然开销是nlogn的,会mle没卡nlog^2n十分良心splay

2017-09-14 00:36:41 165

原创 2017.9.13 序列维护 思考记录

终于不对拍1A线段树了、太不容易了虽然这题挺裸的,记住先乘后加的原则就可以搞了注意位运算和取模的优先级,不要乱了,注意代码的位置问题码:#include#includeusing namespace std;#define zuo o<<1,l,mid#define you o<<1|1,mid+1,r#define lnl long long#define N

2017-09-13 19:31:38 252

原创 2017.9.13 找硬币 失败总结

做过一大波玄学的搜索剪枝,然后一看n然而并不会dfs,剪枝过于玄学,而且似乎不好用于是弃疗看题解然后就发现自己zz了其实本来是知道如果知道最后一个数,就只用枚举最后一个数的倍数就行了但怎么就没想到dp呢,这dp其实是比较明显的约数dp、因为3*4一定不会比3*2*2更优,所以直接每次都乘素数去试用所有约数去更新倍数就好,那序列前面的数都不知道,怎么知道每个数被前面的

2017-09-13 16:33:08 208

原创 2017.9.13 不等式组 思考记录

深深感到数学差的悲哀、连分类讨论都讨论不全,而且会晕、所以分类讨论:分成 大于号和 小于号 两种情况讨论如果a>0,一定是大于号如果右边是大于0的小数,那一定是上取整如果右边是大于0的整数,那一定是+1如果右边是小于0的小数,那一定是下取整如果右边是小于0的整数,那一定是+1如果a如果右边是大于0的小数,那一定是下取整如果右边是大于0的整数,那一

2017-09-13 11:11:36 182

原创 2017.9.13 序列统计 思考记录

这题、打表找规律成功的典型,分分钟找到组合数首先列出展开表,然后找组合数:要注意的就是连加的组合数可以加起来考虑和,不要老想着对一堆组合数找数字规律,码:#include#includeusing namespace std;#define P 1000003#define ll long longll ni[P<<1],jc[P<<1],i,T,l,r,

2017-09-13 09:04:28 215

原创 2017.9.12 claris的剑 失败总结

没想到组合数学学的这么差、连插板法都没有看出来、、首先两个两个分组(分组的思想很重要)然后本质不同就利用上了,即选的组数量不同然后就是枚举所有m,然后用组合数往里填,即把除去m个数之外的空间/2来放其他组从1做到(n+m)/2的话一个组合数就搞定了对于奇偶就只需在最后添加一个小的就可以保证不重不漏(递推可证)然而一开始做的时候连式子都列不出来,最后离散选择变成几次方

2017-09-12 22:41:54 243

原创 2017.9.12 连通数 失败总结

辣鸡题目,毁我青春2000*2000*2000/32能过、这常数是小数吧、bitset有毒题目应该是好题,但正解就是玩常数、码:#include#include#includeusing namespace std;#define N 2005 bitsetf[N];int n,ans,i,j;char ch[N];int main(){ sca

2017-09-12 15:30:53 245

原创 2017.9.12 人员雇佣 失败总结

被卡题意了,好气啊(不卡题意我也不会)然后强套昨天的图,其实样子基本是对的,,但是实际是错的这个题的模型就是:一个点选s有贡献,两个点同时选s有贡献,两个点同时不选s无贡献,两个点不同时选s有负贡献、这是一开始建的图:错误挺明显的,首先,其次:由于不在一个集合要倒扣,所以表示选入不同集合的中间的边就没用了(如果流入中间点的边是10,就说明1和

2017-09-12 11:33:01 200

原创 2017.9.11 数列 失败总结

这题是水题、、然而我还是不知道怎么做、这题有一个误区,就是除非你数学很好,不然不要去求通项(打表找规律求了1h无果,要不是题目有提到通项我才不会求通项呢、)因为正解和通项一点关系都没有、、因为他每次递归都要递归 /2 或 /2+1 所以我们如果只单次递归的话可以是logn的于是考虑单次递归   如果 有数 26那下一层就有 13 下一层就有 6、7 下一层就有

2017-09-11 21:11:44 190

原创 2017.9.11 海拔 思考记录

每一个点不是0就是1,这分类讨论一下就能证明、然后0和1一定是有一定的界限,相当于把图分成两半、所以应该很自然地想到了划分集合的方法用网络流的花就是最小割、于是推了半天,才推出来:‘’然后因为是方格,所以需要对偶图最短路建出来的这个网络流显然没法跑最短路所以考虑原图每两个点两个方向的流量可以转化为最短路图中边的方向  (也想了好久)然后就可以了过

2017-09-11 18:37:04 254

原创 2017.9.11 聪明的燕姿 失败总结

这题有毒、如假包换的爆搜只要知道一个数的约数加起来=分解质因数后每个  质因数1~pi次前缀和  相乘的结果所以如果知道约数和,就可以枚举质因数来爆搜必须剪枝到极致才能过,不然会T由于约数和==一堆数的乘积,所以有一个剪枝是只有能整除才去搜由于分解的质因数不能重,所以递归剩下部分时不能用上一次用的质因数。(去重优化)由于有可能出现剩下的大于根n,所以及时判断 剩下的数-1

2017-09-11 10:27:50 208

原创 2017.9.10 连续攻击游戏 思考记录

这个题、、可以把它当成结论题搞,  结论就是对于每个数字的出现次数,如果区间1~n内的出现次数都>=2,那么这个区间1~n内都会合法  这个结论很好证明,连到外面可以视为停止   外面连进来的可以视为凭空增加,如果从一个点出发,再回到这个点,那这一块的都可以不矛盾地取。根据这个结论,我们就可以从1一直扫到n 检验前n个数合不合法如果枚举的这个数次数>1,那根据上面的结论

2017-09-10 21:49:35 224

原创 2017.9.10 ricehub 思考记录

、做这题的时候(不可避免的)瞟了一眼题解的标题  ——二分然后感觉好像已经白做了一道题(都告诉你了还做啥) 然而点看题,却发现   这……难道……不是……   **题?从左往右扫,同时维护左指针,对于一个i,当前l到i已经不合法了,那i再增加,l也一定不合法就变成了滑动窗口、每次加入或删除一个点只用加或减这个点到中位数的点的边权和就可以了,边权和显然可以用前缀和、、io

2017-09-10 19:11:22 194

空空如也

空空如也

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

TA关注的人

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