- 博客(50)
- 收藏
- 关注
转载 20190927CF训练
A. Trip For Meal给定一个三角形,你要在三角形上不断地走n步,可以走回头路,问你最短路是多少贪心地走当前能走的最短边即可,模拟一百能过代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) ...
2019-09-27 20:32:00
205
转载 20190926CF训练
大翻车局,被憨憨二维前缀和卡死A、Radio Station大模拟,没什么好说的,输出对应ip地址的名字即可代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%lld %lld",&a...
2019-09-26 09:05:00
149
转载 P2300 合并神犇(DP)
考虑这样一种分段策略,last表示合并到该位置的最小值,dp则表示最小次数有一种特别的样例:3 2 2 2 6有以下两种合并策略:3 6 63 4 8虽然合并次数相同,但是考虑到对后面的序列的影响的时候,选取3 6 6显然是更优的因为他尽量保证了最大值不要太大,尽可能减少后面部分需要的合并次数那么dp方程就很容易搞出来了:dp[i]=min{dp[j]...
2019-09-23 17:34:00
206
转载 P1805 关灯、P2438 [SDOI2005]解环(找规律)
双倍经验,由于要高精所以上了一发python打表之后上oeis找的规律,a[n]=n^n/2^n/4^...^a/(2^m)其中2^m<=n然后是代码:n=eval(input())a=[float(n) for n in input().split()]base=1ans=0for i in range(n): if a[i]==1:...
2019-09-23 17:02:00
252
转载 P3203 [HNOI2010]弹飞绵羊(分块)
双倍经验:https://www.cnblogs.com/oneman233/p/11511272.html就是注意这题是0到n-1的下标代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("...
2019-09-23 00:21:00
105
转载 P1074 靶形数独(爆搜)
说是爆搜,却还是有点技巧首先数独应该有个想法,从最有可能填上数字的那些地方开始也就是说哪些行0最少,就从那儿开始为了最大限度地利用已有信息,就先把所有0的位置扣出来单独填最后别忘了回溯就行但是这种做法仍然过不了下面这个样例:0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0...
2019-09-22 19:01:00
79
转载 P1484 种树(堆)
堆优化的贪心,考虑种一棵树的最大收益,种了当前树两旁的树之后的收益为a[i-1]+a[i+1]-a[i]用双向链表维护住左右关系,大根堆则可以“反悔”,维护另一个记录某个坑能不能种树的数组即可代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a...
2019-09-22 11:50:00
90
转载 20190918CF训练
A、Serial Time!分层dfs大爆搜,每次往六个方向搜,搜一次答案加一即可代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%lld %lld",&a,&b)#...
2019-09-21 12:07:00
110
转载 20190919CF训练
A、Border给你一堆数字,你可以从这些数字取出任意多个组合成一个新的数字,问你这个新的数字在k进制下的最后一位一共有多少种情况首先考虑k进制下的最后一位是这个数字对k取余,然后有一个扩展贝祖定理:a1x1+...+anxn=d*gcd(a1...an)其中d是正整数那么把gcd求出来然后算20000次倍数丢进set即可代码:#include <b...
2019-09-20 16:25:00
122
转载 P3806 【模板】点分治1
模板*0x3f3f3f3f详解参见:http://www.mynameisdhr.com/%e7%82%b9%e5%88%86%e6%b2%bb/代码:#include <bits/stdc++.h>using namespace std;const int maxn=500005;const int inf=0x3f3f3f3f;int ...
2019-09-19 16:58:00
71
转载 P1868 饥饿的奶牛(线性dp)
在坐标轴上建立dp,储存每个区间可以从哪儿转移过来,最后记得判断一下边界条件即可代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%lld %lld",&a,&b)#def...
2019-09-18 15:14:00
146
转载 20190916CF训练
A. Checkout Assistant大意是你可以花c时间购买一个商品,然后得到任意的t的物品,最小化花费一个类01背包,对每件物品枚举购买后时间结束的位置,用购买时的dp更新当前时间点初始dp最大化,只有dp[0]设为0坑点是对于那些小于t的时间,意味着不能在那些时间购买该物品,所以要用c更新那些位置的dp值代码:#include <bits/st...
2019-09-17 17:45:00
96
转载 P2962 [USACO09NOV]灯Lights(高斯消元加异或方程组)
很神秘的一道题,给定一些灭了的灯,如果某盏灯由亮变暗,与它直接有边相连的所有灯的状态都要改变问最少开关多少盏灯才能把所有的灯都点亮,数据保证有解首先考虑每盏灯的状态最多被更新一次,否则就多出了“无用操作”,不满足最小化答案的条件假设我们现在已经得到了原图的邻接矩阵,并且用x[i]表示第i个点被点击了x[i]下可以得到如下的一个神秘方程组:( a[i][1] * x[1...
2019-09-17 16:12:00
123
转载 P3389 【模板】高斯消元法
就只是个模板而已,参见http://www.mynameisdhr.com/%e9%ab%98%e6%96%af%e6%b6%88%e5%85%83/代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) sca...
2019-09-17 15:31:00
82
转载 P4979 矿洞:坍塌(珂朵莉树)
珂朵莉树*2,开吸氧快得如同漂移顺便读入也实在恶心,疯狂用getchar()读入的代码:#include <bits/stdc++.h>//#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%lld %lld",&a,&b)...
2019-09-17 13:28:00
113
转载 P2424 约数和(数论分块)
原式可以考虑化为:sigma(sigma(d) (d|i) ) (1<=i<=n)显然上式是满足前缀和性质的,现在考虑如何简化sigma(d)换一种思考方式,枚举因数d,看它在[1,n]中出现了几次不难发现出现次数为n/d(向下取整)这时原式已经化为:sigma(i*(n/i)(向下取整))于是可以用数论分块的性质以及等差数列求和代码:...
2019-09-17 10:34:00
228
转载 P2261 [CQOI2007]余数求和(数论分块+模的定义)
数论分块入门,详见:http://www.mynameisdhr.com/%e6%95%b0%e8%ae%ba%e5%88%86%e5%9d%97%e5%84%bf%e5%92%8c%e5%8f%96%e4%bd%99%e7%9a%84%e6%9c%ac%e8%b4%a8/首先意识到:a%b=a-b*(a/b)那么把原式转化为:sigma(k-i*(k/i)) (1<...
2019-09-16 22:33:00
140
转载 P2787 语文1(chin1)- 理理思维(珂朵莉树)
珂朵莉树模板,区间排序就暴力地取二十六个字母出来并且计数,然后重新从小到大插入即可注意一下大小写不敏感的toupper函数代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%lld %ll...
2019-09-16 17:37:00
175
转载 P1072 Hankson 的趣味题(数论)
给出方程组:gcd(x,a0)=a1lcm(x,b0)=b1在保证a1是a0的因数且b0是b1的因数的情况下,求解满足条件的x有多少个考虑到x既是a1的倍数又是b1的因数,可以sqrt(b1)枚举因数然后检查是否满足条件注意for循环里得先判断是不是因数,否则会爆T代码:#include <bits/stdc++.h>#define int...
2019-09-16 14:30:00
106
转载 P2341 [HAOI2006]受欢迎的牛|【模板】强连通分量(tarjan)
强连通板子,先缩点,然后考虑只有出度为0的点才可能成为答案,但是如果出度为0的点有多个答案则为0我用并查集维护了是否在一条链上的关系代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%ll...
2019-09-14 12:01:00
108
转载 P5496 【模板】回文自动机(PAM)(回文自动机)
板子*2,纯粹是测试模板有没有写挂的代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%lld %lld",&a,&b)#define sccc(a,b,c) scanf(...
2019-09-14 11:25:00
151
转载 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm(tarjan)
给你一张无向图,保证每个点的出边只有一条求出从每个点出发,直到访问到已经访问过的点时经过的点数tarjan线缩点,环会被缩成一个强连通分量,不难发现环上的所有点的答案都是环长最后来一遍dfs,求出所有点到环的距离第一次dfs没写return,WA的莫名其妙代码:#include <bits/stdc++.h>#define int long l...
2019-09-14 10:53:00
69
转载 P3649 [APIO2014]回文串(回文自动机)
回文自动机裸题,把PAM建出来以后对每个节点更新答案即可代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%lld %lld",&a,&b)#define sccc(a,b...
2019-09-13 18:20:00
92
转载 CF339D Xenia and Bit Operations(线段树)
乱搞线段树,单点修改,每次询问整个表达式的值不同点在于up函数需要进行修改,根据区间长度不同运算符号也有所不同代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%lld %lld",&am...
2019-09-13 18:03:00
91
转载 CF12D Ball(cdq)
同样鸽了很久的三维偏序,不同点在于保证没有重复的三元组,但是要求的是严格大于。基本思路跟带等号的cdq一模一样,但是要极度注意一个细节比如有两个三元组(1 1 1)和(1 2 3),在三个元素都严格大于的情况下,显然第二个三元组不能大于第一个三元组这意味着在对初始序列执行第一次排序的时候,首先按照第一维由大到小排序但是如果第一维相等,那么第三维更小的应当排在前面事实上...
2019-09-12 22:48:00
146
转载 P3805 【模板】manacher算法(马拉车)
就是个模板,鸽了很久才搞定,求最长回文子串长度,参见:http://www.mynameisdhr.com/%e9%a9%ac%e6%8b%89%e8%bd%a6/代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a...
2019-09-12 22:16:00
92
转载 P1462 通往奥格瑞玛的道路(最短路)
一张无向图,边有边权,点有点权,每经过一条边会失去一些血量问你在血量时刻非负的情况下,到达终点路径上经过的所有点的点权的最大值的最小值有重边,不能抵达输出AFK二分经过点权的最大值,每个二分都重建图跑dij,点权超限的点不能连边一开始没判AFK以及dij写错了居然得了60代码:#include <bits/stdc++.h>#define in...
2019-09-12 20:09:00
61
转载 CF13E Holes(分块儿、LCT)
给你一堆弹簧,每个弹簧有一定的弹跳距离现在把球放到任意一个弹簧上,问需要几次球跳过所有弹簧,并且输出最后一个跳出去的位置还要支持更改操作一开始乱胡并查集,但是不行,一旦路径压缩就死亡,直接暴力搞又Trhy后来说是LCT裸体,维护每个点的深度和最靠近根节点的祖先就行,根节点编号不妨设为n+1,甚至是某一年OI原题没想到分块儿也可以搞,把同一块内的暴力维护,块间直接跳,省...
2019-09-12 12:30:00
72
转载 CF47D Safe(dfs)
给你一堆01串s,每个01串s都有一个对应的数字k你需要找到有多少个01串满足与每个s不同的数字个数都是k一开始写了个bitset异或乱搞,结果T了,改成dfs暴力往下搜就完事了枚举每一位上的数字,有不相同的数字超过了k则剪枝,甚至加了map去重代码:#include <bits/stdc++.h>using namespace std;i...
2019-09-10 21:21:00
122
转载 CF12C Fruits(贪心)
题意是给你一些价格标签和一堆水果,水果的数量可能不为1,你要给每种水果任意地贴上价格标签使得总价格最大/最小贪心搞一下就完事了,先用map把每种水果的数量搞出来,因为输入的时候是按照水果名字输入的然后把价格的升降序和水果数量的升降序分别比较一下,一共四种情况代码:#include <bits/stdc++.h>#define int long long...
2019-09-10 21:12:00
337
转载 POJ 2778 DNA Sequence(AC自动机加矩阵快速幂)
关于矩阵的幂,参见:http://www.mynameisdhr.com/%e7%9f%a9%e9%98%b5%e7%9a%84%e5%b9%82/题意是给你m个致病DNA序列,只包含四种字符ATCG,现在问你任意的长度为n的DNA序列当中有多少种不包含致病DNA序列的首先建立AC自动机,考虑一些fail树上的性质,某个节点的fail边指向的是某个串的前缀与当前串后缀相同的位置...
2019-09-10 17:53:00
109
转载 P1346 电车(floyd)
洛谷图论训练场的水题有很多路口,每个路口的开关默认指向一条路,一个路口可能与很多条路相连,也可能存在环如果你想走其他的路,必须要扳动一次开关,问你从A到B最少扳动几次开关,不能抵达输出-1首先在某个路口我最多扳动一次开关,否则就走了“回头路”,一定不是最短路接下来就是裸的floyd,默认指向的那条路边权为0,其他路为1,跑一遍floyd,注意特判无法抵达的情况代码:...
2019-09-10 16:27:00
107
转载 P1522 牛的旅行 Cow Tours(floyd)
给你平面上的一些点,一开始有一些点是相连的,相连的边权是两点间的欧几里得距离,输入数据保证至少存在一组互相不相连的点把相连的点叫做一个联通块,一个联通块的直径是其中任意两点间最短路长度的最大值现在你需要在两个联通块中间连一条边,使得新生成的联通块的直径最小一开始胡了个复杂度爆炸的算法上去,O(n^4),先跑一边floyd,然后暴力枚举在哪两个点连边,每次n^2更新距离并且找距...
2019-09-10 16:11:00
94
转载 P4168 [Violet]蒲公英(分块)
询问区间最小的众数先离散化,nsqrt(n)预处理,然后我用vector存了每个值对应的位置,每次二分地找某个值在指定区间当中出现了几次不开O2疯狂TLE,开了就过了,vector大法好,可以顶平衡树代码:#include<bits/stdc++.h>using namespace std;const int maxn=500005;const...
2019-09-10 01:25:00
113
转载 Codeforces Beta Round #72 (Div. 2 Only)
A、总感觉在哪里见过,n个人和n个人对打,一回合每个人至多干掉一个人,两方轮流行动问你三回合之后最多死多少个人,保证n是偶数猜个结论,第一回合干掉另一边的1/2,第二、第三回合同理代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#...
2019-09-09 20:59:00
110
转载 CF1083A The Fair Nut and the Best Path(树形dp)
给定一棵包含n个结点的树,树上的每个结点拥有点权wi,每一条边拥有边权ci你可以从树的某个结点出发,沿着树边通往一个未曾经过的结点。每当你到达一个新的结点(包括起点)时,你能获得该结点点权的收益,同时,每经过一条树边,你都会损失该条边边权的收益。你需要规划出一条路径,使得你在沿着该路径行进的任意时刻收益值均非负,且行进结束时的收益值应尽可能大。输出结束时的最大收益值。...
2019-09-09 17:59:00
116
转载 P2731 骑马修栅栏 Riding the Fences(欧拉路径)
欧拉欧拉欧拉给你一张图,求一条字典序最小的欧拉路径欧拉路径模板,用栈存储一下访问路径,注意不能在dfs当中直接输出路径,否则会WA另外一个坑点是有重边,所以要用邻接矩阵记录i到j有几条路径,每次访问则邻接矩阵减一关于欧拉路的总结参见:http://www.mynameisdhr.com/%e5%85%b3%e4%ba%8e%e6%ac%a7%e6%8b%89%e8%b7%...
2019-09-09 00:54:00
82
转载 P2016 战略游戏(最小点覆盖)
给你一棵树,要选出最少的节点使得树上所有的边都与这些节点相连最小点覆盖裸题,最小点覆盖=最大匹配数无向图当中最大匹配数要除以2代码:#include <bits/stdc++.h>#define int long long#define sc(a) scanf("%lld",&a)#define scc(a,b) scanf("%lld...
2019-09-09 00:04:00
53
转载 P4092 [HEOI2016/TJOI2016]树(树链剖分)
给定一棵以1为根的树,支持两种操作:给某个点打上标记,询问某个点最近的有标记的祖先比板子还裸,每次打标记就意味着把这个节点以及它的所有子树的值设为当前节点的编号甚至不需要up操作,只需要把当前标记下传即可,下传时候注意比较标记与当前值的编号由于是找最近的祖先,应当确保值的深度最大此外build操作时候把所有节点的值设定为1即可,因为默认1是有标记的代码:#in...
2019-09-08 22:47:00
129
转载 T96070 试验密码(思维)
最佳的方案一定是1 2 3 4 5...n,这样的话试出正确答案的期望是: 1/n*(1+2+3+...+n)=1/n*(1+n)*n/2=(n+1)/2由于要求向上取整,输出(n+2)/2即可但是爆longlong,于是上了大数板子代码:#include <bits/stdc++.h>#define MAXN 9999#define...
2019-09-08 21:05:00
72
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人