- 博客(70)
- 收藏
- 关注
原创 Codeforces Round #468 Div1 A~D解题报告
D题好假E题更假A.Peculiar apple-tree题意:一个树上每个节点有一个苹果,每秒下落(既到它的父亲),两个苹果到同一节点瞬间消失,若奇数个剩一个显然是对于所有深度相同的一起考虑深度为x的节点数量奇数贡献1,偶数贡献0#include<iostream>#include<cstdio>#include<cmath>#include<cs...
2018-03-06 21:51:04 630
原创 关于SA中基数排序的偷懒写法
因为我并没有学习过标准的SA写法,以前写的一直是按照自己瞎yy的n*log^2来做的然而被卡了好多次做法就是记录rk[]和rk2[]作为第一和第二关键字进行sort//这样做的话第一关键字有序 基数排序常数巨大luogu模板n*log^2 70分改成基数(巨大常数版)排序 9s AC于是自己yy出一个不明复杂度的算法。。复杂度大概是n*log*log(n/log)实测5s AC算法记录s...
2018-02-27 15:56:10 389
原创 非旋Treap详解
(入门请按顺序一边做例题一边看下去,题目之间还有东西)非旋Treap 平衡树的一种个人认为是最好用的平衡树,第一支持可持久化,第二代码短,第三操作方法直观下面看平衡树基础的操作:您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入x数删除x数(若有多个相同的数,因只删除一个)查询x数的排名(排名定义为比当前数小的数的个数+1。若有多个相同的数,因输出最小的排名)查询排名...
2018-02-26 08:19:46 974
原创 Codeforces Beta Round #5 解题报告
上古比赛题目有点毒啊。。CBR 5A. Chat Server's Outgoing Traffic题意:一个通讯工具,支持加人删人,计算最终流量 流量=sigma(每条信息长度*在线人数和)暴力即可。因为信息中间有空格,所以需要用getline#include<iostream>#include<cstdio>#include<cmath>#inclu...
2018-02-10 13:50:21 313
原创 BZOJ3207+2802+2318+1933+1934题解 12.11
#include#include#include#include#include#define For(i,j,k) for(int i=j;i<=k;++i)#define Dow(i,j,k) for(int i=k;i>=j;--i)#define ll long longusing namespace std;inline ll read(){ ll t=0
2017-12-11 22:33:58 317
原创 BZOJ2405——数字 找规律
http://www.lydsy.com/JudgeOnline/problem.php?id=2405神题首先可以发现D(x)=(x-1)%9+1然后发现、、如果x是个合法的数字,那么x+22680也是22680=lcm(1,2,3..9)*9于是暴力预处理出a[i]表示1~i中合法数字个数,然后询问x可以转化为a[22680]*(x/22680)+a[x%22680]
2017-12-11 16:48:46 599
原创 Noip2017挂惨记暨规划
今年NOIP真是、、血一样的教训NOIP前三个星期开始,为了找打代码的手感,一天到晚打比赛,cf虚拟参赛啊luogu的比赛啊之类的结果是,状态是很不错了,然后考试前一星期生病了....于是NOIP时码力极其低下,写挂了整整140分、、395滚粗了D1:T1 诶居然不是模拟啊?woc。。怎么不会做啊??exgcd??算了,作为一道D1T1应该是结论题吧、、于是开
2017-11-22 18:36:43 401
原创 Codeforces Round #442 (Div. 2) 解题报告
A.Alex and broken contest 签到题,题目看清 题意懒得说了#include<iostream>#include<cstdio>#include<queue>#include<cmath>#include<algorithm>#include<set>#include<map>#include<cstring>#define For(i,j,k) for(
2017-10-25 20:14:50 324
原创 BZOJ2142 礼物 EXlucas
全场最佳...毒瘤题一眼得出公式:C(n,sum)*C(sum,a[1])*C(sum-a[1],a[2])*....然而数据范围n显然可以用lucas定理算,但是模数tmd不一定是个质数于是需要用到ex_lucas......把p拆成若干个质因子幂乘积的形式,然后对于每一个质因子幂次求解,最后中国剩余定理乘起来即可具体过程:1、拆得到底数q
2017-10-24 20:55:21 591
原创 BZOJ 3100 排列——单调队列
3100这道题很多网上的题解都是错的啊..一部分题解对区间的要求:1 不重复2 和为k*(k+1)/23 最大值为k很对啊。。但是貌似不重复这个东西用i-mx这样找区间很难判啊——————(对错误题解的吐槽到此结束依然是上面这几个条件但是我们发现,只要满足1.3并且区间长度=k,则2必然满足于是我们用枚举右端点,用bj[a[i]](表示a[i]上一次
2017-10-18 21:31:01 469
原创 3048: [Usaco2013 Jan]Cow Lineup
3048区间伸缩推出每一个数字种类小于等于k+1的区间一个区间中出现最多次数的数字既是一种可能的答案取个max即可#include#include#include#include#include#include#include#define eps 1e-5#define For(i,j,k) for(int i=j;i<=k;++i)#define D
2017-10-12 20:44:07 354
原创 BZOJ 4742: [Usaco2016 Dec]Team Building ——DP
4742挺简单的一个dp首先对两组牛分别排序状态f[i][j][k]表示前i只约翰的牛 和前j只保罗的牛 各选k只 构成序列的种类数#include#include#include#include#include#include#define For(i,j,k) for(int i=j;i<=k;++i)#define Dow(i,j,k) for(int
2017-10-12 20:32:27 525
原创 BZOJ 1746: [Usaco2005 open]Lazy Cows
1746一道思维复杂度不高...代码细节很多的dp题这题突破口显然就在于只有2行那么我们考虑第i列的状态共有五种:1. 没有纸片覆盖2.上边被覆盖3.下边被覆盖4.被同一纸片覆盖5.被不同的纸片覆盖离散后,显然不存在第一种状态那么我们用dp[i][t]表示第i个有宝藏的列 状态为t的最小面积于是就可以转移了实现细节见代码……
2017-10-12 20:27:13 410
原创 D. Limak and Shooting Points 计算几何+模拟
D. Limak and Shooting Pointstime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputBearland is a dangerous place.
2017-10-08 22:32:17 604
原创 BZOJ 1782 [Usaco2010 Feb]slowdown 慢慢游 dfs序,树状数组
还是比较水的用dfs序来维护子树信息,我们让一个点归位后,使这个点所在点的子树加一,然后每次得出答案就行了#include #include #include #include #include #include #include #include #include #include #define ll long long#define maxn 20001
2017-08-07 17:34:57 401
原创 BZOJ 1304: [CQOI2009]叶子的染色 树形dp
第一眼感觉像贪心,但是仔细想了想显然不行。那么考虑dp,f[i][j]表示i这个节点染成j色后,以它为根的子树满足要求,需要染多少个点j色的话……不包含无色,后面再讲然后这是一棵无根树?怎么办?反正也无所谓……你随便拎个非叶子节点当根就可以了,比如说假装是n+1然后我们考虑转移son[x]表示x的其中一个子节点f[x][0]+=min(f[son[x]]
2017-07-24 16:17:42 438
原创 BZOJ 1305: [CQOI2009]dance跳舞
1305: [CQOI2009]dance跳舞啊啊啊noi同步赛弃疗来刷水题了不知道会不会被老师打死。。。曾经用几行贪心水过vijos和luogu的题。。终于跪在了bzoj面前显然答案具有单调性,考虑二分(暴力枚举也可以)考虑对答案x的可行性验证:对于每一个人拆成两个点,p,p'p表示连向喜欢的,p'则是不喜欢的那么对于喜欢的两个人连p,否则连p'然后考虑k的限
2017-07-19 10:59:01 334
原创 BZOJ 1222: [HNOI2001]产品加工
BZOJ 1222很神奇的一个DP题嗯、、、这种方程我也是第一次见ORZf[i][j]表示完成前i个产品的加工,第一台机器用时j时,第二台机器用时的最小值转移显然:f[i][j]=min(f[i][j],f[i-1][j-a[i],f[i-1][j]+b[i],f[i-1][j-z[i]]+z[i])空间可以压维不是问题然而我感觉理论上来说时间复
2017-07-11 15:10:05 323
原创 BZOJ 1010: [HNOI2008]玩具装箱toy——斜率优化
BZOJ 1010第二道斜率优化,对斜率优化有了新的理解。开心(大雾这题的题面其实就是在说 斜率优化!斜率优化!斜率优化!好吧就是道裸题我们考虑更新f[i]时选择的节点如果k比j更优则有:f[j]+(j-i+sum[i]-sum[j]-L)^2f[j]+(sum[i]-sum[j])^2-2*(i-j+L)*(sum
2017-07-10 20:08:50 897
原创 BZOJ 1060: [ZJOI2007]时态同步
BZOJ 1060orzzyy 跪烂如果要满足题目的要求,则以每一个非叶节点 到其子树中所有叶子节点距离相同这很显然然后考虑到我们只能加大一条边的权值而不能减小所以我们只能所有路径加长到最长的那一条所以我们只要贪心就好了具体实现看代码#include #include #include #include #include
2017-07-10 19:52:21 283
原创 BZOJ 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁——DP
BZOJ2023我好弱啊、、只会刷水题啊。。 这题我们首先考虑暴力的n^3 dp,f[i][j]代表前i个种类的蚂蚁构成size为j的集合的方案数转移枚举第i类蚂蚁选了几个,可以在n^3的复杂度内解决此题不过 应该是T*n^2,。。。所以显然过不去考虑优化我们在n^3时的dp转移:f[i][j]=sigma(f[i-k][j-1])那么显然
2017-07-07 22:13:16 363
原创 BZOJ 1663: [Usaco2006 Open]赶集 floyd(划掉+dp
bzoj1663神!他!妈!虽然乡间小路奇特的布局使得从i号商店走到j号商店的最短路不一定是直接连接这两个商店的那条,但约翰并不会选择那些会经过其他商店的路线,只是直接走到目标商店等待礼物的送出.被坑死。。。首先按礼物顺序排序,dp[i]表示一定取第I个获得的最多礼物然后n^2转移即可#include #include #include #incl
2017-07-07 15:14:22 344
原创 BZOJ1104 [POI2007]洪水pow——并查集+乱搞
POI2007 洪水pow乍一眼还以为是水题,仔细一看发现还是有点难度的。。首先我们考虑对于节点x,如果他上下左右的点有一个点已经放了抽水机且海拔比x低,则x不需要放抽水机。或者我们可以认为我们花费代价0在x这个节点上放了一个抽水机那么我们把所有点关于海拔排序,那么依次加入高度为h的点后去判断一下有没有与已经放了抽水机的点相连,如果没有则答案+1,并且在该点放上一个抽水机 这个操作可以用并查集或者
2017-07-04 18:08:06 552
原创 权值并查集——bzoj1202狡猾的商人
1202权值并查集裸题的感觉。。。哎就是自己太傻了,写错一个关键性的地方权值累加的过程中一点要先get(F[x])再去加!这个问题处理好就可以了。。哎#include #include #include #include #include #include #include #include #include #include #de
2017-06-22 14:07:28 319
原创 LUOGU1445——没占到1444的愤怒 数学
1445题意:给定n,求1/x+1/y=1/n!的正整数解的数量先对原式分解一下(x+y)/xy=1/n!xy-(x+y)*n!=0(n!)^2+xy-(x+y)*n!=(n!)^2(x-n!)*(y-n!)=(n!)^2因为x,y为任意正整数,所以x-n!和y-n!也可以是任意正整数所以题意转化为->x*y=(n!)^2那么我们对n!分解质因数
2017-06-21 17:18:14 771 1
原创 Codeforces Round #381 (Div. 1) B Alyona and a tree 树状数组
B. Alyona and a tree题意:给定一棵树,树上的边有权值为val[i],点有权值为a[i],定义dist(a,b)为a到b的路径上的边权的和定义v控制u,当且仅当v是u的祖先且dist(u,v)第一反应树形dp嘛,可行,不过感觉略麻烦。。。而且二分的还要判断一些奇怪的东西(好吧懒得打因为u是v的后代嘛。所以dist(u,v)=dist(1,u)-di
2017-06-19 10:21:39 431 1
原创 vijos1420——Valentine’s Seat 组合数学
题目这题是我题目看错了还怎么回事。。我记得题目没有说最右下角要粉色啊??算了不管了,我也不知道为什么只需要考虑右下角是粉色的情况我们可以发现,对于每一行,我们可以发现:1、粉色的座椅必定是从开头开始的一排连续的座椅2、数量大于等于上一排因此我们考虑每一行可以向前扩展pi个位置,最终sigma(pi)=npi>=0所以这个显然可以用隔板法嘛
2017-06-19 08:36:14 331
原创 Codeforces Round #382 (Div. 2)解题报告
A.Ostap and Grasshopper大力模拟题,然而lc233大佬居然tmd怀疑是不是一个环。。。哎想多了题意都懒得讲了orzB.Urbanization题意:给你n个数字,让你选n1个数字放到A集合,n2个数字放到B集合,让两个集合各自的平均数 加起来最大我们强制要求n1一个数字t放入A堆答案的贡献是t/n1,所以排一遍序后,前n1个数字放入A集合同理n1
2017-06-15 15:25:46 574 3
原创 E. Sasha and Array——矩阵+线段树
E.Sasha and Array很神奇的一道题题意大概就是支持区间加,然后求区间和。。。区间和的求法是 sigema(i,l,r) f[i] f[i]表示斐波那契序列第i项例如一个区间的数字是1 2 3 4 5 6 那么其和为1+1+2+3+5+8=20看到数据范围。。那斐波那契肯定不能离线处理了,只能是用矩阵去算那我们如果给一个数+x,相当于让他再乘x次,
2017-06-15 10:15:06 683
原创 Mahmoud and a xor trip——766E 树形dp
E. Mahmoud and a xor trip第一眼好假啊。。题意:给定一棵树,树上的点有权值,求所有无序点对(x,y)间路径的和,a->b的路径定义为a到b经过的所有的权值异或值第一眼还以为可以n^2*lg跑啊。。然而数据范围打破了我美好的梦想- -N^2*lg就是枚举两个点然后算一个lca,把Lca的贡献算上,然后1->x的路径xor1->y的路径嘛然而n=10
2017-06-13 09:35:17 380
原创 POJ3261——Milk Patterns 后缀数组
POJ3261题意大概就是求一串数字中……应该说,当字符串看的数字中,找到一个至少出现k次的最长的子序列(可重复)嗯。。课件完全看不懂在说什么“•将问题转化成,求height数组中最大的长度为 K的子序列的最小值•然后随便则么搞都可以了。。。。。”???首先我们考虑height数组的一个结论:Height[rank[i]]>=Height
2017-06-09 09:46:37 275
原创 排序+链表 CF——752D
725D刚拿到题目一脸懵逼10万个数字长度十万??????哦……字符总数小于十万妈的吓死了,还以为输入要超时了构造一个回文串,显然的是,我们可以把两个相反的字符串加到一个回文串的两侧,构成新的回文串。就这个思路,直接开map离散字符串,然后找一下,如果大于0就加上去,以及:可以在中间放一个本身是回文串的字符串然后,对于多个相同的字符串的处理方法,显然越大
2017-06-07 13:38:09 365
原创 很迷的SG??Berzerk - 787C
Berzerk好假的题啊。。题意是。。A有一个序列,B有一个序列轮流操作,使一个点在一个环上移动,移动的长度为序列中的任意一个数,先移动到1位置的人赢嗯。。问点的起点在任意位置时,A为先手是否必胜,B为先手是否必胜然后就搞个SG啊。。。看题解说什么BFS- -吓我一跳仔细看了看,就是把SG函数搞成了拓扑图做嗯。。感觉时间效率不错,于是也写了一发BFS
2017-06-05 11:41:20 609
原创 洛谷P1266——速度限制
速度限制好恶心啊……调的累死了写法比较鬼畜,不过应该是跑的最快的做法吧。。。lc233大佬老早就A掉了我特么还调的要死裂点,dist[x][y]表示从起点出发,上一步是y,走到x的最短路径这样记录有什么用呢?因为我们更新x->t只需要用到y->x这条边时的限速,所以y之前的怎么走怎么走其实是不需要知道的,只需要知道一个最小值就行了。然后直接跑spfa记录方案记录
2017-06-02 15:56:33 570
原创 Codeforces Round #410 (Div. 2) 解题报告
A:Mike and palindrome题意就是让你判断一个字符串最多修改一个字符后能不能成为一个回文串。。所以只要判回文的时候记录一下有多少个不同的位置就行了B:Mike and strings不知道可不可以贪心,题意是给你n个字符串,然后你每次操作可以把一个字符串的第一个字符放到最后面,问最少多少次能让所有字符串一样。。。反正直接枚举一个标准字符串, 然后模拟就行了C
2017-06-02 11:23:42 273
原创 Codeforces Round #407 (Div. 2)解题报告
A:Anastasia and pebbles水题。。直接按题意搞一下就行了B:Masha and geometric depression同样是一个模拟题,map记录bad数,特判q=-1和q=1的情况即可C:Functions again……好像说是最大子段和?看别人题解代码很长的样子 我是记录前缀和的最大最小值,贪心一下就行了,因为正负对最大最小值的影响其实是没有的
2017-06-01 21:18:18 277
原创 并查集——vijos1944琵琶湖
vijos1944下午除了订正只做了这题啊。。这题我感觉我的xjb算法已经有点用处了……虽然我不知道别人怎么搞的,但是我download觉得我的做法很玄首先,并查集并不支持断开,所以我们不可能去顺序模拟题意因此倒序在Ti时会有哪些点浮出水面那首先我们二分出点(x,y)在什么时刻浮出水面,然后把压缩后的点向这一个时刻连一条边……是不是很奇怪……而且有可能会
2017-05-27 15:51:37 641
原创 差分约束——vijos1589
vijos1589听说……这题是贪心啊我比较傻嘛……不知道怎么搞第一眼就是差分约束,然而之前只写过一题差分约束,所以,AC的比较艰难……先是spfa打萎了- -然后是起点处理错了...然后又是初始化错了题意很显然,差分约束系统的构造也很好想对于输入x.y.z,即Ty-T(x-1)>=z所以我们直接给x-1和y连一条z 的边显然,每个位置只能放一个
2017-05-26 10:46:56 462
原创 欧拉筛法分解质因数——vijos1156猩猩散步
vijos1156 从前有个人 他沉迷暴力分解质因数inline void get(int x,int v){ for(int i=2;i*i<=x;i++) { while(x%i==0) cnt[i]+=v,x/=i; } if(x!=1) cnt[x]+=v;}然后他T了 。。。。。。。。。。。 于是
2017-05-25 08:50:24 1057
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人