
不常更新的测试
gigo_64
莫看,莫看,这不是真实的我(七海脸)
溜了溜了
展开
-
csp模拟 企鹅棋【计数dp】
传送门每个点有向左,向右,都可以,三种跳跃属性。问从起点到终点的,经过每个点一次的方案数。我们要求的就是合法的全排列,满足起点是第一个,终点是最后一个,任何一个可以到下一个的数量。我们考虑最后的这个排列,从1开始,对每个数考虑其应该放在哪里。我们发现,任何时刻,这样放出来的连通块,右端点一定是R或B,左端点一定是L或B。因为我们从1~n添加,所以没有添加的数一定比添加了的...原创 2019-11-14 18:44:56 · 227 阅读 · 0 评论 -
csp模拟 金币【最短路】
传送门大约D1T2的难度。得到lx~rx个宝藏的最大贡献。大可以从起点以及每个宝藏出发跑一个最短路(代价的),然后全排列用数量*T减去最短路dis就行。#include<bits/stdc++.h>using namespace std;#define in read()#define int long longint in{ int cnt=0,f=1;c...原创 2019-11-14 18:32:29 · 256 阅读 · 0 评论 -
csp模拟 路径【复杂度分析】
传送门其实就是个复杂度分析和基础数论。众所周知,gcd变化至少减半,所以最多log次变换。任何一条路径都可以成为以某个叶子结点为根,的一条从上到下的链。而叶子最多10个。所以从每个叶子dfs,暴力维护每个点到根路径上的不同gcd点。然后每次更新即可。复杂度10个nlogn#include<bits/stdc++.h>using namespace std...原创 2019-11-14 18:36:02 · 356 阅读 · 0 评论 -
csp模拟 字符串问题【计数】【组合数学】
传送门又是一个计数题,,在n个数中间填加号,求所有方案的数字和。下面提供两种解法,题解的和来自FSY的。题解:考虑每个区间对数的贡献,要么没有贡献,要么贡献是10的幂。故我们可以枚举使得这个数的系数为10^i时,区间的个数。发现是个组合数。发现这样枚举实际上是固定了该点所在区间的右端点,也就是说固定了一个加号的位置。设当前点为i,对i的贡献为10^j,则右端点为i+j。...原创 2019-11-12 18:48:12 · 221 阅读 · 0 评论 -
csp模拟 骨粉【二分答案】【主席树】
传送门存在离线做法但我不会。因为数据范围可以看出是个二分答案。对于每次mid,验证是O(n)的,复杂度总共n^2logn。我们从简化验证的复杂度入手。因为农作物会自然生长,所以实际上验证的高度是mid+t(询问的t)令v=mid+t;对于每个作物,要骨粉次,我们来简化这个式子。我们可以简单地通过二分计算出前面的和,对于余数,我们用数据结构维护。使用主席树可以...原创 2019-11-12 18:24:09 · 180 阅读 · 0 评论 -
csp模拟 命令方块【结论】【排序】
传送门求出一组字符串的排列满足对于任何三元组i<j<k,lcp(s[i],s[j])>lcp(s[i],s[k]),lcp(s[k],s[j])>lcp(s[k],s[i]).正经的证明是后缀数组。但我们可以感性理解这个结论:按字典序排序即可。感性理解:想象一个trie树。很明显,lcp长度是lca的深度。而lca越深,意味着这两个串的排名越接近。所以我们需要构...原创 2019-11-12 17:20:54 · 167 阅读 · 0 评论 -
csp模拟 生与死的境界【贪心】【带权并查集】
传送门合并使得x,y变成一个x+2y的数,求最后剩一个数的最大值。每次询问针对一个区间。首先发现,这个数列每合并一次,都会对从第二个数开始的所有数,依次多产生系数的贡献,k依次增加。也就是说,合并两个快,对左边的块没有影响。那么我们从最后开始考虑,如果当前块是正数,则和前面块合并,会增大贡献。反之不会。按照这个方式进行到最后得到的块序列除了第一块可能为正,其它块和都是负数,...原创 2019-11-11 21:10:58 · 191 阅读 · 0 评论 -
csp 模拟 八云蓝【计数】【线段树】
传送门其实跟线段树没什么关系。对于这道题,我们发现直接计数复杂度很大。比起对于每个询问,计算有多少个区间被调用,不如对于每个区间,计算有哪些询问调用了它。对于一个询问,我们直接上线段树。然后接下来大力分类讨论。1.不相交不相交还做个鬼,直接跳过。2.相交但不覆盖对于一个相交但不覆盖,不容斥的话,分左右两种。容斥的话,就用总区间数减去不相交数。我选择的不容斥(很难写,...原创 2019-11-11 20:54:04 · 198 阅读 · 0 评论 -
csp模拟 栖息于禅寺的妖蝶【组合数学】【打表】
传送门考场上因为打表打错而失去了发现杨辉三角的机会。答案是令a数组为选出来的数从小到大排序。证明:令数组b[i]=a[i]+i;发现b数组均为偶数,且两两不相同。(后面总不能比前面小)所以每个b对应一个选出来的a。发现b数组最大是n+m,那问题就是从n+m中选m个偶数出来。那就是答案了。#include<bits/stdc++.h>using nam...原创 2019-11-11 20:38:53 · 179 阅读 · 0 评论 -
NOI模拟 学园祭的旅行【线段树合并】【二进制拆分】
传送门好题,学到了二进制查询的一种思想。首先这个异或最大值我们会想到0/1trie,本来合并0/1trie是可以的,但是发现权值会变,然后有点头秃。换个想法。不妨一开始把所有数到根的前缀和都插进去,然后查询的时候记录一个delta就能获知在trie上对应的位置。再一想,这样的区间查询不如使用线段树。使用启发式合并,我们维护重儿子,每次先搜索重儿子,然后让轻儿子合并进来。...原创 2019-11-09 17:06:56 · 267 阅读 · 0 评论 -
NOI模拟 学园祭的游戏【整除分块】【SG函数】
传送门复习博弈论的不错的题,,也是整除分块的不错的题,,首先 明显每堆石子独立。最后将每堆石子的sg异或起来就行。对于每堆石子,内部也是一堆状态的集合。根据题意,我们可以列出这样的式子:首先0~b-1肯定是0,已经输了。然后从b开始数学归纳,,我们发现没增加到下一个b的倍数,sg函数的mex范围就要加一,以至于sg函数值就要增加1。然后手玩找规律数学归纳得出...原创 2019-11-09 16:57:16 · 323 阅读 · 0 评论 -
csp模拟(个鬼)迷雾华光【树分块】【虚树】【树上莫队】【主席树】
传送门两种做法,一种是树分块+虚树,一种是树分块+主席树我使用树分块+虚树,感觉好写一点qwq预处理:随机个关键点(当然是保证两两距离在左右),然后把关键点的lca也点成关键点。即分块。求出每个点向上走第一个关键点,每个点子树中(包括自己)第一个关键点,每个关键点到根路径上的颜色信息和(),任意两个关键点路径上的众数和次数()。有性质:如果一个点不是关键点,则其子树中...原创 2019-11-08 20:26:24 · 333 阅读 · 0 评论 -
csp模拟 药品试验【数学题】
传送门是的,这是个数学题。推导的题。以下证明来自luoyijie聚聚由概率和为1得令d为p的差分数组,即令则,而所以你就可以直接算了。#include<bits/stdc++.h>using namespace std;#define int long longint x,y,z,n,a,b;const ...原创 2019-11-08 20:03:53 · 260 阅读 · 0 评论 -
csp模拟 小猫钓鱼【模拟】【队列】
传送门真就是个模拟,没啥要优化的,打细心点就能过,,注意读题。比如说就算只有一个人,也要把这轮游戏走完才能break啊之类的要仔细审题。注意细节。#include<bits/stdc++.h>using namespace std; #define int long long#define in read()int in{ int cnt=0,f=1;cha...原创 2019-11-08 20:06:52 · 222 阅读 · 0 评论 -
csp-s模拟【模拟】【倍增lca+计数】【dp+kmp】
woj4793~4795今天的难度还真csp啊盘王节题意明晰:对方有御符,兵符,我有兵符。一旦我的某个兵符攻击力大于等于对方的某个符,可以打碎那个符。攻击方式有2:①:打碎对面所有御符,然后可以选择直接攻击对方或者攻击对方兵符(直接攻击获得我的能力值大小伤害)。②:攻击兵符,获得我和对方兵符能力差的伤害,同时击碎兵符。考场60分,因为没有考虑打碎御符后可以攻击对方兵...原创 2019-11-05 17:19:37 · 297 阅读 · 0 评论 -
csp-s 20191102【二分】【树状数组】【计数dp】
woj4790~4792状态不好,当庭GG极好的问题考场脑残,实际上是个很弱的sort二分题。题意告诉我们重复的不用多算,那直接加就行。按%mod余数sort,对于同一个数,选择了,那cnt要-1,如果为0就说明用完了不能用。注意二分边界,注意卡常。#include<bits/stdc++.h>using namespace std;#define in ...原创 2019-11-02 16:20:44 · 121 阅读 · 0 评论 -
测试20191101
受某些原因而鸽了考试,然鹅题也没有做完,只能先鸽为妙。woj4785~4789曾经排队阅读题,,实在是不想写了。只要注意long long平方会爆long long,只需要与1e9+1取min再做就行。#include<bits/stdc++.h>using namespace std;#define in read()#define int long long...原创 2019-11-01 22:55:53 · 147 阅读 · 0 评论 -
NOI模拟20191031【咕】【分治+高消】【中模拟】
woj4782~4784剪刀运送咕。走路见这个博客的T3送分题送xx分,,100个点,100个颜色,每个点每次可以选择成为自己或周围任何一个出点的颜色。求一种2n^2以内的,从起始状态到终结状态的方案。这是道前置结论题。首先研究无解的情况。如果我们保证有合法数量的方案,那还有无解的,只能是终结状态的某种颜色,起始状态没有。接下来考虑怎么转变状态。拆分...原创 2019-10-30 21:34:57 · 196 阅读 · 0 评论 -
csp-s20191030【树状数组】【决策单调+dp】【分治+高消】
woj4780~4782序列上来口糊二分结果GG了。冷静想想,没有单调性,有时候长的可以短的反而不行了。再冷静想想,,前缀和优化肯定是要有的。拆分条件,先满足a的和>0,然后看b的和。前缀和表示就是那就是个大于问题,先按a前缀和sort,然后权值树状数组插进去查前面最远的,跟昨天线段树查前面最大的差不多。记得离散化。#include<bits/stdc...原创 2019-10-30 15:23:21 · 185 阅读 · 0 评论 -
NOI模拟20191029【线段树】【二分+哈希】【迭代+二分】
两个水题一个神题。woj4777~4779光线追踪这个题,,一看就跟oil很像啊,,。一个矩形有效的部分只有左边的和下边的两条线段。另外两条撞不到。所以拆分线段,维护x和y轴两个线段树,下标为离散化后的斜率(可以用map),然后查询对应斜率的x和y,用查出来的x*斜率得到y'和y比较就行。注意:如果查询是垂直或者平行直线,就要看一下。选最近的,或者id小的(因为id小的没有被覆...原创 2019-10-29 20:32:13 · 195 阅读 · 0 评论 -
csp-s20191029【exgcd】【线段树+dp】【最短路】
woj4774~4776数列首先对于每个数是独立的,分开算答案。对于初始的a,b,我们大可以先求一个gcd除掉。其实明眼人都发现这道题是解方程ax+by=key且我们的目标是使x,y的绝对值和最小。那首先解出来,判一下无解,然后开始分情况讨论x,y的合并关系。我们假设a>b。这样x挪一位,y就要付出更多的代价。但如果x和y正负性相反,就可以往0挪,相同就把y往0挪。最...原创 2019-10-29 16:37:20 · 174 阅读 · 0 评论 -
【csplus】20191026【期望结论】【差分+线段树合并】【倍增】
woj4771~4773走格子期望好题,打表也能出结论(不过这样这道题就没意义了(不过连表都没打的人就更sb了))只能从左边或者右边走过来,那平方求和除以2发现就是+1.所以直接输出n。代码不放了。当然想用余弦定理证明也是可以的,见solution。换公路差分好题。要求两棵树上的两条边互相映射过去包含对方。这个包含指的是对方在自己两个端点形成的链上面(这个结论应该很好想到)...原创 2019-10-26 23:24:30 · 156 阅读 · 0 评论 -
Comet OJ - Contest #13【1~5】
传送门ldx聚聚带我们打比赛ouo!A统计一个字符串里面G的数量,不说了。#include<bits/stdc++.h>using namespace std;char ch[100005];int ans;signed main(){ int x;cin>>x; scanf("%s",ch+1);int len=strlen(ch+1); f...原创 2019-10-26 12:24:05 · 176 阅读 · 2 评论 -
【NOI模拟】20191024(线段树*3){线段树,树状数组+优先队列,结论+树形动规}
woj4768~woj4770名字长了点,,不过的确是三个线段树。woj4768speike见这个博客T3。woj4769火锅盛宴签到题。分两个集合。煮熟和没煮熟。同时还要分id。我们用优先队列区分是否煮熟。用树状数组存储每种有多少个煮熟的还在锅里。用vector装每个食物的加入序列(自然有序),然后用isout记录每种食物煮熟了几个,这样可以知道vector当前到哪一位...原创 2019-10-24 20:43:29 · 151 阅读 · 0 评论 -
【csp-s】20191024【结论】【动规】【线段树】
woj4766-47684766tom题目很吓人,实际上很水。从绝对值最小的开始删除,任何时候都联通。那也就是说两个串的任意后缀都联通。如果我把一个串删完了,另一个串还是要联通。所以a和b实际上各自是一个联通块。那随便找一个地方分开然后dfs。根节点明显要用最大的。#include<bits/stdc++.h>using namespace std;...原创 2019-10-24 15:18:09 · 1344 阅读 · 0 评论 -
【cs(plus)^(20)】20191022【模拟】【联通块分析】【思维分析消圈】
今天前两题都挺水的,,第三题考了个啥啊woj4759到4761,spongebob求出每个直线和x轴的交点。很明显在指定点左边的,都是递增,右边都是递减。那就直接模拟就好了。一开始都加上正k。然后每过一个分界点就改一个。取最小。记得inf开的够大。#include<bits/stdc++.h>using namespace std;#define in r...原创 2019-10-22 18:17:39 · 175 阅读 · 0 评论 -
【csp-j】20191021【模拟】【搜索】【二分】【AC自动机】
传送门咕了。特殊排序数字交换就行。(我竟然写挂了日)代码不放了,,反正是错的。部落卫队强行dfs哈哈哈哈哈加个最优性剪枝#include<bits/stdc++.h>using namespace std;#define in read()int in{ int cnt=0,f=1;char ch=0; while(!isdigit(ch)){...原创 2019-10-21 17:26:12 · 186 阅读 · 0 评论 -
csplus 20191017 【咕】【二维偏序】【最短路构图】
woj4756补票辣鸡前缀和题目。跟去年普及第二题差不多还简单很多。#include<bits/stdc++.h>using namespace std;#define in read()#define int long longint in{ int cnt=0,f=1;char ch=0; while(!isdigit(ch)){ ch=getchar()...原创 2019-10-17 14:28:40 · 174 阅读 · 0 评论 -
csp-plus 20191015 【模拟】【结论+排序】【位运算】
数独woj4218咕咕咕分糖果woj4219交换两个找结论,证明贪心。发现min(a,d)<min(b,c)成立。但实际上如果sort的话,这个结论是不完全正确的。因为不满足传递性和非等式性。真正的证明见洛谷题解第一个不过写个最弱的也能过woj。#include<bits/stdc++.h>using namespace std;#def...原创 2019-10-15 21:43:41 · 142 阅读 · 0 评论 -
【NOI模拟】Juice【结论】
传送门题目可以qq找我这题也是很nb,,服了气。就是说,如果你看不出结论1,你就GG退赛了。假设答案为m,将每个果汁的数量乘以m,保证总数量为S*m(S是果汁原数量合)现在问题转化为将所有果汁放进m个桶,每个桶容积是S。结论1:对于任何a种果汁数量合为(a-1)*S,均可以用(a-1)个桶装完。归纳证明:a=2显然成立。a>2,令最多果汁数量为Max,最少为M...原创 2019-10-15 17:23:15 · 134 阅读 · 0 评论 -
【NOI模拟】Forest【set】
传送门题目可以qq找我要每个点只有一个出点。维护权值c。同样我们从修改对答案的影响这个角度来思考问题。如果我修改了一个点的出边,就会修改度数,修改度数就会修改E。而修改E会修改这个点周围一圈的所有C。这号rilong啊,,复杂度爆炸。抓住出边为1这个条件。再将被影响的点分类。父亲:单点修改,我:单点修改,儿子们:一大群,我们可以找个什么东西来维护。我们发现权值的计算公式...原创 2019-10-15 16:40:28 · 115 阅读 · 0 评论 -
csplus 20191012 【点双/差分】【AC+矩阵】【线优+拓扑】
见woj4749到4751。困难的图论只在一个环里的边。第一眼就是点双联通。而且如果一个环内边数大于点数,就肯定不止一个环。所以点数必须等于边数,缩了即可。当然还有更简单的方法:参照之前那个Fairy,这个就只需要打树上差分就行了。#include<bits/stdc++.h>using namespace std;#define in read()in...原创 2019-10-12 14:31:58 · 142 阅读 · 0 评论 -
【LOJ NOI Round#2 Day1 T1】单枪匹马【矩阵】
传送门支持后面加数,区间进行奇怪的要求操作算值。你看这个操作是个线性的迭代,这种时候就应该想到线性代数,那就想到矩阵。你就强行用矩阵表示,然后手玩一下结果矩阵来反推原来的矩阵。手玩出来每个数的初始矩阵是0 11 a[i]其中右下角是分子,右上角是分母。正确性?找两个矩阵乘起来就正确了。那么一个区间可以视作1到r的矩阵乘去掉1到l-1。这个去掉操作联想乘逆元,...原创 2019-10-11 16:03:31 · 163 阅读 · 0 评论 -
【csplus-s】20191009【01背包】【单调队列二分】【最小生成基环树】
woj4743一眼水题。数据又小,预处理一下背包完事。#include<bits/stdc++.h>using namespace std;#define in read()int in{ int cnt=0,f=1;char ch=0; while(!isdigit(ch)){ ch=getchar();if(ch=='-')f=-1; } whi...原创 2019-10-09 16:32:43 · 175 阅读 · 0 评论