自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

狂奔的蜗牛

我就是我 是颜色不一样的烟火,天空海阔 要做最坚强的泡沫

  • 博客(109)
  • 收藏
  • 关注

原创 2017ACM-ICPC乌鲁木齐之旅

写在前面       由于乌鲁木齐站的延期与CCPC的决赛冲突了,ObjectNotFound队把机会让给了我们队,由于我明年不搞了,教练不怎么想让我去,后来不知怎么的就把他说服了,迷迷糊糊的。Day0       第一次坐飞机,天黑没看到啥。最后降落的时候,机长来了个自由落体,慌死了。Day1       宾馆的早餐,真的是量大。下午热身赛,状态极差,一道线段树,题目没看完,

2017-12-07 19:56:33 557

原创 HDU5521 Meeting【最短路】

题意:一张图,双向边,A在1节点,B在n节点,两人都能动,问他们最短的相遇时间,可以哪些点碰面。给了很多集合,集合内的点相互到达的时间为t思路:给每个集合建一个点,集合内的点都连到这个点上,分别从A、B跑spfa,取每个点的两次最短距离的最大值,就是在这个点最短的遇见时间。巧妙建图,想不出QWQ#include#include#include#include#i

2017-11-14 14:56:00 282

原创 CF383C Propagating tree【线段树】

题意:一棵树,两个操作:1.给一个节点加val,下面一层的节点减val,再下面一层加val,以此类推 2.查询某节点的值思路:dfs序处理,把节点分为奇数层与偶数层。线段树上两个标记,一个是奇数层的、一个偶数层的。这样奇数层的标记传到最底层,如果最底层是奇数层的,那么加上这个值;反之减去。#include#include#include#include#includ

2017-11-07 21:49:41 300

原创 CF400D Dima and Bacteria【并查集】

题意:N个细菌,分成K种,每种C个,比如5个细菌,分为2种,C分别为2、3,那么1、2一类,3、4、5一类。有m边条u、v、c,u v之间花费为c。如果同一种细菌之间的任意两个花费不为0,输出No;否则Yes,输出不同类别细菌之间 的最短路。思路:并查集,费用为0的边,合并。最后同一种类别的在一个集合就代表相互间花费为0。最短路,可以用Floyd。#include#inc

2017-11-06 16:47:53 295

原创 CF337D Book of Evil【dfs】

题意:有一棵树,树上有些特殊的点,问有几个点到这些的点距离都小于等于d思路:知道这个就很简单了。如果一棵树T的直径上的两个端点分别是A, B ,且T是树S的一部分 ,那么如果S上某个点到A, B的距离不超过D,那么这个点到这棵子树上的所有点的距离不超过D。dfs两次找到两个端点,再从这两个点开始dfs求其他点距此的距离。最后遍历所有点#include#include#i

2017-11-02 16:58:20 685

原创 HDU5692 Snacks【dfs序】

题意:一棵树,点上有权,从0出发,必须经过x,求最大点权和。可以修改某个点的权。思路:可以转化为0到x的子树里的点的最大距离。dfs序求从0到x的距离,再建树。修改某个点,相当于修改这个点子树区间的值,区间更新。查询,区间最大值。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include

2017-10-27 17:58:03 201

原创 HDU3887 Counting Offspring【dfs序】

题意:求一个节点的子树中 比它标号小的节点有几个思路:从小到大,查询每个点区间已经有几个点被放进去,再放这个点进去#include#include#include#include#include#include#include#include#include#include#include#include#include#include#incl

2017-10-27 09:54:55 259

原创 CF292D Connected Components【并查集】

题意:n个点,m条边。每次询问若没有 第l条至第r条边时,有几个集合思路:处理前缀和后缀,把前(后)x条边的情况记录下来,询问是把(1,l-1)的前缀 和 (r+1,m)的后缀 再合并起来#include#include#include#include#include#include#include#include#include#include#inc

2017-10-26 15:23:37 362

原创 CF292E Copying Data【线段树】

题意:a[]、b[]两数组,有两个操作:1.用a数组的一段去替换b数组的 2.问b数组中的某个位置思路:线段树,每个结构体记录它被覆盖的a的位置(z1),和从哪个位置开始被覆盖(z2)。查询的时候查到底层,没被覆盖,直接b[x];被覆盖,a[x-z2+z1]#include#include#include#include#include#include#incl

2017-10-25 22:41:34 313

原创 记录下一年多搞ACM的时光

大一就听说过,然而我们专业是大二才学得C,大一不会,还不让带电脑,搞起来有点难度。大一的暑假自学了C,大二进入俱乐部,直至进入暑假集训队,最终队伍排名8,名额全分给前7。       一开始觉得编程很有意思,完全不用算法的题(后来看到一道刚开始做的题,现在一定不会那么做,我竟然看不懂)。寒假看了本书,学了些基础算法,编程能力大涨。大二下学期,组了队,和他们一起去参加武汉高校的校赛。其实那个学期

2017-10-15 14:30:59 951

原创 HDU5542 The Battle of Chibi【DP】

题意:n个数,找有多少个长度为m的严格递增子序列思路:dp[i][j]表示到第i个数,长度为j的这样的序列有几个。dp[i][j] = sum{ dp[k][j-1] },(k 树状数组的话,我们第一层循环遍历的数,必须是递增的。#include#include#include#include#include#include#include#include#

2017-09-21 16:14:20 250

原创 HDU3416 Marriage Match IV【网络流】

题意:一个有向图,求最短路的条数,一条边不能用两次思路:如果没有最短路这个限制的话,边的容量为1,最大流就是路的条数。加了这个限制,我们跑一边SPFA,用最短路中的边去建图,一条边(x,y,w),若d[x] + w == d[y],这条边就是最短路中的边。建完图,再求最大流#include#include#include#include#include#inclu

2017-09-20 19:57:34 319

原创 HDU3081 Marriage Match II【网络流】

题意:n个女生,n个男生,每一轮女生选一个男生(他们之间没有争吵过且前几轮没有选过的),女生还可以选她朋友能选的男生(朋友的朋友是朋友),组成完备匹配,问最多进行几轮思路:最大流,源点 →女生 → 男生→ 汇点,二分轮数k,源点出去的边容量为k,到汇点的也为k,女生、男生建好所有可能的边,容量为1,最大流为k*n的话,能进行k轮匹配。用并查集记录女生之间的关系#incl

2017-09-20 19:00:14 210

原创 HDU3338 Kakuro Extension【网络流】

题意:往白格子中填数,\左下角的数代表向下连续的白格子数的和,右上角的数代表右边连续数的和思路:最大流,源点 → 行和 → 白格子→ 列和 → 汇点。把有行和的格子看成一个点,连到右边的点,填1-9的数,我们都减一,容量为8,同样源点连到行和的点的容量也要减。列和的也一样#include#include#include#include#include#incl

2017-09-19 16:29:39 287

原创 HDU3605 Escape【网络流】

题意:有n个人,m个星球,n个人的喜好不同,每个星球都有容纳量思路:n很大,连出来边会很多,会T。所有人的选择方案最多1024种,我们一开始统计这些选择的数量。再去建图,这样点就1000+,源点连到选择,容量为人数,不同的选择连到它能选的星球,容量为inf,星球连到汇点,容量为容纳量#include#include#include#include#include#

2017-09-18 21:33:13 460

原创 HDU6216 A Cubic number and A Cubic Number【思路】

题意:问一个素数是不是某两个数的立方差思路:等于一个素数p,那 a-b = 1,后括号里的数等于p,把b化掉,求这个方程是否有整数解#include#include#include#include#include#include#include#include#include#include#include#include#include#incl

2017-09-18 20:11:53 439

原创 hiho1576 子树中的最小权值【dfs序】

题意:求以x为根的子树中的最小权值思路:dfs序,把树转化成一个序列,类似LCA中的转化,记录1棵子树进去的时间戳和出去的时间戳。线段树求区间最小值#include#include#include#include#include#include#include#include#include#include#include#include#inclu

2017-09-18 19:30:30 724

原创 HDU6214 Smallest Minimum Cut【网络流】

题意:求边最少的最小割思路:首先要知道,最小割=最大流,最小割中,正向割边的流量=容量,也就是满流。本来是这样做的,先跑一边最大流,再把满流的边的容量置1,没满流的inf,再来一遍最大流(最少选几个1,把图分成两份),这时答案就是最少的边,然后WA了我们把原来的边扩大为(m+1)*c+1,求最大流%(m+1)就是答案。最小割中选的是满流的边,加起来mod(m+1),余数就是我们上一

2017-09-18 09:10:06 360

原创 HDU6208 The Dominator of Strings【字符串】

题意:问是否有一个字符串包含其他字符串思路:有的话,那一定是最长的那一个。最长的有多个的话,那这几个一定要相同;否则,不存在。跑一下AC自动机,把最长的看成目标串,别的看成模式串,看目标串中出现几次模式串。#include#include#include#include#include#include#include#include#include#i

2017-09-18 09:05:11 648

原创 POJ3436 ACM Computer Factory【网络流】

题意:有n台机器组装有p个零件的电脑,每台机器的输入参数为0、1、2,分别代表某个零件无、有、可有可无。输出参数为0、1,代表某个零件无、有。每台机器有加工上限,问最多能组装多少电脑思路:最大流,n台机器拆点,入点、出点,容量为加工上限。当一台机器的输出全为1的,就是电脑组装完成,连汇点。当一台机器输入没有1的时候就是刚开始加工,与起点相连。机器和机器之间,输出和输入相匹配,连起来。除

2017-09-15 18:31:11 187

原创 CF Elementary Math【网络流】

题意:有n对数字,中间可以填+ - *,问有没有可能n个算式的结果都不一样。思路:最大流,每对数字的3种结果都算出来,连过去,容量为1。起点连n对数,汇点连它们的结果,容量都为1。最大流 #include#include#include#include#include#include#include#include#include#include#i

2017-09-14 21:54:14 207

原创 HDU4289 Control 【网络流】

题意:n个点,m条边,去除某些点使s、d不连通,每个点有权值思路:最小割等于最大流。n个点拆点,入点到出点,边权为点权;m条双向边,出点连入点,边权为inf#include#include#include#include#include#include#include#include#include#include#include#include

2017-09-14 09:19:18 186

原创 HDU4280 Island Transport【网络流】

题意:从最左边的点 运人到 最右边的点 最多能运多少人思路:裸的的最大流,就是卡时间,用邻接表的Dinic#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing nam

2017-09-13 17:43:53 171

原创 POJ3281 Dining【网络流】

题意:一头牛喜欢某种食物或饮料,问最多让几头牛同时拥有食物和饮料思路:把牛拆成两个点, 保证每头牛只算一次,起点 → 食物 → 牛入点 → 牛出点 → 饮料 → 汇点,求最大流。用一下Dinic的模板.不知道下面的普通的最大流为什么过不了,有人知道吗,请留言#include#include#include#include#include#inclu

2017-09-13 08:37:07 192

原创 Query on a string【线段树】

题意:两个字符串,1.问在第一个字符串的a~b中出现几次第二个字符串,2.修改第一个字符串的某个位置思路:用s数组记录从当前位置开始能不能匹配,能匹配用1表示,用线段树记录,查询a~b,只要询问a ~ b-len2+1 中有几个1,注意边界。修改的话,最多影响s数组中的10个位置,暴力修改下即可。#include#include#include#include#in

2017-09-12 15:50:38 199

原创 Our Journey of Dalian Ends【网络流】

题意:从大连到西安,中间必须经过上海,每个城市只能经过一次,问最短路径思路:每个点拆成入点、出点,连一条费用0,容量1的边。超级源点连大连、西安的入点,汇点是上海的入点。跑一边最小费用最大流。最大流为2,就输出最小费用;否则-1.#include#include#include#include#include#include#include#include#

2017-09-11 19:11:04 236

原创 HDU6205 card card card【模拟】

题意:有两个数组,a[i]-b[i]可以得到价值,从前往后一次累加,小于0就结束,计算之前拿到的a[i],记为ans,两数组前面的元素可以一起往数组后面移动,求得到最大ans时,移动了几个数组元素思路:暴力模拟,题目下面写fastIO,加了T,QWQ#includeusing namespace std;const int maxn=5e6+10;int a[ma

2017-09-10 20:27:41 216

原创 CF853A Planning【贪心】

题意:有n个航班,被延误了,前面k分钟都不能飞,每个航班延误1分钟需要花费Ci,k+1~k+n时间段内,重新排班,使花费最小,任意航班不能提前飞思路:,后面这项为常数,考虑每个时间能飞的航班,时间从小到大,花费越大的优先,花费和最小。用一个优先队列把这个时间能飞的航班放进去#include#include#include#include#include#inclu

2017-09-08 10:59:35 345

原创 CF854B Maxim Buys an Apartment【思路】

题意:n个房子,有k个已经住人了,一个人去买房,他喜欢隔壁已经有人的房子,问这样的房子最少、最多有几个思路:最少的很好想,最多的考虑给每个k分配一些房子,k==0,特判n/k ≥ 3,每个k两边都有能买的房,2 * kn/k == 2,考虑余数,k + n % kn/k == 1,没人住的房子不到一半,塞中间,n - k#include#include#

2017-09-08 10:54:00 363

原创 CF850B Arpa and a list of numbers【思路】

题意:有一串数,我们用两个操作让它们的gcd不为1,1.直接删除,花费x,2.给它加一,花费y思路:每个数都能分解成负数,我们枚举素数。关于操作的贪心:x小于等于y的话,直接删除;否则,计算x/y,可以加这么多个1,还不能满足条件的话,不如删除。对于一个素数,有许多这样的区间[p,2p],我们考虑哪些数直接删除划算,哪些数+1到2p划算。分界点就是2p-x/y。用have[n] 记

2017-09-07 20:25:09 324

原创 HDU6183 Color it【线段树】

题意:一个二维平面,三种操作,1.清空所有点,2.在(x,y)上加一种颜色(不是覆盖),3.查询区域1~x,y1~y2这个二维区域内有几种颜色思路:考虑给每种颜色建一颗线段树,维护的是一段y(几行)内这种颜色出现的最小的x,查询:y1-y2内的最小值比x小,那么区域内有这种颜色。由于空间的限制,需要动态开点。还可以把坐标离散化。#includeusing namespac

2017-09-06 08:40:00 410

原创 HDU6184 Counting Stars【三元环】

题意:一个无向图,找有几对三元环有公共边思路:暴力枚举,枚举每一个点x,再枚举出去一条边到y,如果y的度小于sqrt(总边数),再以y出去一条边到z,看x、z是否相连;反之,再枚举x出去的边到z,相同的判断。这样是以一条边作为基础,看有几个点与它形成三元环,那条边为公共边,所有找到的三元环,两两一对。可以用set存边,x、y相连的话,加入x*n+y、y*n+x为什么用邻接表

2017-09-05 19:27:22 379

原创 UVA11234 Expressions【BFS】

题意:给你一个后缀表达式,操作元素为操作符的儿子,输出从叶子到根的按层遍历思路:运用后缀表达式进行计算的具体做法:建立一个栈S 。从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作数运算,再将运算的结果代替原栈顶的n项,压入栈S中 。如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束。

2017-09-04 18:22:46 174

原创 UVA442 Matrix Chain Multiplication【DP】

题意:给了许多矩阵,和运算顺序,输出最少计算次数,两矩阵无法相乘,就输出error思路:栈模拟,遇到矩阵,可以和栈顶的相乘就放进去,无法计算error( '(' 用-1,-1表示),遇到')'就把上一个'('之后的矩阵拿出来DP累加计算数。DP:把题面的ABC相乘,看做50、10、20、5,三个相邻的元素相乘后,消去中间的元素,DP一个长度,枚举中间的位置,推得当前长度最优的情况

2017-09-04 15:51:16 177

原创 UVA10129 Play on Words【思路】

题意:能不能把所有字符串,首尾相连接起来思路:首先做一个粗略的判断,看看所有收尾的字母能不能连到一起,并查集。收尾相连,最多有一个出度比入度大1的字母和入度比出度大1的字母,并且只有这两个字母的入度、出度不同;还有种情况就是所有的字母入度、出度都相同#include#include#include#include#include#include#include

2017-09-04 14:30:14 140

原创 CF848A From Y to Y【思路】

题意:给一个费用k,输出一个字符串,合并这个字符串的最小费用为k,费用为:一个字母在两个字符串中出现的次数的乘的累加和。思路:不同字母合并不需要费用,只含一个字母的字符串长度为c,我们发现它的费用为c*(c-1)/2。总费用就是不同长度含不同字母的字符串的费用和,每次给当前字母长度+1,超过费用,就回到上一次位置,换一个字母继续。费用为0,需要特判。#include#in

2017-09-04 08:35:17 342

原创 CF841B Godsend【思路】

题意:两个人玩游戏,第一个人只能选择区间和为奇数,把这些区间移去;第二个人偶数。每次选择区间长度大于等于1,谁不能谁输思路:如果数组中有一个数为奇数:第一个人开始,选这个奇数,剩下数和的为偶数的话,全选,1赢。剩下数和奇数,第二个人开始表演第二个人,要么直接不能动,输;要么选几个数,但是选不完(因为全部和为奇数),怎么选都有一个奇数消不掉,第一个人开始表演综上:原数列有奇数

2017-09-03 16:32:43 311

原创 CF125E MST Company【单度限制最小生成树】

题意:求最小生成树,与1连接的边有k条。输出连的边的编号思路:我们先把除1外的点作最小生成树,再把1加进去(通过1把之前的集合连接起来)。加完之后,如果集合 大于 1,无解;如果新加的边 大于 k,无解;如果,从1出去的边的数量,比k还小,无解。接下来就是,用从1出去的边1去替换那些第一次作最小生成树时候加的边。新加边,最优的情况是 新加边的权 减 去掉边的权 的差最小(增加值

2017-09-03 09:21:08 523

原创 HYSBZ2243 染色【树链剖分】

题意:给定一棵树,有两种操作,1.问两点之间点的颜色段数量 2.把两点之间点都染成某颜色思路:颜色段,线段树维护区间左端点和右端点,区间合并的时候,两区间中间的两个点颜色相同,就减1。树链剖分查询,重链跳转那里,看看当前点 和 跳上去的点颜色是否相同,相同减1。#include#include#include#include#include#include#

2017-09-02 19:35:07 164

原创 Light1052 String Growth【矩阵快速幂】

题意:一个字符串由a,b组成,字符串转化为下一个的规则为:a->b,b->ab,告诉你,第n个、第m个字符串的长度,算第k个的长度思路:这个变化规则,我们可以发现长度的变化是斐波拉契数列,我们设第1项有q个a,p个b,往下推,q、p前面的系数也是斐波拉契数列,我们快速幂算第n、m项q、p的前的系数,a1*q+b1*p = 第n项的长度,解二元一次方程,算出q、p算第k项解方

2017-09-01 16:38:37 224

空空如也

空空如也

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

TA关注的人

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