- 博客(176)
- 收藏
- 关注
原创 Educational Codeforces Round 36 (Rated for Div. 2) C. Permute Digits
显然我们是想求一个满足条件的字典序最大的排列,那么对于每一位,我们从可放置的最大数出发,找出在当前状况下后续能排出的最小序列,跟b比较,如果最小序列比b小,那么这一位就可以放最大的数。#include<cstdio>#include<iostream>#include<algorithm>#include<string>using n...
2018-07-12 10:39:43
305
原创 (模板)Splay维护区间序列(洛谷P3391)
题目: 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 输入格式: 第一行为n,m n表示初始序列有n个数,这个序列依次是1,2,3,……,n, m表示翻转操作次数 接下来m行每行两个数 [l,r][l,r] 数据保证 1≤l≤r≤...
2018-07-11 17:18:48
583
原创 Codeforces Round #496 (Div. 3)
A. 统计1的个数即可,注意最后一个数必定是某个台阶的最后一级也就是级数即可。#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<vector>using namespace std;int main(){ ...
2018-07-10 22:22:54
304
原创 (模板)Splay 平衡树
不会讲解,直接上板子,按照洛谷P3369的要求#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int MAXN=1000000;int ch[MAXN][2],f[MAXN],size[MAXN],cnt[MAXN],key[MAXN];...
2018-07-10 20:34:58
264
原创 Codeforces Round #487 (Div. 2) C. A Mist of Florescence
构造的思路比较暴力,如图。 但是代码其实不太好写#include<cstdio>#include<iostream>using namespace std;int main(){ int i,x,y,c[4]; for(i=0;i<4;i++)cin>>c[i],c[i]--;//预留一个给大的包围块 cout&...
2018-07-10 10:07:40
253
原创 Codeforces Round #488 by NEAR (Div. 2)
A.#include<cstdio>#include<iostream>#include<set>#include<algorithm>using namespace std;int main(){ int n,m,i,j,k; set<int>s; cin>>n>>m;
2018-07-10 09:55:21
233
原创 Codeforces Round #495 (Div. 2)
A. 直接模拟或者统计相邻两点距离与d*2的关系即可。 当时写的直接模拟,代码不是很好看#include<cstdio>#include<iostream>#include<cmath>#include<set>using namespace std;int loc[105];int main(){ int n,d,...
2018-07-09 11:23:28
233
2
原创 Codeforces Round #494 (Div. 3)
A. 显然统计一下最多的那个就可以了#include<cstdio>#include<iostream>#include<map>using namespace std;int main(){ int n,i,j,k; map<int,int>mp1; cin>>n; for(i=1;i...
2018-07-08 15:57:33
184
原创 Codeforces Round #493 (Div. 2)
A. 其实3袋或以上是一定可以满足题目要求的,枚举一下即可#include<cstdio>#include<iostream>using namespace std;int main(){ int n,i,j,k,sum=0; cin>>n; if(n==1){ cout<<-1<<...
2018-07-08 09:46:38
272
原创 Educational Codeforces Round 46 (Rated for Div. 2)
A. 非常暴力枚举一下即可#include<cstdio>#include<iostream>#include<string>#include<map>#include<algorithm>using namespace std;int main(){ map<string,int>mp1,mp...
2018-07-07 20:38:27
250
原创 Codeforces Round #491 (Div. 2)
A. 简单的容斥原理,注意一些奇怪的大小问题即可。#include&lt;cstdio&gt;#include&lt;iostream&gt;using namespace std;int main(){ int a,b,c,n; cin&gt;&gt;a&gt;&gt;b&gt;&gt;c&gt;
2018-06-29 21:43:16
212
原创 Codeforces Round #490 (Div. 3)
A. 直接拿个deque模拟一下就完了#include<cstdio>#include<iostream>#include<deque>#include<algorithm>using namespace std;int main(){ int n,k,i,j,cnt=0; cin>>n>>...
2018-06-22 21:44:16
334
原创 Codeforces Round #489 (Div. 2)
A. 稍加思考就会发现其实只要知道其中非0的不同的数有多少个就可以了。#include<cstdio>#include<iostream>#include<set>using namespace std;int main(){ int n,i,j; set<int>s; cin>>n; ...
2018-06-20 21:31:05
273
原创 2018 Spring Training STL
https://cn.vjudge.net/contest/234044#overview 总体而言一部分傻逼题一部分难题 A. 傻逼题1 拿stack模拟一下即可。#include&amp;amp;lt;cstdio&amp;amp;gt;#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;string&amp;amp;gt;
2018-06-09 23:44:41
282
原创 POJ 1179 (DP)
关键就是要想到最大值可能是负负得正得来的,所以我们还需要维护区间的最小值,别的就不难了,很单纯的区间dp lyd的书上的详解: #include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<...
2018-06-06 23:04:06
297
原创 2018 Spring Training 数据结构
这次的题目不少难度还是挺大的,对萌新挺不友好哇233…只会做一部分了2333 基本上就是,要么不会做,要么会做不想写贼复杂那种…A.BZOJ1007 可以观察到,我们要求的是一个凹形的图形。 首先,我们先按k升序为第一关键字,b降序为第二关键字,然后用一个单调栈(单调队列)来维护这些直线。 若当前直线i能完全覆盖栈顶直线s[top],也就是上一条加进去的直线(不一定是第一条直线哦),则...
2018-06-05 16:20:38
253
原创 二维树状数组(模板,单点更新区间求和)
updata:在(x,y)处加上v query:区间(0,0)到(x,y)的所有数之和 sum:容斥原理求区间所有数之和,(x,y)左上角,(xx,yy)右下角。坐标是从左往右,从上往下增大。int N;int c[maxn][maxn];inline int lowbit(int t){ return t&(-t);}void update(int x,int ...
2018-06-03 17:36:10
399
原创 Codeforces Round #462
A.题目不难,但是如果想要用一些巧妙的方法去做的话….会变得很麻烦,要非常仔细地考虑各种可能。然而题目数据范围是如此的小,所以还不如暴力枚举所有的乘积,然后把最大的乘积所在的那一组数全部删掉,也就是第一个人应该删掉那个数。然后在剩下的数里找最大的数即可。#include<cstdio>#include<iostream>#include<algorithm...
2018-05-31 23:55:23
233
原创 洛谷P4009 汽车加油行驶问题
虽然写着网络流,但是似乎spfa跑最短路更好做一些。 需要注意的是如果某个地方有油站,那么是一定要加满油才能往后走的。 然后距离的记录以及边与平时的spfa有一些不同。 每个点如果有油,可以往4个方向转移。 别的就没有什么了。#include<cstdio>#include<iostream>#include<algorithm>#incl...
2018-05-31 21:15:08
524
原创 有上下界的网络流 做法总结
无源汇可行流建图方法 将有上下界的网络流图转化成普通的网络流图首先建立附加源点ss和附加汇点tt 对于原图中的边x-&amp;gt;y,若限制为[b,c],那么连边x-&amp;gt;y,流量为c-b 对于原图中的某一个点i,记d(i)为流入这个点的所有边的下界和减去流出这个点的所有边的下界和 若d(i)&amp;gt;0,那么连边ss-&amp;gt;i,流量为d(i) 若d(i)&amp;lt;0,那么连
2018-05-30 21:58:03
614
原创 LOJ 116 有源汇有上下界最大流(模板)
建图方法 将有上下界的网络流图转化成普通的网络流图首先建立附加源点ss和附加汇点tt 对于原图中的边x->y,若限制为[b,c],那么连边x->y,流量为c-b 对于原图中的某一个点i,记d(i)为流入这个点的所有边的下界和减去流出这个点的所有边的下界和 若d(i)>0,那么连边ss->i,流量为d(i) 若d(i)<0,那么连边i->tt,流量...
2018-05-30 21:53:28
364
原创 LOJ 117 有源汇有上下界最小流(模板)
建图方法 将有上下界的网络流图转化成普通的网络流图 首先建立附加源点ss和附加汇点tt 对于原图中的边x-&amp;amp;gt;y,若限制为[b,c],那么连边x-&amp;amp;gt;y,流量为c-b 对于原图中的某一个点i,记d(i)为流入这个点的所有边的下界和减去流出这个点的所有边的下界和 若d(i)&amp;amp;gt;0,那么连边ss-&amp;amp;gt;i,流量为d(i) 若d(i)&amp;
2018-05-30 21:48:21
406
1
原创 Codeforces Round #485 (Div. 2)
A.暴力乱搞 B.找规律,会发现(2,3)(2,4)以及有一个数是1的时候是需要特判的,其余情况下小的那个数的幂次方总是比较大。#include<cstdio>#include<iostream>using namespace std;int main(){ int x,y; cin>>x>>y; if(x=...
2018-05-30 16:15:59
383
原创 2018 Spring Training 图论 合集
https://cn.vjudge.net/contest/229893#overview 题目链接 A.Uva 302 判断能不能走就是一个一笔画问题,(欧拉回路),因为题目要求是要回到原点,因此所有点的度都必须是偶数才能满足要求。操蛋的是输出路径的时候是要输出路径 编号并且要求输出路径编号字典序最小的路径。本蒟蒻没想到什么好办法,于是每个点拿了一个map存路径,第一个键值是路径的编号,...
2018-05-27 19:05:42
250
原创 Educational Codeforces Round 38 (Rated for Div. 2)
A. 签到模拟题#include<cstdio>#include<iostream>#include<string>#include<algorithm>using namespace std;bool isvowel(char c){ return c=='a'||c=='e'||c=='i'||c=='o'||c==...
2018-05-25 16:42:29
201
原创 2018 Spring Training 字符串合集
A.HDU3374 题目其实很简单,就是求给定串的最大最小表示法,然后求出现的次数的话,就把原串复制一遍接在串尾,然后跑一遍kmp求出现次数即可。#include&amp;amp;amp;lt;cstdio&amp;amp;amp;gt;#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include&amp;amp;amp;lt;string&amp
2018-05-24 20:08:40
319
原创 字符串的最小表示法(模板)
循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。 由于语言能力有限,还是用实际例子来解释比较容易: 设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca。而且最小表示的S’是adbc。 对于字符串循环同构的最小表示法,其问题实质是求S串的一个位置,从这个位置开始循环输出S,得...
2018-05-24 19:55:10
351
原创 (模板)扩展KMP算法
#include&lt;iostream&gt;#include&lt;string&gt;using namespace std;/* 求解T中next[],注释参考GetExtend() */void GetNext(string T, int next1[]){ int t_len = T.size(); next1[0] = t_len; int a;...
2018-05-23 21:07:52
232
原创 Codeforces Round #481 (Div. 3)
比较简单的一场,除了个别题目需要小心一些细节之外都很裸很暴力; A. xjb乱搞就行。#include<cstdio>#include<iostream>#include<algorithm>#include<vector>using namespace std;bool appear[1005];int main(){ ...
2018-05-23 15:56:31
240
原创 Educational Codeforces Round 44 (Rated for Div. 2)
A. 注意到是全部放在黑格或者全部放在白格就可以,那就暴力枚举呗。把棋子按位置排序之后依次放在最左边空着的格子上统计一下就OK了。#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<set>#include<...
2018-05-22 21:02:31
249
原创 Codeforces Round #484 (Div. 2)
A. 记得特判n=1时的情况即可。#include&amp;amp;lt;cstdio&amp;amp;gt;#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;algorithm&amp;amp;gt;#include&amp;amp;lt;cstring&amp;amp;gt;#include
2018-05-19 10:23:02
225
原创 Codeforces Round #483 (Div. 2)
B. 全部扫一遍即可,注意每个点相邻的点可以有8个之多。#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;char map1[105][105];int move1[8][2]={-1,0,1,0,0...
2018-05-18 00:10:13
210
原创 Codeforces Round #482 (Div. 2)
B. 大意就是尽量弄成单个字母那种,这一定是最优的。我们首先扫一遍当前序列,找出当前情况下出现次数最多的子串(字母),然后如果除了这个字母以外,剩下的字母个数比n大的话,答案就是出现次数+n。 否则,如果替换剩下所有字母后n还剩偶数次,那么我们随便找一个字母消磨掉次数即可。否则的话,最后一个字母被替换掉我们不做替换,这样剩下偶数次,头两次内我们把那个没换的字母换成我们想要的字母,然后消磨掉...
2018-05-17 23:50:01
218
原创 SGU 194/LOJ 115(无源汇可行流模板)
题意:给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质。并且满足每根pipe一定的流量限制,范围为[Li,Ri].即要满足每时刻流进来的不能超过Ri(最大流问题),同时最小不能低于Li。例如:46(4个点,6个pipe) 12 1 3 (1-&gt;2上界为3,下界为1...
2018-05-17 19:19:17
577
原创 POJ2826
一直在wa,搞来搞去也不知道为啥,先立个flag 6259 2664 8292 9080 1244 2972 9097 9680 答案是6162.65,一直在输出0… #include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include<io...
2018-05-15 18:51:06
334
原创 POJ 1696
题目思路还是很巧妙的…题解可以看这个:https://blog.youkuaiyun.com/u013480600/article/details/40125055 总体而言就是一个类凸包的思路,但是不同点在于凸包只按初始的横坐标最小的点排一次极角序,然后对于后面每个点判断这个点是否在凸包上。而这里每次都把当前极角序最小的点加入答案,然后将后面的点按照这个点为初始点再排一次序。另外,此题找最初始点的时候根据...
2018-05-13 23:16:09
270
原创 POJ1066
题意:有一个100x100的正方形,其实也就是有四面墙围成的一个图形,正方形中间有一个点,也就是宝藏所在的位置,除此之外还有内墙,为你从外面到宝藏哪里,最少炸几面墙就可以到达 解析:枚举每一面内墙的起点和终点与宝藏连线,判断和几面内墙相交,除此之外还要枚举正方形的四个端点. 特别注意当判断了枚举的直线与线段相交以后要注意判断交点是否在线段上。 (似乎还有一种做法,bfs,先枚举线段所有的中...
2018-05-13 16:04:09
328
原创 POJ1556
解法大致如下: 注意一下加点的顺序即可,特别起点终点不要漏了。还有就是叉乘真的玄学…用了原先模板里的叉乘疯狂wa,换了一个就AC了QAQ… 似乎判断直线与线段相交的问题都要用这种叉乘…单存算两个向量的叉乘好像有点问题,问题暂时不明。#include <cstdio>#include <cmath>#include <algorithm>#i...
2018-05-12 20:08:16
632
原创 POJ3304
重点是叉积判断直线是否相交吧…不过wa了无数遍一直过不去…我也不知道为啥qwq… 抄了一份AC代码:/*Memory 200KTime 32MS */#include <iostream>#include <math.h>using namespace std;#define MAXM 110#define EPS 1e-8typede...
2018-05-11 19:44:44
526
原创 POJ2318&&POJ2398
主要利用叉积的一点性质;对于每个点暴力遍历所有的边即可; #include &lt;cstdio&gt;#include &lt;cmath&gt;#include &lt;algorithm&gt;#include &lt;vector&gt;#include&lt;iostream&gt;using namespace std
2018-05-10 19:59:33
242
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人