自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(192)
  • 收藏
  • 关注

原创 51nod 1053 最大M子段和 V2

题意就是让你选择m段不想交的区间使的和最大,hk比赛的时候遇到的,当时不会做,后来大佬说是上古原题,51nod上找到了,我们首先预处理区间,把区间变成正负相替的区间,然后开始删区间,使得剩下的区间个数为m个,我们现在有两个选择,可以选择删一个正数区间,使得两个负数区间相连,或者删除一个负数区间,使得相邻的两个正数区间相连。每次删除的时候都要删除能删除的里面的最小值,所以我们可以用一个set维护绝对...

2018-11-20 20:56:16 246

原创 CF edu54 E

题意是给你一棵树,m次操作,每次操作将点v的子树中深度小于等于d的点加x,这道题的点是只将子树中符合条件的相加,所以可以直接树上差分#include<bits/stdc++.h>using namespace std;using LL = int64_t;const int maxn=3e5+5;LL ans[maxn],dep[maxn],now=0;vector<...

2018-11-14 11:29:24 249

原创 hdu 5513 三分+找规律

和精度斗智斗勇的一晚上,以为保留两位小数精度要求不会很大,结果卡了一晚上,这道题是说给你N个点构成的一个凸多边形,对于每个点画一个圆,要求相邻两个圆必须相切,求所有圆的面积最小值为多少。这道题刚开始卡在fixed上,因为数据量比较大,所以每次用fixed会超时,改成scanf以后就好了,另一个坑点是求总面积,用∑(riripi)会wa,必须用∑(ri*ri)*pi,这又改了好长时间才发现。这道题的...

2018-11-05 21:40:44 360

原创 hdu5527贪心

2015年的长春ACM现场赛的一道金牌题,今天做了做重现赛,刚上来就看A,感觉是道xjb贪心的题,看到好多签到题就去做了,最后反应过来的时候居然没人做这题,终榜的时候也只有很少的人做出来,以为是自己想简单了,结果发现就是一道贪心题,不过很有意思。首先我们要使得硬币数量最多,那就使剩下的硬币数最少,剩下的硬币数最少直接贪心就可以,但问题是我们以前贪心的时候5是1的倍数,10是5的倍数,20是10的倍...

2018-11-04 17:54:53 183

原创 hiho1259 数位

这题uva上不能交,题意最后综合一下就是给你一个序列,f[i]=f[i-1]*3,f[i+1]=f[i-1]*3+1,最后综合过来就是数位dp计算将f[i]%mod以后的每种值的数量然后异或起来,公式比较难推,推出来以后就是裸的计算取模的dp#include<bits/stdc++.h>using namespace std;using LL = int64_t;LL mod,...

2018-10-31 17:34:15 138

原创 UVALive 7263暴力

非常有意思的暴力,当时看题的时候就觉得肯定是什么奇怪的套路题。题意是给你两个长度相等的数字,数字只有1到6,问你将第二个数字转换成第一个数字的方案最少需要几步。一步可以是将数字中的所有数字i变成数字j,或者只改变某一位上的数字。首先预处理出将[a][b][c][d][e][f]变成[g][h][i][j][k][l]的最少步数。然后对于每一个数字s2变成s1,加上那些需要只改变某一位数字上的数...

2018-10-31 01:20:18 227

原创 zoj 3494 AC自动机+数位DP

这道题说实话我到现在也不能完整的把这份代码写出来,大部分都是抄kuangbin博客里的那份代码,其实这份代码让我让我一个人看我差不多能看懂,但让我写我感觉我根本写不了,首先我们对模式串建一个AC自动机,然后构造出来一些不可达的点,再写成一个矩阵bcd[i][j]表示在AC自动机上第i个点加上j后能到达的点,j是十进制,从0到9,然后再在bcd[i][j]上跑数位DP,我还回头写了两道数位DP想了想...

2018-10-24 17:02:31 157

原创 hdu3555数位dp

数位dp裸题,好久没写数位dp了,回想了一下怎么写,当成个板子也行#include<bits/stdc++.h>using namespace std;using LL =int64_t;LL dp[20][3],cnt[20];LL dfs(LL len,int pos,bool flag) { if(len<0) { if(pos==2) ...

2018-10-23 16:48:58 120

原创 hdu 4758 AC自动机+状压

这道题卡了好几天,然后发现状态写错的,dp[i][j][k][x]表示走到(i,j)点在AC自动机上第K个点状态为X的步数,有状态K是因为要求必须包含这两种状态,有一点不怎么明白,这道题应该是能用到这两个字符串的方案数,比如说用2.5个第一种和1个第二种这种应该也是可以的。要不然最后统计答案的时候就没法解释了…#include<bits/stdc++.h>using namespa...

2018-10-19 16:26:17 122

原创 hdu 3341 AC自动机+DP

这道题就是给你N个单词,一个字符串,问你将这个字符串重排,能组成包含单词次数最多的字符串有多长。这道题的DP方程有点意思,因为只有四个字符ACGT,字符串的长度不超过40,所以我们可以dp[i][a][b[][c][d],表示匹配了i个字符,用了分别用了a,b,c,d个ACGT,能包含的最多的单词。其中但dp[500][40][40][40][40]的内存,但我们可以转化一下,转化成在某种进制下的...

2018-10-17 20:53:49 137

原创 HDU 2457 AC自动机+DP

这道题好像让我对AC自动机的失配指针有了一个新的认识。Fail指针的求法:Fail指针用BFS来求得,对于直接与根节点相连的节点来说,如果这些节点失配,他们的Fail指针直接指向root即可,其他节点其Fail指针求法如下:假设当前节点为father,其孩子节点记为child。求child的Fail指针时,首先我们要找到其father的Fail指针所指向的节点,假如是t的话,我们就要看t的孩...

2018-10-16 13:29:31 95

原创 HDU 2296 AC自动机+DP

这道题就是普通的求单词贡献最大,然后让你输出这个单词是多少,wa了老半天,最后调了好久,比较字符串先比较长度,长度短的优先,然后再比较字典序#include<bits/stdc++.h>using namespace std;using LL = int64_t;const int maxnode=1e6+5;const int sigma_size=27;char s[m...

2018-10-12 17:17:25 121

原创 HDU 2825 AC自动机+状压DP

这道题是说给定m个单词,求最少包含q个单词,长度为n的单词的种类。这道题我们先对单词建一个Trie,然后在树上dp,dp[i][j][k]表示长度为i在树上的第j个节点,使用了第K种方案的结果,第K种方案的意思是K的二进制中为1的部分表示使用过了,为0的部分表示没有使用过,最后将长度为n的使用的单次数量>=p的方案数加起来就行#include <iostream>#inclu...

2018-10-10 21:54:55 103

原创 ZOJ 2243 考研路茫茫――单词情结 AC自动机+矩阵快速幂

就是问你长度小于等于L的单词且出现过至少一个子串的数量。首先算出长度小于等于L的单词有多少种,26^1 + 26^2 + 26^3+ …+26^L,然后再算出长度为1,2,3…L的单词中包含子串的数量,相减就行,第二部分用AC自动机求出矩阵,然后矩阵快速幂,其中从bin神那里学到一个技巧,矩阵的1次+2次+3次+…L次幂的和等于在原矩阵上最右边多加一列从0到L+1的1#include<io...

2018-10-09 20:29:52 108

原创 Lyft Level 5 Challenge 2018 - Elimination Round D

题目大意是给你n个数,然后让你把n个数相乘,求乘积约数的个数,a[i]<=2e18。题目保证每个a[i]的约数在3到5个之间。这个条件很有用,因为一个数的约数最少为2个,1和它本身,所以可能情况只有4种pq,p的平方,p的三次方,p的四次方。后三个直接套就可以,第一个我们需要特殊处理一下,因为这种情况肯定是两个质数相乘,我们需要先判断p或q是否在其他a[j]中出现过,如果出现过,我们直接把p...

2018-10-08 14:56:13 227

原创 codevs 3639树的重心

板子题:#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;int n;vector<int>E[maxn],ans;int sz[maxn],minsz=maxn;void dfs(int x,int fa) { sz[x]=1; int maxchild=0; ...

2018-10-07 20:46:04 163

原创 codefoeces 513E Sergey and Subway

这题大意是给你一棵树,然后如果u和v共用一个点w,那么u和v之间也连一条边,问所有对点之间的距离和是多少。这题画画图以后可以得出:树上偶数距离的点在加边以后的距离等于距离/2,树上奇数距离的点在加边以后的距离等于距离/2+1。所以加边以后的答案等于(原树上的距离+两点之间距离为奇数的对数)/2。原树上的距离直接dfs就行,这个两点之间距离为奇数的对数没想到,答案应该是距离root为偶数的点乘距...

2018-10-05 22:24:45 159

原创 hdu 6183 Color it线段树

两种操作,第一种操作给点(x,y)添加一种颜色c (x,y<=1e6,c<=50);第二种操作在(1,y1)与(x,y2)所围成的矩形里有多少种颜色。操作数<15e5这道题刚开始自己用set都能肝过去…感觉数据有点水这道题正解应该是用51个Y轴建线段树,记录[y1,y2]的标记为i(i从0到50)的最小值是否小于等于x,开50个线段树有点大,从claris那学了一个厉害的东西...

2018-10-03 21:04:54 146

原创 Hdu 6278 主席树

这道题就是求区间内第K大的数必须小于等于K,主席树求区间K大以后二分求答案就行#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;struct Node{ int l,r,sum;}tree[maxn*20];int a[maxn],tot=0,root[maxn];vector<i...

2018-09-27 11:48:07 224

原创 CodeVs 3044扫描线

这道题其实就是线段树区间覆盖的变形,裸的扫描线问题,其中有一个坑点是点不是整数,我们需要离散化一下,这里离散化的结果是,每个点是i点到i+1点的距离,区间更新的时候尤其要注意#include<bits/stdc++.h>using namespace std;struct Node { double x1,x2,y; int flag;}node[1005...

2018-08-24 13:01:54 163

原创 暑假总结

大晚上的碎碎念,暑假马上就要过去了,一个暑假似乎碌碌无为,什么都没有学到,比赛打了一大堆,参加了camp,但一点提高都没有,去年本以为今年的现在会是信心慢慢准备区域赛,不会是去年的水平,后来发现自己简直太高估自己水平了,感觉大学三年就要荒废了。今天晚上心态大崩…不说了,刷题去了...

2018-08-23 23:16:28 164

原创 2018暑假套题练习记录

2017杭电女生赛 7/10

2018-07-19 11:08:18 178

原创 Educational Codeforces Round 2E. Lomsat gelral

题目是说给你一棵树,树上每个点有一个权,问你对于每个点,其子树出现次数最多的数是多少,如果有相同的,求这几个点的和。 启发式合并的裸题。意思我将树分成多条重链和轻链,每次都把轻链往重链上合并,这样将一棵树分成了最多logn条重链,所以每个点最多合并logn次。 dfs的时候,首先dfs节点x的轻儿子,暴力消去影响,再dfs节点x的下一个轻儿子,依次类推。 然后dfs节点x的重儿子,无需消去影响...

2018-07-16 21:58:55 152

原创 Codeforces Round #495 (Div. 2)E. Sonya and Ice Cream

在树上找k个点,使树上每个点距能够找到的点距离最短。首先这k个点肯定是在直径上,其次怎么在直径上找k个点,我们可以用滑动窗口,学滑动窗口就要回单调队列,这玩意自己以前一直不会,最近才写题的时候遇到的。哎。首先用单调队列判断队尾元素是否该继续留在里面,如果不留在里面,就弹出来,然后把当前元素塞进去,然后判断队首元素是否超出滑动窗口的长度限制,如果超出,就弹出队首元素。代码中的dfs是用来找当前这个点...

2018-07-13 01:46:33 169

原创 Codeforces Beta Round #10

A - Power Consumption Calculation题意:有一台电脑,电脑有三种状态,工作时的功率是P1w,当T1分钟不工作后,功率变为P2w,当T2分钟不工作后,功率变为P3w,给定工作的时间段[l1,r1],[l2,r2]…[ln,rn],问[l1,rn]消耗的电能是多少 模拟一下就行…主要是读对题By yqdjl6, contest: Codeforces Bet...

2018-06-27 01:09:19 241

原创 上半年总结

上半年的比赛终于告一段落了,打ACM以来最比赛最多的半年了。开学就是cccc,当时理工报了三个队确实吓了一跳,为了求稳我们也报了三个队,事实说明我们都是瞎担心。然后就是北邮校赛,因为当天早上是北京长跑节,不愿意放弃这个机会,而且奥体中心和北邮距离很近,于是决定跑完半马去打比赛,比赛过程比去年顺利很多,午餐是肯德基好评。最后似乎能水个银的位置?这次比赛感觉给两个队很大的自信,感觉自己这一年至少没有白...

2018-06-12 15:12:45 147

原创 归并排序求逆序对

以前一直以为很难,学了一下很简单#include<bits/stdc++.h>using namespace std;using LL = int64_t;const int maxn=1e5+5;const int mod=1e9+7;const int INF=0x3f3f3f3f;const LL LLINF=1e14;const double pi=aco...

2018-05-11 15:22:51 109

原创 带权并查集

这几天遇到了两次带权并查集,带权并查集其实就是并查集加入了权值的属性。带权并查集和普通并查集的区别主要体现在合并和查询上,普通并查集的查询int findset(int x) { if(x==father[x]) return x; int fax=findset(father[x]); return father[x]=fax;}我们以食物链的带权并查集为例:int fi

2018-05-08 15:16:46 595 1

原创 新疆大学ACM-ICPC程序设计竞赛五月月赛J(状压DP)

Most Powerful 题目大意是给你n个原子和一个n*n的矩阵,矩阵(i,j)的意思是第i个原子和第j个原子相撞产生的能量,代价是j原子消失,问能产生的能量最大值是多少。其实n<=10,可能是状压DP裸题….虽然我不会,赛后看题解枚举的顺序很有讲究,是从1< < n-1开始枚举。假设n为5,则从11111开始枚举,然后枚举其中的第i位,如果第i位为1,就枚举第j位,如果第j位为0,则更新这个

2018-05-03 22:23:23 147

原创 网络流入门 bzoj1305

当初以为网络流是金牌题,从来都没接触过,后来才知道原来网络流只是一个模板,真正难的是构图问题,而且如果一眼看出是模板题的话只要能构出来图问题就不大,大家的Dinic模板都差不多。来一道简单的构图问题吧。 Description 一次舞会有n个男孩和n个女孩。每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞。每个男孩都不会和同一个女孩跳两首(或更多)舞曲。有一些男孩女孩相互喜欢,而其他相互不喜...

2018-04-30 11:18:14 176

原创 Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1) C

题目的意思是说每天会新生成一个体积为Vi的雪堆,每天每个雪堆会融化Ti的体积,问每天融化的体积,我想了半天,我知道是前缀和,就是不知道怎么用前缀和,真是被自己的气到了,要好好学一学前缀和了,上一次也是cf卡在前缀和上。首先我们先输入每一天的Vi,然后怎么算融化的体积呢,我们可以想成温度是累加的,那么我每天新生成的雪堆就变成了Vi+(T1+T2+T3+…T(i-1)),然后将我的今天的温度加上去,也就

2018-03-11 03:12:50 183

原创 Wannafly交流赛1 D迷宫2

这道题是给你一个矩阵,一只蜥蜴想从(1,1)到(n,m),但你要阻止他到(n,m),然后矩阵中0为通路,-1为墙,(1,1e9)为将这条路变成墙的花费,让你用最小花费堵住他的路。 这道题刚开始想dfs,后来发现dfs不了,没往bfs上想,其实就是将第一排和最后一列加入队中,然后看最先到达最后一排或第一列的最小花费,想有点难想,不过写起来还是很简单的#include<bits/stdc++.h>u

2018-03-03 12:27:09 205

原创 CS Binary Differences

题目大意是给你一串序列,序列只有01两种数,选取一个区间,这个区间的值为0的个数减去1的个数,问这个序列能组成的不同值的区间有多少种?序列长度1e5,这道题说实话想了很长时间,不知道怎么降复杂度,后来看题解才明白,最重要的是只有01两种数,所以我们计算前缀和,算出的肯定是连续的区间,比如说{1,1,1,1,0,0,1}算出的前缀和是{-1,-2,-3,-4,-3,-2,-3},中间的每个数肯定都是连

2018-03-01 16:36:42 150

原创 Hdu 1540 求连续区间最大值的线段树

题意是原来有n个连续的村庄,然后这时候有可能炸毁一个村庄,或者修复一个村庄或者查询有多少村庄与这个村庄相连,n个村庄是从1到n左右相连,询问中的相连包括间接相连和直接相连。这道题我是没有想到怎么来维护 首先是build函数void build(int num,int l,int r) { tree[num].ml=tree[num].mr=tree[num].mx=r-l+1; t

2018-02-24 23:42:58 258

原创 Hdu 3974 线段树+时间戳

题目的大意是给你一棵树,树上每个人都有自己的boss和员工,除了根节点,然后每当boss有一个编号为y的任务,boss就会把这个任务交给员工,这个boss的所有员工就都会接收到这个任务。然后有查询操作,问你现在这个员工的任务的编号是多少? 这道题我第一眼看是在看不出来怎么用线段树做,后来看了别人博客以后才知道我们要先把这个树转换成一个序列然后对序列进行线段树。对每个节点编号,然后这个节点有一个控制

2018-02-24 23:11:27 297

原创 ZOJ 1610 Count the Colors 线段树区间染色

题目的意思就是给你在区间内染色,后染色的可以覆盖前染色的,自己写的时候写炸了,没想通是区间染色,也就是在[L,R]之间染色,不是点染色,所以为了区分点和区间,我们把[L,R]的区间染色变成[L+1,R]的点染色,这个操作自己刚开始想到了,就是在计数的时候自己出现了问题,计数时怎么判断前面那个数和上次的数是不是一个数就可以了,不用判断每种颜色上一次染色时候的R+1和这一次染色的L是不是相等。第一次写的

2018-02-22 02:51:11 225

原创 Codeforces Educational Codeforces Round 37 E

You are given an undirected graph consisting of n vertices and edges. Instead of giving you the edges that exist in the graph, we give you m unordered pairs (x, y) such that there is no edge between x

2018-02-03 18:16:27 250

原创 Educational Codeforces Round 34 E Swapping Characters

E Swapping CharactersWe had a string s consisting of n lowercase Latin letters. We made k copies of this string, thus obtaining k identical strings s1, s2, …, sk. After that, in each of these strings w

2017-12-15 01:36:11 440

原创 2017西安区域赛现场赛

day 0 第一次出去比赛,刚出去的时候十分激动,6个小时的车程,到了西安的时候是下午3点,然后做了近三个小时的公交地铁才到了西工大,47站公交是真的皮,但是不得不说豪庭的房是真的好,有投影,有温泉…看群里跟秦龙简直不是一个等级,然后就在周围找了一个地方随便吃了点东西,回去以后看了看电视就睡了 day 1 早上三个人起不来…然后起来十点多,去排队领衣服,纯紫色的衣服,连logo都没有…主办方还

2017-11-02 00:34:30 913

原创 Codeforces Round #440

You are given several queries. In the i-th query you are given a single positive integer ni. You are to represent ni as a sum of maximum possible number of composite summands and print this maximum num

2017-11-02 00:12:58 322

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除