09 2017 档案
摘要:1.UVA10891 Game of Sum 2.LA4254 Processor 。 3.UVA10905 Children's Game 4.UVA11389 The Bus Driver Problem 5.LA4094 WonderTeam 6.HDU6187 Destroy Walls 7
阅读全文
摘要:传送门 记忆化搜索。 在下觉得sxy大佬的代码写得相当好,通篇的骚操作(因为我都不会呀),%%% 学到了 预处理每个状态的值。以前的我都是zz地枚举每一位。。 for(int i=1;i<(1<<n);++i) { x=(i&(-i)); if(i==x) continue; tot[i]=tot[
阅读全文
摘要:虫洞 单调队列优化DP,感觉比较套路?上不去Vjudge,也懒得打就随便口胡一下。sxy大佬要是您看的我要是扯淡麻烦提醒我一下QAQ sum[i]表示从0到i依次走的距离,sg[i]表示1~i的重量和,dis[i]表示从0到i直接走的距离。f[i]=min(f[j]+sum[i]-sum[j]+di
阅读全文
摘要:传送门 很久以前写过的题,忘得一干二净。 题解 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<
阅读全文
摘要:传送门 贪心。 感觉最近脑子不太好用,不知道是不是线段树树剖和网络流把脑子写傻了。 一开始瞎那啥乱贪心 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath>
阅读全文
摘要:神奇的dp优化。 考虑6维状态的dp,分别表示三行高和宽,显然MLE&&TLE。 把高排个序,从大到小往架上放,那么若不是重开一行便对高度没有影响。 然后求出宽度的sum,dp[i][j]表示第一行放了i的宽度,二行放了j的宽度,三行放了sum-i-j宽度的最小的高度值。 先把所有书放在第三行,然后
阅读全文
摘要:题面 堆优的dijkstra裸题。 努力把自己的代码写得更好看Ing //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring
阅读全文
摘要:二分图匹配水题。 一开始WA了一发,没注意一题没答上就要滚粗。真残酷啊。 就像Noip后将要滚粗的自己。 1 //Achen 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cstdlib> 6 #i
阅读全文
摘要:线段树水题。 注意离散,若是两年份中间还有别的未知年份则多加一个点。 然后就是判断很烦,注意读清楚题,条件判断完。 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<
阅读全文
摘要:还说还剩十分钟A一道水题,然后发现和善意的投票一模一样粘个代码过去直接A。。。 装作自己又写了一道题。 题面 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cma
阅读全文
摘要:一道树剖的裸题。 简单的线段树区间合并,比起什么堵塞的交通(心理阴影)。 主要是注意细节,考场上就是注意对拍吧。 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<c
阅读全文
摘要:第一眼瞎那啥贪心,然后觉得不太对劲,就滚去看题解,发现是网络流OTZ 模拟Kruskal的过程发现,若<u,v>要在最小生成树中出现,权值则小于<u,v>的边不能让u,v联通,转换成最小割模型,最大生成树同理。 跑两遍最大流。 注意边要建双向的啊,被这点坑死了。然后板子不要瞎那啥乱打。 顺便发现果然
阅读全文
摘要:线段树裸题 题解 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include
阅读全文
摘要:我大概是把自己水废掉了。 第一眼匈牙利?不知道怎么想到的,然后发现不可做。 似乎是网络流呀。 看了半天硬是没把图建出来。 出去冷静一下。 wc这不是和文理分科那啥一模一样嘛,还简单得多。。。 我是zz,鉴定完毕。 //Twenty #include<cstdio> #include<cstdlib>
阅读全文
摘要:水题。 把弧长和sum求出,若为奇数显然无解。 从1~n-1枚举,找出一段和为sum/2的段的个数。 ans=tot*(tot-1)/2; //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorith
阅读全文
摘要:网络流+二分。 n^3枚举判断每个巫妖可以攻击的精灵,向其连1的边,每个精灵向汇点连1的边。 二分答案,修改源点流向每个巫妖的cap,跑最大流看是否等于精灵数。 恩,看起来没什么毛病。 然后狂WA不止。调了一晚上。拍了大半晚上,发现网上找的拿来拍的程序是个WA的。。。我还能说些什么呢。。 这时候才发
阅读全文
摘要:1.BZOJ 3522 Poi2014 Hotel DFS 给定一棵树,求有多少无序三元组(x,y,z)满足x,y,z互不相等且Dis(x,y)=Dis(y,z)=Dis(x,z) 枚举中心点,分别dfs,计算答案 #include <cstdio> #include <cstring> #incl
阅读全文
摘要:传送门 一道比较神奇的题。 树链剖分+奇技淫巧; 神奇地发现,把z到跟的路径上的点值+1,查询一个点到跟的路径和就是它与z的lca的深度。 相对的,把l~r到跟的路径上的点值+1,查询z到跟的路径和就是要的答案。 考虑差分,把一个询问拆成两个,把所有询问排序然后从0~n-1到跟路径上的值+1; 一开
阅读全文
摘要:一道神奇的并查集。 一眼看是树剖,但是会被卡。 有人用线段树+并查集卡过了。 然而可以做到O(n)。 抄的题解。 先把所有点往他父亲的边变黑的时间记在col中,染黑。然后把没变黑的点用并查集合并。倒着做一遍把该时间点的边染白,用并查集合并。 //Twenty #include<cstdio> #in
阅读全文
摘要:今天效率终极无敌低。 一开始没读懂题。给你一张图,每次删除一个点和该点连出的边,问每次删除后未被删除的点构成的图的连通块的个数。 考虑倒着做,先把所有点删完,每次往图中加点,并查集维护连通块,每加进一个点ans++,然后找它的边,若是连出的点和它不在同一个并查集中,合并,ans--; 第一次找连通块
阅读全文
摘要:问一个图最小生成树的个数,n<100,m<1000,规定相同权值的边不超过10条。 每天午觉起来很长一段时间都仿佛活在梦中。上午看的下午来打,狂RE不止,发现一种边只有一条的情况没有r会GG。。 //Twenty #include<cstdio> #include<cstdlib> #include
阅读全文
摘要:burnside引理: 大致意思是,等价类的个数=(∑每个置换中等价的方案数)/置换数。 至于证明在下这么愚蠢的人肯定不知道啊。 有了引理就只需求出每个置换中等价的方案。 先暴力跑一遍找到当前置换中的tot个循环,等价方案就是每个循环内颜色都相同。 相当于把tot个物品装到三个箱子中,问每个箱子刚好
阅读全文
摘要:splay维护hash值; 看到大佬们都在打数据结构,我说好的不打数据结构又自己打脸了。 为了写这个昨天还特意去打了Splay的普通平衡树,自从我学会Treap以来第一次用splayA掉普通平衡树QAQ 没有在前后加点,所以特判了在前后加字母的情况。查询就二分答案,然后转过去取hash值,判断是否相
阅读全文
摘要:没想到自己竟然会做计算几何。。不过这确实是一道水题。 观察发现最后的可见直线是一个凸包。把所有直线按斜率排序,开一个栈存直线,计算当前直线和前一条的交点,若x坐标小于前一个交点则弹栈。 #include<cstdio> #include<cstring> #include<iostream> #in
阅读全文
摘要:今天的题,大概是比较考验打暴力的能力。 三道都是暴力,都是你认为你A了就WA成zz的。。 中午被ykk毒奶“你打暴力很稳啊”,然后就炸了。。。 T1 溢出 简单模拟,正经的Noip day1T1难度。一开始数据有误爆0,改后就A了。 读入,判断最大值除以当前值的商和读入值的关系。 #include<
阅读全文
摘要:题解传送门 传送门2 题解写得非常好啊。 然后就是裸的高精了。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue> #include<vec
阅读全文
摘要:tarjan求桥。 当e(u,v), low[v]>dfn[u],e(u,v)为桥。 双向边注意规定父亲和儿子的关系。 若有重边,一定不是桥。可以删除重边,或者换一种方式。 每个点记录更新到它的父亲边fa[i],若点u更新到v,则不能用dfn[u]更新low[v];之后若dfn[x]==low[x]
阅读全文
摘要:严格次小生成树。一开始没有特批一圈都相等的情况,一直WA,十分难受。 先生成最小生成树,枚举每条非树边,连上它构成一个环,拆掉环上树边中最大的一条(若和该边相等则次大的一条)换上这条。 用倍增维护一条链上的最大边和次大边,倍增跑lca同时找出环上最大边和次大边,看能否更新答案。 #include<c
阅读全文
摘要:水题。爆搜。写得比较丑。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue> #include<vector> typedef long l
阅读全文
摘要:生成树的计数 Matrix-Tree定理 好像之前gerw学长讲过一遍毕姥爷讲过一遍,然而并不懂。本来不打算学的不巧两天内遇到了三道这样的题,十分难受。 定理如下。 1.G的度数矩阵D[G] 是一个n∗n的矩阵 当i≠j时,dij=0;当i=j时,dij等于i的度数;2.G的邻接矩阵A[G]; 我们
阅读全文
摘要:可以用Prüfer编码与Cayley公式(orz sxy大佬)证; 也可以用矩阵树定理(虽然我不会证)证; 然后因为顺序有关,所以再乘上!(n-1); #include<cstdio> #include<cstring> #include<iostream> #include<algorithm>
阅读全文
摘要:听LLJ大佬说要学奇怪的算法来增长姿势。 原题可以翻译为给一个无向图染色,保证有连边的两点颜色不同,问最少的颜色数。 用最大势算法。有n+m的写法,但是在下不会,就用个堆。 把每个点势初始为0,扔进去,每次取出最大的,和他相连的没被删掉的点势++,删掉他。 代码很好写啊,在下觉得十分有道理。 #in
阅读全文
摘要:困到死亡,从问大佬题到AC都仿佛活在梦中。 大佬建边考虑了很多,但N很小这里就直接暴力建了。 考虑找出最小的a,把bmin~bmax这段区间按mod a分成若干份,若是最小的B≡x(mod a)可以构造出,则比它大的在区间中的B≡x(mod a)都可以构造出。 如何找最小的B,当一个数可以构造出,它
阅读全文
摘要:二分图匹配。 先匹配一次,一定是完美匹配。然后枚举每条边,去掉它,若是不能完美匹配,这条边就必须。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<q
阅读全文
摘要:差分约束的裸题,虽然我不会。 第一次见差分约束还是之前考试看LLJ大佬写的,感觉十分神奇。 a==b||a>=b||a<=b时连0的边; a>b,a<b时连1的边; 因为每个小朋友都要吃糖,增设源点向每个小朋友连1的边; 然后跑最长路; 注意,等于的时候要连双向边,spfa时要判负环。 然后十分神奇
阅读全文
摘要:和道路升级差不多,只是用的spfa; 十分有毒,在BZOJ上一直WA,对拍拍出来是一样的却告诉我不一样,然后发现自己把'\n'写成了‘\b’。。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #i
阅读全文
摘要:在下觉得这是一道很鬼畜的神题,因为在下第一眼觉得要用整体二分做。 虽然在下已经知道它是Kruskal+lca了,还是仍不住想试着用整体二分,然后写了一个自认为十分好看的优秀代码,十分优秀的T了。。 #include<cstdio> #include<cstring> #include<iostrea
阅读全文
摘要:堆优化的dijkstra。 把一个点拆成k个。 日常空间要开炸一次。。 //Twenty #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue>
阅读全文
摘要:网上的题。 T1 币 (coin) 1.1题目描述 有一排硬币堆,两个人轮流取硬币。每个选手随机取最左边或者最右边的一堆硬币。求先手期 望取得的硬币数。 1.2 输入格式 本题有多组测试数据。 第一行一个数 T ,表示数据组数。 对于每组测试数据,第一行一个正整数 n ,表示有多少堆硬币。 第二行
阅读全文
摘要:之前找LLJ大佬推荐水题的时候让我做这个,然后不出意料的我不会。 日常抄题解。 手玩几组数据发现它N个数可以分成多个组,每个组为一个循环,他们的LCM就是最后的层数。 预处理出n以内的所有质数,我们可以把n分解成p1^a1+p2^a2+p3^a3...不同的p之间的lcm数可以直接相乘,我们用dp递
阅读全文
摘要:题目传送门 第一眼以为是SB题,然后充分地发现了自己是SB这个事实。。 可能写得十分丑陋,还是说一下。。 因为会有平分,而且和赢的得分不一样,所以手算几组会发现很多比较玄学的情况。 正确的贪心策略: 把两个数组排序(我是从大到小)。若是我的头大于他的头,则我的ans+2,显然换其他人来赢也不会更优。
阅读全文
摘要:十分神奇的题。想了二分又想怎么贪心,然后。。其实它就是个暴力呀。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue> #include<v
阅读全文
摘要:水状压 预处理可以用的每行的状态,转移的时候判断上下行是否冲突。记得当时刚学的时候听学长讲感觉这题好难呀。 然后智障的第一次空间开小了第二次忘了开LL,RE了一发又WA了一发。。。 #include<cstdio> #include<cstring> #include<iostream> #incl
阅读全文
摘要:最小生成树模板。 然后写并查集写了个fa[x]==find(fa[x]),RE。。。 十分难受 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<que
阅读全文
摘要:∵某数约数个数=∏(每个质因子个数+1); ∴多选小的质因子肯定比大的划算 ∴小的的指数一定大于等于大的; 又∵2*3*5*7*11*13*17*19*23*29*31*37=7420738134810; ∴暴力搜索; #include<cstdio> #include<cstring> #incl
阅读全文
摘要:tarjan缩点,之后出度为0的点的size就是答案,若有多个出度为0的点则答案为0; #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<stack>
阅读全文
摘要:放假之前十分钟问LLJ大佬有没有什么水题可做,他看了看指了一道树剖水题; 我:喵喵喵?然后被无情地嘲笑了十分钟打不完一道树剖。 并没有什么想说的,反正打得超级慢。别人家大佬一分钟写完匈牙利,半小时写完可持久化平衡树。我太弱啦。 #include<cstdio> #include<cstring> #
阅读全文
摘要:学了ISAP说我来做一道网络流的傻逼题吧然后自己变成了一个傻逼。。 De了很久的bug然后发现我从源点向每只蜥蜴连了INF的边,喵喵喵? 最近写博客好像比较敷衍,还是说一下。每个柱子拆点,源点向每个有蜥蜴的真点连1的边,每个真点向假点连石柱高的边,每个假点向它能到达的柱子的真点连INF的边,每个能跳
阅读全文
摘要:这篇博客写得非常好呀。 传送门 于是我是DCOI这一届第一个网络流写ISAP的人了,之后不用再被YKK她们嘲笑我用Dinic了!就是这样! 感觉ISAP是会比Dinic快,只分一次层,然后不能增广了再更新dis,再加上杂七杂八的优化,但是写起来要比Dinic稍微复杂一点点。 洛谷的模板比我改过后的D
阅读全文
摘要:之前的Dinic模板照着刘汝佳写的vector然后十分鬼畜跑得奇慢无比,虽然别人这样写也没慢多少但是自己的就是令人捉急。 改成邻接表之后快了三倍,虽然还是比较慢但是自己比较满意了。虽然一开始ecnt从0开始WA了一发。。。 之前的码风也十分鬼畜呀缩进只缩1、2格不懂自己怎么想的。。 反正今天就安心划
阅读全文
摘要:我(不会计算几何):这是不是计算几何呀(绝望脸)。 LLJ大佬(瞟了一眼):这是高斯消元呀。 高斯消元。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #includ
阅读全文
摘要:看到题的第一眼,我问LLJ大佬,这是不是主席树模板题呀,然后被大佬无情地嘲笑了。 又思考了一下,感觉树套树可做,我大概是傻了吧。 LLJ说,题解是单调队列啊。 我觉得他说的十分有道理。 裸的单调队列。 #include<cstdio> #include<cstring> #include<iostr
阅读全文
摘要:传送门 一开始傻逼地想用floyd。。。然后正解Dp,难得地一次A了。。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue> #inclu
阅读全文
摘要:傻逼题,然后n,m写反了WA了一发。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue> #include<vector> typedef
阅读全文
摘要:说不想改最后还是向T1屈服了。。然后就de了一下午Bug。。。 虽然昨天随口扯的有点道理,正解就是迭代加深A星搜索,但实际写起来就十分难受了。 说自己的做法,略鬼畜。 每个正方形的边界上的边、每条边在哪些正方形上,都可以用一个Long Long的二进制串表示。给每个矩形编号,预处理每个矩形对应边的串
阅读全文
摘要:树DP 。 考虑每条边对答案的贡献是边两边的黑点数乘积加白点数乘积乘以边长。所以我们只要知道一个点的某个子树中的黑点数就可以算它到子树这条边的贡献。 就可以树上跑背包。 注意一是不要随便只开单向边(会GG),二是DP初值设为-1,dp[x][0].dp[x][1]初始为0,这样不会考虑不存在的状态。
阅读全文
摘要:最小生成森林? 个人感觉跟最小生成树差不多。需要分成k个联通块,让联通块之间距离最大就让联通块内距离尽可能小。一颗最小生成树是N-1条边,分成k个块需要切k-1条,就是一个n-k条边的最小生成森林,然后Kruskal中的下一条边(第n-k+2条)就是答案了。 #include<cstdio> #in
阅读全文
摘要:很暴力的一道题。 建图,每个点跑一遍spfa,然后能到的点距离取Max 一开始建图傻逼地把边建重了,又RE又WA。。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath>
阅读全文
摘要:暴力。 跑 floyd一边算最短路一边统计条数,然后暴力问一遍每个点。 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstrin
阅读全文
摘要:并查集。 传送门 日常抄代码。 太强啦。 想起了当初那道LLJ跑spfa过的题。 orz sxy llj大佬 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cma
阅读全文
摘要:传送门 震惊地发现自己不会匈牙利了。 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue
阅读全文
摘要:据说是A_star的裸题,感觉就是爆搜剪枝。 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<q
阅读全文
摘要:第一眼感觉终于看到了一道自己会做的题,不就是最小割裸题嘛简单。然后,发现正解是传说中的最小割转最短路。。 比较玄学。 。 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #inclu
阅读全文
摘要:一道LLJ说他吃*的题。 我实在是太愚蠢了。 传送门
阅读全文
摘要:A_star裸题 先反向建边跑一边spfa,然后把某点目前从起点跑的距离+它到终点的最短距离作为估价来跑A_star //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include
阅读全文
摘要:并不怎么傻逼的题也把自己考成傻逼。大概是全机房最后几个改完题的人了。。QAQ T1 APIO2009抢掠计划 // BZOJ1197: [Apio2009]ATM 好像是之前哪位学长讲过,tarjan缩点,然后值取反跑spfa或者拓扑排序后做Dp;考场上(第一次)尝试拓扑后DP,然后十分SB地一开始
阅读全文
摘要:模拟退火。一种十分玄学的随机算法,网上可以查到比较详细的资料。 先随机地把数分成m组,每次随机地选择一个数,一开始直接选最小的一组,后来就随机一组,把这个数换到该组看看答案能不能变小,如果变小则换,如果没有变小,按模拟退火的玄学方式判断一下,也要交换。 srand(time(0))在bzoj会RE,
阅读全文
摘要:迭代加深 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include<vec
阅读全文
摘要:给你最多8个长度不超过5的DNA系列,求一个包含所有系列的最短系列。 迭代加深的经典题。(虽然自己第一次写) 定一个长度搜下去,搜不出答案就加深大搜的限制,然后中间加一些玄学的减枝 //Twenty #include<cstdio> #include<cstdlib> #include<iostre
阅读全文
摘要:线段树求矩形周长并 写得十分优美(自己改得已经不优美了) 和求面积的一样的思路,不同的是,对于竖着的周长,每次对答案的贡献是这次和上次在Y轴投影之差的绝对值,对于横着的周长,要考虑一段区间里可能有很多隔着一段距离的矩形,我们记录ll,rr分别表示左边和右边是不是一个矩形(合并的时候处理中间是不是同一
阅读全文
摘要:一道非常经典的线段树简单题(by_YK) 线段树求矩形面积并 一开始觉得非常简单(自己太高看自己了),就直接去做了周长的,然后YY了大半晚上WA成SB,最后去抄了题解,似乎有一种跑两遍的算法,但感觉十分不优美就没有去学,网上的代码大多有100~180不等,幸运地找到了一个写得非常优美的70+代码。
阅读全文
摘要:三道傻逼题,把自己考成傻逼。 T1最小生成树模板 语文太烂理解错了题意自己出了个数据把最小生成树×了,YY了一个贪心,感觉自己贼聪明。 T2一个傻逼二分 为了优美把上下界设成最大值和最小值,成功WA掉大半 T3 tanjar模板 背的板是dfs_clock为了好写打了clock,全场唯二二个CE,贼
阅读全文
摘要:费马小定理:对于素数p和任意整数a,有ap ≡ a(mod p)(同余)。反过来,满足ap ≡ a(mod p),p也几乎一定是素数。 伪素数:如果n是一个正整数,如果存在和n互素的正整数a满足 an-1 ≡ 1(mod n),我们说n是基于a的伪素数。如果一个数是伪素数,那么它几乎肯定是素数。 M
阅读全文
摘要:翘了一上午课来机房皮。 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #incl
阅读全文
摘要:其实直到不久前都几乎不会用树状数组,请教了PPZ大佬之后终于懂了一点点。 然后小蒟蒻现在才知道了树状数组区间修改+区间查询的方法QAQ 传送门 Codevs 线段树练习3 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #
阅读全文
摘要:感觉整体二分是个很有趣的东西。 在别人的博客上看到一句话 对于二分能够解决的询问,如果有多个,那么如果支持离线处理的话,那么就可以使用整体二分了 树套树写了一天还是WA着,调得焦头烂额,所以决定学cdq分治的写法,虽然不知道整体二分和cdq有什么不可不说的关系,就先写了这道主席树模板题(orz LL
阅读全文
摘要:Gerw学长讲的整体二分模板 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #i
阅读全文
摘要:一道CDQ分治的模板题,然而我De了一上午Bug...... 按时间分成左右两半,按x坐标排序然后把y坐标丢到树状数组里,扫一遍遇到左边的就add,遇到右边的query 几个弱智出了bug的点, 一是先分了左右两半再排序,保证的是这次的左右是上次没有计算过的贡献, 然后时间的先后是因为一开始就是按时
阅读全文
摘要:1.邦邦的大合唱站队 https://www.luogu.org/problem/show?pid=3694 XY说这是道简单的签到题,然后我大概是普及组都拿不到三等的那种了。。 插入题解。写得太好了,不刊之论,orzSXY大佬 http://www.cnblogs.com/Serene-shixi
阅读全文
摘要:1.洛谷 点分治1 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #includ
阅读全文
摘要:1.单源最短路 //Twenty #include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm> #include<cmath> #include<cstring> using namespace std; int
阅读全文
摘要:1.BZOJ 2434 阿狸的打字机 AC自动机+树状数组 //Twenty #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<queue> using
阅读全文
摘要:写太丑了被卡常了,先码。 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #inc
阅读全文
摘要:传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include<
阅读全文
摘要:树状数组简单题。一维排个序,另一维加树状数组里就可以搞了。 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #in
阅读全文
摘要:某天全是数据结构的考试题T3 在我学LCT之前就在轩神的博客中看到过这个归类在LCT里,所以事先知道了算法,不过这个貌似也挺明显的。(虽然分块更好写) 考场上为了证明哇我会写LCT诶就强行打了只打过一遍的LCT,然后Debug两个小时。。。最后还一不小心交了一个没debug的版本。。 //Twent
阅读全文
摘要:一开始潜意识就认为是splay模板,打了140+行,还调了很久(自己码力太弱了) 然后听学长说不用打标记,可以存全局的增减值,于是写了一个60-的权值线段树,非常快且好看地就A掉了 //Twenty #include<cstdio> #include<cstdlib> #include<iostre
阅读全文
摘要://Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include<vector>
阅读全文
摘要://Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include<vector>
阅读全文
摘要://Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include<vector>
阅读全文
摘要:传送门 每次只要修改链头实际代表的颜色即可 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<qu
阅读全文
摘要:1.KMP #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<cstring> #include<iostream> using namespace std; int next[100];
阅读全文
摘要:1.线段树 //Twenty #include<cstdio> #include<cstdlib> #include<cstring> #define lc x<<1 #define rc x<<1|1 #define mid ((l+r)>>1) using namespace std; cons
阅读全文
摘要:BZOJ 3239 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #includ
阅读全文
摘要:板 //Twenty #include<cstdio> #include<iostream> using namespace std; int n,a[10000500],t[10000500],ans; void ms(int a[],int t[],int l,int r) { if(l==r)
阅读全文
摘要:放几个高一上写的模板,高精除法什么的好像并没有什么用,写过板后就没用过了。 //Twenty #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<algori
阅读全文
摘要:其实并不怎么会用,有一次有位学长提到了这个名字,就这么取题目了。 1.BZOJ 3687 简单题 求子集的算术和的异或和 http://www.lydsy.com/JudgeOnline/problem.php?id=3687 我们并不需要知道每个数(和)出现了多少次,只需知道它出现了奇数次还是偶数
阅读全文
摘要:送分题 1.没有上司的舞会 很久之前写的了,然后看了一下当时的代码感觉有点迷? 似乎是把可以一起选的装成一个背包,然后硬生生用背包做,状态加一维表示这个级别的选没选,没选才可以选它的儿子级别的。 其实没怎么看,就口胡一下。 //Twenty #include<cstdio> #include<ios
阅读全文
摘要:1.传纸条 好像是一道普及组水题? //Twenty #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; int n,m,a[55][55],f[55][55][
阅读全文
摘要:简单题 1.学校食堂 https://vijos.org/p/1546 看起来很简单,结果写了好久好久。我太弱啦。 dp[i][j][k]表示i以前的都处理好了,j表示 i及i以后的七个人的01处理状态,k表示这个状态是由哪个人转移过来的(1~mm表示i之前的,mm+1以后表示i和i之后的人) 一开
阅读全文
摘要:简单的斜率优化模板题 1.BZOJ 1010 玩具装箱 f[i]=f[j]+(i-j-1+sum[i]-sum[j]-L)^2; 设a[i]=sum[i]+i, C=-1-L; f[i]=f[j]+(a[i]-a[j]+C)^2; 考虑当j优于k时,有 f[j]+(a[i]-a[j]+C)^2<f[
阅读全文
摘要:这几天就水水博客把以前学过的东西整理一下,其实感觉还是比较有必要的,很多东西学了之后很快就忘了QAQ不知是不是我太蠢 https://vjudge.net/problem/POJ-2976 题意:给定A数组B数组,从中选择N-K个使得R最大,输出Round(100*R); 01分数规划问题就是给定两
阅读全文
摘要:1.二分 NOIP2016 跳石头 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> using namespace
阅读全文
摘要:给定n和k,每次k平方后取前n位,求出现的最大值。 所谓Floyd判圈法,一个人跑一步一个人跑两步的神奇算法。 https://vjudge.net/problem/UVA-11549 //Twenty #include<cstdio> #include<cstdlib> #include<iost
阅读全文
摘要:先上板 #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include<vector> const
阅读全文
摘要:简单题 1.BZOJ1833 count 数字计数 写的第一个,非递归版。感觉非递归的数位Dp比较巧妙,也还是比较套路 先预处理,然后统计比最高位位数小的树的答案,统计最高位位数的答案时,先统计不到lim的,再往下一层统计lim的 //Twenty #include<cstdio> #include
阅读全文
摘要:1. [HNOI2001] 产品加工 一道简单的背包,然而我还是写了很久QAQ 时间范围是都小于5 显然考虑一维背包,dp[i]表示目前A消耗了i的最小B消耗 注意 if(b[i]) dp[j]=dp[j]+b[i]; else dp[j]=1e9+7; 可以用B则直接转移,否则要把上一次的这个状态
阅读全文
摘要:本来没有写博客的习惯,只是膜机房各位大佬的博客。看着时间自己也离退役不远了,想着还是要留下一点东西,也是发现很久以前写过的题现在都不会了,就当随便记录下来复习和自勉吧。 从接触到退役或许就只有一年罢了,我能在这里留下些什么呢,还是自己太弱啦。 码
阅读全文