- 博客(81)
- 收藏
- 关注
原创 GDOI2018游记
Day-1最后一轮模拟赛和ZJOI考得一塌糊涂,就当是攒人品了。。。Day0我们学校大部分人都住党校,虽然房间条件差点,但至少周边环境不错。 我看起了国漫(狐妖…),以此来避免去思考更多东西。。。 11点多一点就睡了。Day1我这次采取的策略与以往不同,之前都是4题看完才开码,这次我决定看2题就写,先拿签到分。 t1觉得O(σ(A)∗nσ(A)∗n\sigma(A)*...
2018-05-04 07:43:45 879 1
原创 最小树形图(朱刘算法)
定义:一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图。对于没有给定根,我们可以新建一个点,然后让它向所有点都连一条权值为所有边权和的(或者自己定义一个inf)边,然后把该点定为根。这样找到最小树形图一定包含且只包含一条新边,减掉这条边的权值就可以了。 算法流程: (0,先除去自环) 1,选入边集——找到除root点之外,每一个点的所有入边中权值最小的,用数组
2017-05-23 17:16:07 793
原创 强连通分量(Kosaraju算法)
求有向图的强连通分量除了大家熟知的trajan,还可以用Kosaraju 先说算法流程: 1,对原图dfs一遍,并将出栈顺序的逆序作为“伪拓扑序” 2,对原图够构反向图 3,按伪拓扑序在反向图上dfs,新遍历到的点都属于同一个强联通分量。正确性证明: s在反向图上dfs能够遍历到t,说明存在t到s的路径,而现在需要证明的就是存在s到t的路径。 我们知道,s的伪拓扑序小于t,也就是s后退栈
2017-05-23 16:45:39 717
原创 K最短路问题(A*算法)
问题在有向带权图G,求从s到t的第k短路(不严格递增)的长度。A*算法通过一个估价函数f(x)来估计图中的当前点p到终点的距离,并由此决定它的搜索方向; 设g(x)表示走当前路径到x的长度,dis(x,y)表示x到y的最短距离,由于y只有等于t时才有用,所以我们可以连反向边,然后从t出发跑一遍最短路得到。 令f(x)=g(x)+dis(x,t) 建一个优先队列,初始将源点s加入到队列中; 每
2017-05-20 10:29:31 3080
原创 中学生数据结构题
题目大意给一棵n个带点权节点(初始为0)的树 有三种操作: 1,对一条路径上的点的点权全部增加一个数 2,求一条路径上的点的点权和 3,对一条路径进行轮换(假如路径为a_1~a_k则a_1–>a_2,a_2–>a_3….a_k–>a_1)容易想到用lct维护,轮换操作可以直接把左端点接到右端点的右儿子处,但这样会改变树的形态,具体实现就是把权值和形态分开来维护,维护树的形态的lct中,每个s
2017-05-05 16:08:10 829
原创 GDOI第四轮模拟总结
day1t1想了想50分,然后就推不下去了,结果50分居然还打wa了。 t2只记得是做过的题,好像不是特别好想来着,于是先放着,后来却也没时间去想了。 t3想了好久的dp,愣是没想到折半。 t4有个naive想法就直接上了,然后就一直在想t3,结果t4的做法是错的,早知打70分了。。像t4这种题,如果只是感觉上是对的话,一定不能冒然开码,不如求稳拿部分分,当然,如果有能力能够想清楚做法是否可行
2017-04-26 22:21:28 517
原创 后缀数组复习小记
定义: suf[i]表示以i为开头的后缀 rank[i]表示suf[i]的排名,sa[i]表示排名为i的后缀 height[i]表示sa[i]和sa[i-1]的lcp h[i]表示suf[i]和suf[sa[rank[i]-1]]的lcp sa[rank[i]]=i,所以只要能求出rank,就可以求sa 倍增 求rank相当于把n个后缀排序,直接暴力排,显然是O(n^2*log(n))
2017-04-24 22:11:01 454
原创 GDOI第三轮模拟总结
day1t1没有想到一个性质:插入点的父亲是它的前驱和后继中深度较大的那个。然后感觉十分不可做啊,于是就是打了个模拟spaly,结果有个地方忘记update。。 t2思路再在一次陷在莫队中,以为数据会有梯度,就直接上了,一番卡常之后,还是只有暴力分。。 t3没有什么思路,就弃了。。 t4,30分暴力也需要计算几何基础,然后就GG了。。 day1最后只有30,这一场最可做的应该是t2,没有想到
2017-04-22 09:20:49 498
原创 UOJ【清华集训2015】V
题目大意初始给出n个数,a[1]~a[n] 有m个操作 1,把a[l]~a[r]加上x 2,把a[l]~a[r]减去x后和0取max 3,把a[l]~a[r]和x取max 4,输出a[x] 5,输出a[x]的历史最大值(即出现过的值的最大值)数据范围,n,m<=5*10^5,x<=10^9设计标记令标记(a,b)表示对于x进行max(x+a,b)那么 操作1相当于(x,-inf) 2
2017-04-18 22:12:46 713
原创 GDOI2017第二轮模拟
day1真点一题想不到。 其实这一场一开始就认真打暴力起码60+60+30+20=170,不至于很差。 但可能和上一轮的模拟难度相差较大,我死钻了两个多钟都没开始码题,然后心态爆炸几乎要弃疗。 t1其实不算难,但我一直没法脱离莫队的思路,然后就GG了。 t2算是结论题了,由于图论知识稀缺,不会正常 t3只会暴力,但由于理解错一个部分分,所以只会30 t4讨论起来十分繁琐,只会打暴力。。
2017-04-18 16:12:05 528
原创 GDSOI2017模拟
今天真的炸穿了。 t1,由于没打过轮廓线dp+没完全听懂xdl的课(觉得插头dp考了也不会,可能听得不太认真,也是连简单的轮廓线dp也没学会),于是比赛中想到了如何把状态压成3进制,却愣是只能O(2^m)去转移,原来只要一个位置一个位置去转移就可以O(1)转移了。这个平时留下的坑,幸好在这次被发现了,有所填补。 t3,由于一开始有点想法,于是几乎花了所有的时间,关键一开始没想清楚就开始码,发现不
2017-04-14 15:59:17 624
原创 GDOI2017模拟一试
终于开始刺激的GDOI模拟了, 长时间做一些**的难题,是时候需要换个脑子… t1其实是犹豫了一下的,因为有一个不太清晰的O(n)的思路,但觉得带个log也能过,也没必要再想,而且还不容易翻车。 t2其实不算难,得到一个比较显然的性质之后思路就一直陷在贪心里,不过数据水,瞎贪也有50… t3直接上点剖,发现不能直接跑过,想了一想,子树大小小于k时贡献为0,于是复杂度/k,于是就跑得飞快。
2017-04-14 15:46:38 562
原创 GDOI2017模拟二式
今天炸得很惨,主要题目不是很难,后两题本来都能切得,结果炸穿了。 t1是真的完全没想到,可能因为自己的字符串水平确实不高,所以平时也不怎么喜欢做字符串的题,而且字符串算法也不熟,可能即使想到了t1可以转化为求本质不同的字符串个数也打不出广义后缀自动机,这个短时间可能很难提高,在后期的训练要有意识的注重自己的薄弱知识。 t2想到了贪心,又加了一些减枝,然后就没多想了。这题得分还是比较可观的,虽然其
2017-04-12 20:23:52 466
原创 FFT学习笔记
FFT可用于解决一些卷积问题。 一般问题形式如下: C=A∗BC=A*B C[i]=∑ij=0A[i]∗B[i−j]C[i]=\sum_{j=0}^iA[i]*B[i-j]若把A,B看成两个次数为n多项式 A(x)=∑ni=0a[i]∗xi,B(x)=∑ni=0b[i]∗xiA(x)=\sum_{i=0}^na[i]*x^i,B(x)=\sum_{i=0}^nb[i]*x^i 原问题等于两
2017-04-10 09:38:41 641
原创 lct学习笔记
lct不能够实现“对某个点的子树进行的某些操作”(但可以实现类似求子树大小的简单操作),然而对于大部分动态树问题来说还是够用了。 主要的四个操作。 1,Access(x),把原树上x到根路径上的所有点放到同一颗splay里面 2,Makeroot(x),让x成为所在树的根 3,Cut(x,y),切断相邻的节点x,y的边 4,Link(x,y),让x,y连一条树边,成为属于原图的同一棵树。基
2017-04-10 08:04:48 597
原创 bzoj 4573大森林
题目大意初始给出n棵节点数为1且生长节点标号为1的树,有三个操作: 0 l r 表示将第 l 棵树到第 r 棵树的生长节点下面长出一个子节点,标号为当前0的操作数+1; 1 l r x 表示将第 l 棵树到第 r 棵树的生长节点改到标号为 x 的节点。对于 i (l≤i≤r)这棵树,如果标号 x的点不在其中,那么这个操作对该树不产生影响; 2 x u v 询问第 x 棵树中节点 u 到节点 v
2017-04-09 22:21:15 584
原创 维护数列
题目大意维护一段数列,支持添加,删除,翻转,区间赋值,询问最大子段和以及区间和等操作。splay我的代码常数较大,被卡了。。。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)#define ll long longusing name
2017-02-28 17:30:00 443
原创 神秘物质
题目大意维护一个序列,支持单点删除和添加,以及查询区间内大于1的所有子区间的极差的最大值和最小值。splay裸题所有子区间极差的最大值=区间最大值-区间最小值 极差的最小值,容易发现一定是长度为2的区间 设新序列b[i]=abs(a[i]-a[i+1])维护b的区间最小值即可要注意添加和删除时,更新前一项的b值代码#include<cstdio>#include<cstring>#inclu
2017-02-25 20:54:59 740
原创 GDKOI2017
今年的题目质量不是很好,还出现了各种问题(题面坑,数据坑,样例坑。。。),然而在这种情况下,本应该是大家分差不大,也就是题目不太有区分度,而我却炸穿了。 还不习惯gdb,而我用的那台机Dev-c++的自带调式莫名用不了,而评委只是告诉我“这个帮不了你”,于是只能用gdb(自己太弱了),感觉废了不少时间。 前两题都是送分的,我打完之后也没再去对拍,t3不会,t4看错题(看成npc问题,暴力也不会,
2017-02-20 21:03:45 793 1
原创 WC2017
Day-3第一次参加WC,心情还是比较愉悦的。 毕竟没有什么压力,主要是来见识见识大佬,积累积累经验。 和wzd快活了一下午,而吃饭却成为十分艰难的一件事,找了半天,才找到一家面馆。Day-2t2是道水题,结果我提交时没删文件输入输出,爆0了。。。 晚上是大佬的题,太毒了,20分排名就挺前了。。。Day-1水法失败,暴力也不记得拿了几分。。。 晚上自由改题,我似乎是挺颓的。Day0t1打洲阁
2017-02-14 15:26:51 1546
原创 NOIP2016总结
Day0这次吃饭全都自己解决,下午和wdc,gzf去吃了面,然后又吃了一个雪糕; 晚上开了个短会,学习了一发samjia的经验; 给予自己积极的暗示,早早睡了; 结果半夜肚子疼,好像还把zlt吵醒了…Day1先大致把三题看完,t1是模拟题,t2感觉是链剖,t3是较简单的dp 于是先敲完t1,检查了一遍程序就过了,感觉也没什么好对拍的。 t2想了好久,我发现应该可以在端点打标记,然后用dfs
2016-11-26 10:59:35 635
原创 NOIP2016集训总结
第一次停课训练,感觉比上课舒服多了。 第一场模拟赛就爆0了,原因是输入输出打错了。。。 然后接连几场都垫底,因为没打对拍,总是和估分相差甚远。 后来得分相对稳定了一些,因为有打对拍,这个真的很重要,之前可能我rp比较好,显得这个问题不怎么严重,现在rp更好了,于是就暴露出来让我改过自新。 这段时间学习了数据结构和字符串等专题,收获了许多,但是没有太多的时间去码一码,尤其这些题码量较大,感觉自
2016-11-14 17:10:25 1068
原创 记忆的轮廓
题目描述四次死亡轮回后,昴终于到达了贤者之塔,当代贤者夏乌拉一见到昴就上前抱住了昴“师傅!你终于回来了!你有着和师傅一样的魔女的余香,肯定是师傅”。 众所周知,大贤者是嫉妒魔女沙提拉的老公,400年前与神龙、剑圣一起封印魔女因子暴走的莎缇拉。在魔女茶会的时候,莎缇拉也表示过对昴浓浓的爱意,昴便是被莎缇拉召唤来异世界的。 而贤者之塔中的资料与试炼,似乎都指向同一种可能性……记忆的轮廓,逐渐显形……
2016-11-03 22:06:10 1150 1
原创 永恒的契约
题目大意有一个神奇的大回环,由n块石头组成。 第i块石头有一个高度ai,两块不同的石头i,j能够互相看到,则它们在环上的两条路径中有至少一条路径上除了两个端点(即i,j)路径上石头高度都不大于min(ai,aj)。 求有多少对石头能够互相看到数据范围n<=1e6,T<=5,1<=ai<=1e9先不考虑ai=aj的情况我们可以把序列加倍,然后用单调栈处理出l[i]和r[i](分别为i左右两边第一个
2016-11-03 21:20:06 828
原创 10.6~10.7NOIP2016模拟 总结
10.6(前两天做的都是水题,以至于naive。) 看完题之后感觉都不可做。 t1,n<=10^4,纠结了挺久n^2能不能过,最后还是选择打n^2做法,不过一开始想法错了,绕了一会儿才想明白,还好切了。 t2,没有想到把区间转换成点的改变(差分),然后就乱打了个水法,结果爆0了。 t3,没有时间想,没有时间打,暴力有68分呢——呜呜。。。10.7今天的题,相对容易想,可我。。。 t1,一眼
2016-10-09 21:20:22 488
原创 DZY Loves Math IV
Description给定n,m,求∑ni=1∑mj=1φ(i∗j)\sum_{i=1}^n\sum_{j=1}^m\varphi_{(i*j)}mod 1e9+7 n<=100,000,m<=1,000,000,000定义sum(n,m)表示∑mi=1φ(i∗n)\sum_{i=1}^m\varphi_{(i*n)}令z(n)表示和n含有的质因子相同且指数都为1的数 则有sum(n,m)=n/
2016-10-03 19:02:54 953
原创 千帆渡
题目描述数据范围n,m<=5000,ai,bia_i,b_i<=2302^{30}dp设f[i][j]表示a的前i位中的某一位和b的第j位是最后一对匹配时的最优答案,f[i][j]显然可以由f[i-1][j]转移过来。 如果a[i]=b[j],则f[i][j]=max(f[i][j],f[i-1][j1]+1)(b[j1]<=a[i],j1<=j) 由于枚举j是递增的,设d=max(f[i-1]
2016-09-08 17:10:13 1047
原创 【NOIP2016提高A组模拟9.7】总结
第一遍看题,感觉t1最难,因为没看懂题目;t2大概想了一下,应该就是个水dp;t3就是道经典的莫队。。。 感觉关键就在t1了,把题目搞懂了之后还是不知所措,想了挺长时间,最后发现一个sb结论,快速打完然而并没有对拍(因为不会打暴力)。还好一次就切了。 t2,我设f[i][j],表示序列a的第i位和b的第j位是最后一对匹配时的最优答案。但是这样设转移是O(log2nlog^2 n),总复杂度(n2
2016-09-08 16:59:15 546
原创 同桌的你
题目描述数据范围n<=10^6dpi喜欢j则i向j连边。最终我们会得到若干个环套树。 设f[i][1]表示i和某个儿子配对的最优答案,f[i][0]表示i不与任何儿子配对的最优答案,这在树中很容易做。 然而可以发现,如果i和某个儿子j配对,则i的父亲和i的不会配对,j也不会和任何儿子配对。所以我们可以任意找环上的一条边,去掉它dp一遍,再加回来去掉它的一条邻边再dp一遍即可。代码#include
2016-09-07 22:32:14 504
原创 Ztxz16学图论
题目描述众所周知,Zjr506是算法之神,因此Ztxz16经常向他请教算法。这一天,Zjr506在教导了Ztxz16关于图论方面的一些算法后,给他出了一道图论题作为家庭作业: 给定N个点,M条无向边,Q个询问,每个询问给定L, R,问连上第L~R条边后,图中有多少联通块(询问之间互不影响)。 Ztxz16智商太低,百思不得其解,只好向你请教这个问题。数据范围N, M, Q <= 200000,
2016-09-03 10:05:13 1224
原创 Zjr506的捕猫计划
题目描述Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫。 为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些木桩之间绕上藩篱以困住这些猫。 一段时间后,Zjr506在绕了M个藩篱后兴高采烈的离开了。作为正义的使者,Ztxz16不忍心看到这些猫受到折磨,于是决定拆除一些藩篱让所有的猫都逃出去。因为Zjr506的巧妙设计,藩
2016-09-03 09:43:02 1361
原创 51nod1030 大数进制转换
题目描述给出一个36进制的大数A(0-9,A-Z),将其转为10进制并输出。 每一位用’0-9”,’A-Z’来表示,A的长度 <= 100000)a进制数k转b进制问题第一位(最低位)=k%b 第二位=k/b%b 第三位=k/b^2%b …… (这个应该是比较显然的) 然而A的长度 <= 100000,太大了,直接做会超时啊。 这种时候,我们需要压位,而且只压其中一个数是不行的,两个数
2016-08-20 11:58:59 1494 1
原创 飞扬的小鸟
题目描述Flappy Bird是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。 现在小鸟们遇到了一个难题,他们遇到了一堵巨大的墙,墙上仅有m个洞供他们通过,由于小鸟们的体型不同且墙上洞的形状也不同,所以每种体型的鸟通过每个洞的时间都不同,鸟的体型共有n种,第i种体型的鸟通
2016-08-20 11:42:46 779
原创 树上路径
题目描述给出一棵树,求出最小的k,使得,且在树中存在路径p,使得k>=S且k<=E。(k为路径p上的边的权值和) n<=10^5,|E-S|<=10^6,1<=Wi<=1000,|E|,|S|<=10^9怎么看都是点剖。而对k有两个限制,不能直接求最小值,但是可以求在这个区间范围内的k有多少个。二分+点剖二分E的值,求在这个区间范围内的k的数量,若>0则合法。 只有第一次点剖才排序,然后保存排序
2016-08-20 11:18:57 799
原创 公约数
题目描述给定一个正整数,在[1,n]的范围内,求出有多少个无序数对(a,b)满足gcd(a,b)=a xor b。 n<=10^7有一个很好证却不是一下就能发现的结论若gcd(a,b)=a^b,则gcd(a,b)=a^b=a-b证明:gcd(a,b)<=a-b,a^b>=a-b,然后就可以得到结论了。 根据结论我们就可以枚举(a-b)的值,因为gcd(a,b)=a-b,(假设a>b)所以a=k(
2016-08-20 11:11:17 755
原创 51nod区间的价值
题目描述我们定义“区间的价值”为一段区间的最大值*最小值。 一个区间左端点在L,右端点在R,那么该区间的长度为(R-L+1)。 现在聪明的杰西想要知道,对于长度为k的区间,最大价值的区间价值是多少。 当然,由于这个问题过于简单。 我们肯定得加强一下。 我们想要知道的是,对于长度为1~n的区间,最大价值的区间价值分别是多少。 数据范围1题目特别强调了ai的值是随机的,这就是在提示
2016-08-19 21:05:55 1084
原创 51nod 1613 翻硬币
题目描述有 n 个硬币,一开始全部正面朝上,每次可以翻转 k 个硬币( k 小于 n ),那么至少要 p 次翻转,才能让所有硬币反面朝上,求 p 的值。如果不能成功翻转则输出-1 数据范围 n,k (1 <= n <= 10^9, 1 <= k <= 10^9)。看数据范围就知道,复杂度应该为O(1)本题的精髓在于对奇偶性的讨论。 情况1:若 n 为奇数—— 1.1 若 k 为偶数 =>
2016-08-18 11:29:47 654
原创 小Y的数论题
题目描述小Y喜欢研究数论,并且喜欢提一些奇怪的问题。 这天他找了三个两两互质的数a, b, c,以及另一个数m, 现在他希望找到三个(0, m)范围内的整数x, y, z,使得 (x^a+y^b) Mod m=(z^c) Mod m 有T组询问 1 <= T <= 100000 1 <= a, b, c <= 10^9 3 <= m <= 10^9做法很机智考虑这样的式子 2^ka
2016-08-18 11:20:40 503
原创 51nod 1246 罐子和硬币
题目描述有n个罐子,有k个硬币,每个罐子可以容纳任意数量的硬币。罐子是不透明的,你可以把这k个硬币任意分配到罐子里。然后罐子被打乱顺序,你从外表无法区别罐子。最后罐子被编上号1-n。每次你可以询问某个罐子,如果该罐子里有硬币,则你可以得到1个(但你不知道该罐子中还有多少硬币),如果该罐子是空的,你得不到任何硬币,但会消耗1次询问的机会。你最终要得到至少c枚硬币(c <= k),问题是给定n,k,c,
2016-08-18 10:09:13 521
转载 输入输出优化模板
#include<cctype>const int BufferSize=1<<16;char buffer[BufferSize],*head,*tail;inline char Getchar() { if(head==tail) { int l=fread(buffer,1,BufferSize,stdin); tail=(head=buffer)
2016-08-17 22:50:33 571 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人