自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GODSPEED

这世界从来就只有强者的奋斗史,而没有弱者的墓志铭

  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 Gym - 100342I Travel Agency(割顶)

题意:给一个无向图,对于每个节点a,统计有多少点对(u,v)之间的路径必须经过a。思路:首先求一个图的割顶,在这颗dfs时间树中我们可以发现,对于一个结点u,如果他的一颗子树不能连回u以上的结点,那么这一棵子树的结点与除u以外的结点之间的路径必然经过u,那么在dfs的过程中不断更新答案即可。#include#include#include#include#include#incl

2015-08-30 20:05:55 677

原创 GYM 100345E New Mayors(二分图染色)

题意:有一个无向图和三种颜色,顶点数目n思路:如果直接暴力的话时间复杂度是3^n,显然无法承受。考虑任意一个结点u,那么S(u)中的所有点组成的子图是联通的并且S(u)中的点只能染另外两种颜色,由于这个图是联通的,所以染色方案肯定是唯一的,也就是说我们对于每个节点进行一次二分图染色,如果有冲突那么不存在方案。这样一来时间复杂度降为了O(n*n)。#include#include#i

2015-08-30 11:57:22 760

原创 POJ 2155 Matrix(二维树状数组)

题意:有一个矩阵,每次操作可以是编辑某个矩形区域,这个区域的0改为1,1改为0,每次查询只查询某一个点的值是0还是1。思路:这道题和一般的树状数组有一点不同,这道题是区间修改,单点查询,而树状数组处理的是单点修改,所以我们可以改一下矩阵里的每一个值代表的意义。可以注意到我们只关注一个点被翻转了奇数次还是偶数次,令矩阵的元素a[i][j]表示矩形区域(1,1)到(i,j)的修改次数,这样

2015-08-29 18:55:27 654

原创 POJ 3522 Slim Span(最小生成树)

题意:给定一个n个点m条边的无向图,找一颗苗条度(最大边减最小边)最小的生成树。思路:假设苗条度最小的这棵树的最小边为a,若要使苗条度最小,答案一定是以a为最小边的一颗最小生成树,所以可以考虑枚举最小边,计算出苗条度并更新答案。#include#include#include#include#include#include#include#include#include#

2015-08-28 19:19:40 839

原创 URAL 2052 Physical Education(数位dp)

题意:给出一个自然数数列,按照每个数的所有数位之和作为第一关键字,每个数的大小作为第二关键字升序排序,位置不变的数的个数是多少。思路:首先可以证明,对于数位和为i的所有数,最多只可能有一个位置不变,这个可以直观的猜想一下,因为如果有一个数字位置不变,那么对于排序后的序列,这个数后面的所有数的增长速度都大于自然数序列的增长速度,所以不可能再有第二个。假设我们当前求出了数位和为i的区间

2015-08-28 01:55:56 888

原创 UVA 11354 Bond(最小生成树+lca+倍增求祖先节点)

题意:n个点m条边,每条边有一个权值,有q个询问,每次询问两点间的一条路径,使得这条路径上权值最大的边最小。思路:很容易想到最小瓶颈路,但是查询太多,会超时,可以预处理出最小生成树,则问题转化为一棵树上的两点间路径中权值最大的那条边,设这两点为u,v,可以得到dist(u,v)=max(dist(u,lca(u,v)),dist(v,lca(v,lca))),其中lca(u,v)表示u和v的最

2015-08-25 19:12:05 802

原创 HDU 4081Qin Shi Huang's National Road System(最小生成树+最小瓶颈路)

题意:秦始皇要修路,把N个城市用N-1条边连通。且他希望花费最小,但是这时候有一个多管闲事的道士出来说他有魔法可以帮助秦始皇变成一条路,但是只能变出一条。但是,两个人对修路的法案存在歧义,道士希望修路可以给更多的百姓带来福利,而秦始皇希望修路要尽量使花费小。最后,秦始皇拿出了一个公式A/B,A表示两个城市的人数,B表示出了用魔法变出来的路外,最短的总距离。现在要你求出A/B的最大值。思

2015-08-24 23:32:46 1004

原创 UVALIVE 3713 Astronauts(2-SAT)

题意:有A,B,C三个任务要分给n个宇航员,年龄大于等于平均年龄的分A, 年龄小于平均年龄的分在B,C组没有界限,互为敌人的两个宇航员不可以在同一组.求出一个分配的方案。思路:可以发现每个宇航员只有两种选择,选c或者不选c,用一个布尔变量xi代表第i个宇航员的选择,对于相互为敌的两个年龄同时大于等于或同时小于平均年龄的宇航员,需要满足!(xi && xj)和!((!xi) && !

2015-08-24 18:16:22 715

原创 UVALIVE 3211 Now or later(2-sat)

题意:有n架飞机需要着陆,每架飞机都可以选择“早着陆”或“晚着陆”两种方式,第i架飞机早着陆时间为Ei,晚着陆时间为Li,不得在其他时间着陆。你的任务是为这些飞机安排着陆方式,使得整个着陆计划尽量安全。换言之,如果把所有飞机的实际着陆时间从小到大排序,相邻两个着陆时间间隔的最小值应尽量大。思路:二分判定可能的时间t,用布尔变量xi表示飞机i是否早着陆,对于一个t,判定任意两架飞机要满足

2015-08-24 17:06:06 849

原创 HDU 4407 Sum(容斥原理)

题意:一个元素为 1~n 的数列{An},有2种操作(1000次):1、求某段区间 [a,b] 中与 p 互质的数的和。2、将数列中某个位置元素的值改变。思路:先预处理求出1到400000所有数的质因子保存起来。这个问题可以转化为求[1,R]之间与p不互素的数的和,这个可以用容斥原理来做,然后用区间和减去这个值就是答案,这是静态的做法。如果有修改的话

2015-08-23 20:41:58 718

原创 UVA 11324 The Largest Clique(强连通分量+缩点DAG的DP)

题意:给定一个有向图,求出一个最大的结点集,这个节点集中的任意两个点之间至少一个能到达另一个点。思路:如果一个点在这个节点集中,那么它所在的强连通分量中的点一定全部在这个节点集中,反之亦然,求出强连通分量并缩点,每个新点有一个权值即这个强连通分量中点的个数,在DAG上DP即可。#include#include#include#include#include#include#

2015-08-23 01:21:58 970

原创 UVALIVE 4287 Proving Equivalences (强连通分量+缩点)

题意:给定一个图,问至少添加多少条边可以使这个图强连通。思路:首先求出这个图的强连通分量,然后把每一个强连通分量缩成一个点,那么这个图变成了一个DAG,求出所有点的入度和出度,因为强连通图中每个节点的入度和出度至少为1,那么我们求出入度为零的节点数量和出度为零的节点数量,答案取最大值,因为在一个DAG中添加这么多边一定可以使这个图强连通。注意当这个图本身强连通时要特判一下,答案为零。#in

2015-08-23 00:33:11 780

原创 SPOJ 10628 Count on a tree (lca+主席树)

题意:给定一棵有n个结点的树,每个点有一个权值,共有m个询问,对于每个询问(u,v,k),回答结点u至v之间第k小的点的权值。思路:主席树+lca,首先指定一个根结点dfs一次并在此过程中建好主席树,对于对于每个询问,我们只需要考虑四棵树,即T[u], T[v], T[lca(u,v)], 再加上T[fa( lca(u,v) )],#include#include#include#inc

2015-08-22 01:06:58 1265

原创 SPOJ 3267 DQUERY(主席树在线|树状数组离线)

题意:给定n个数,m个询问,每次回答某个区间内不相同的元素个数。思路:这道题很像之前hdu上做过的一道 http://blog.csdn.net/u014664226/article/details/47307779这是用树状数组离线做的,将询问排序,从头扫一遍,将将当前元素上次的出现的位置减一,本次出现的位置加一,如果该点有询问,记录答案。今天学习了主席树,又用主席树做了一遍

2015-08-21 23:20:03 1615

原创 ZOJ 2112 Dynamic Rankings(主席树套树状数组+静态主席树)

题意:给定一个区间,求这个区间第k大的数,支持单点修改。思路:主席树真是个神奇的东西.........速度很快但是也有一个问题就是占用内存的很大,一般来说支持单点修改的主席树套树状数组空间复杂度为O(n*logn*logn), 如果查询较少的话,可以初始的时候用一颗静态主席树,这样空间复杂度可以降为O(n*logn+q*logn*logn),勉强可以过zoj这道题。这道题看了好久好久才懂.

2015-08-21 20:46:57 4736

原创 Gym 100418J Lucky tickets(数位dp)

题意:给定一个n,求区间[1, n]之间的所有的a的个数,a满足:a能整除  把a表示自身二进制以后1的个数思路:题意很绕....数位dp,对于所有可能的1的个数我们都dfs一次对于某一个可能的1的个数p来说,状态dp(len, i, j, k)里的每一位分别表示当前位,当前确定位的值模除p,已经有了多少个1,是否已经小于给定的n,注意的是这题范围很大,要用unsigned l

2015-08-20 02:26:44 769 2

原创 HDU 2089 不要62(数位dp)

题意: 计区间 [a,b] 中不含 4 和 62 的数字有多少个。思路:数位dp,首先可以这个区间之间的个数等于[0,b] - [0,a-1]的个数对于一个区间[0, a],状态dp(len, six, same)每一位分别表示当前位,上一位是否为6,当前位之前的数字是否和a完全相同#include#include#include#include#include#in

2015-08-19 20:34:26 557

原创 UVA 11426 GCD - Extreme (II) (数论|欧拉函数)

题意:求sum(gcd(i,j),1思路:首先可以看出可以递推求出ans[n],因为ans[n-1]+f(n),其中f(n)表示小于n的数与n的gcd之和问题转化为了求f(n),因为小于n的数与n的gcd一定是n的因数,所以f(n)可以表示为sum(i)*i,其中sum(i)表示所有和n的gcd为i的数的数量,我们要求满足gcd(a, n) = i,的个数,可以转化为求gcd(a/i,

2015-08-18 22:24:05 671

原创 UVA 12716 GCD XOR(数论+枚举+打表)

题意:给你一个N,让你求有多少组A,B,  满足1思路:首先我们可以得出两个结论:A-B >= A%B >= gcd(A, B)A xor B >= A-B所以说A xor B >= A-B >= gcd(A, B),然后就可以推出 A xor B = A - B = gcd(A, B) =>    A xor B = A - B  &&  A - B = gcd(A,

2015-08-18 03:00:03 739

原创 UVA 11582 Colossal Fibonacci Numbers!(数论)

题意:输 入两个非负整数a、b和正整数n(0思路:因为斐波那契序列要对n取模,余数只有n种,所以最多n^2项序列就开始重复,所以问题转化成了求周期然后大整数取模。#include#include#include#include#include#include#include#include#include#include#include#include#in

2015-08-18 00:43:47 1131

原创 HDU 5384 Danganronpa (AC自动机模板题)

2015多校联合训练 Contest8 1005 Danganronpa

2015-08-16 00:19:47 819

原创 HDU 2222 Keywords Search(AC自动机模板题)

题意:给出一个字符串和若干个模板,求出在文本串中出现的模板个数。思路:因为有可能有重复的模板,trie树权值记录每个模板出现的次数即可。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#d

2015-08-16 00:14:31 746

原创 POJ Oulipo(KMP模板题)

题意:找出模板在文本串中出现的次数思路:KMP模板题#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps 1e-6#define LL long long#defin

2015-08-15 00:25:30 1226

原创 Codeforces Round #316 (Div. 2) D. Tree Requests(DFS+状态压缩)

题意:给定一棵树,n个节点,每个节点处有一个字母,结点的深度定义为节点到根结点1的距离,有m个询问(u,v),每次回答以结点u为根的子树的深度为v的那些节点处的字母能否组成一个回文串,特别的,空串也是回文串。思路:首先说明判断回文串的方法,只要出现次数为奇数个字母个数不超过2,那么这些字母一定可以组成回文串。接下来考虑将树转成线性结构。利用dfs+时间戳将结点按照深度存入一个线性结

2015-08-14 15:57:53 917 2

原创 URAL 1057 Amount of Degrees(数位统计)

题意:求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K 个互不相等的B的整数次幂之和。思路:对于二进制来说(图片摘自刘聪的浅谈数位类统计问题论文)现在推广到b进制因为对于b进制的每一位,我们只需要讨论这一位是否是一,所以我们可以把这个数转换为一个等价的二进制数,方法是将这个数从左到右第一位不是零或一的位变为1,并把其右边的所有位置一,求出这个二进制

2015-08-13 21:59:29 640

原创 HDU 4374 One hundred layer(单调队列优化dp)

题意:有一个n*m的矩阵,每格有一个分数,一个人站在(1,x)位置,在每一行中,他只能朝一个方向走(向左或向右),且最多走t步,问走到最后第n行得到的最大分数。思路:不难想到状态转移方程dp[i][j] = max(dp[i-1][k]+sum[i][j]-sum[i][k-1]),(k移项得dp[i][j]-sum[i][j] = max(dp[i-1][k] - sum[i][k-

2015-08-13 09:54:18 853

原创 POJ 1741 Tree(树分治|ltc男人八题)

LTC男人八题

2015-08-12 00:45:39 1252

原创 HDU 5371 Hotaru's problem(Manacher算法+贪心)

2015多校联合训练7 1003

2015-08-11 23:50:32 949 2

原创 POJ 1655 Balancing Act (树的重心)

题意:求树的重心裸题。#include #include #include #include #include #include #include #include #include #include #include#include #include#define eps 1e-6 #define LL long long #define p

2015-08-10 17:19:40 562

原创 HDU 4804 Campus Design(经典轮廓线问题扩展)

题意:给定一个图,0是不能放的,然后现在有1X1和1X2方块,最后铺满该图,使得1X1使用次数在C到D之间,1X2次数随便,问有几种放法。思路:经典问题多米诺的拓展,状态多开一维表示用了几个1*1砖块即可,注意位运算的优先级。#include #include #include #include #include #include #include #i

2015-08-09 23:28:35 717

原创 UVA 11270 Tiling Dominoes(轮廓线DP经典)

题意:用1*2的骨牌覆盖n*m的棋盘有多少种方法这道题注意一下不要按照大白书上把maxn开成15就好,因为每次都要memset如果开到15会tle,开到11就可以#include #include #include #include #include #include #include #include #include #include #inclu

2015-08-09 19:35:06 738

原创 HDU 4362 Dragon Ball(维护最小值DP优化)

题意: 在连续的 n 秒中,每秒会出现 m 个龙珠,出现之后会立即消失,知道了第一秒所在的位置,每从一个位置移动到另一个位置的时候,消耗的价值为 abs(i-j), 知道了次出现的龙珠的价值,问 n 秒之后得到的最大价值是多少。思路:这道题朴素的做法时间复杂度为O(n*n*m)勉强可以水过去,正解应该是用单调队列的思路维护最小值优化。由状态转移方程dp[i][j] = min{ d

2015-08-08 06:17:48 1145

原创 HDU 4358 Boring counting(树状数组)

题意:给定一棵树,每个节点有一个点权,然后有一些询问,求以某个点为根的子树中有多少的数出现了恰好k次。思路:首先dfs一次将树形结构转化成线性结构,利用时间戳记录下以结点u为根的子树在数组中的开始位置和结束位置。那么我们将所有查询记录下来离线来做,将所有的查询按右端点升序排序。考虑用树状数组来做这道题,每个位置记录当前从1到当前位置有多少数出现了恰好k次。从头遍历一

2015-08-07 23:42:43 984 1

原创 HDU 5358 First One(枚举)

2015多校联合训练6_1006 First One

2015-08-07 03:10:15 1126

原创 HDU 3333 Turing Tree(树状数组 || 线段树)

题意:给定一个区间,q个查询,对于每次查询回答这个区间内所有不重复的数的和。思路:可以考虑使用树状数组来做。先读入所有查询,离线来做,将所有查询按右端点升序排序。那么我们从给定区间的第一个元素开始遍历这个区间,在此过程中更新每一个元素上一次出现的位置,每次将现在位置加上a[i]并将lastpos位置减去a[i],也就是说,我们每一步都是保留与当前位置距离最近的重复元素值,其余置零,

2015-08-06 01:19:24 894

原创 HDU 4372 Count the Buildings(组合数+斯特林数)

题意:N座高楼,高度均不同且为1-N中的数,从前向后看能看到F个,从后向前看能看到B个,问有多少种可能的排列数。思路:一开始想的是dp,但是数据范围达到2000,空间复杂度无法承受。考虑以最高的楼分界,左边有f-1个递增的楼,右边有b-1个递减的楼,考虑将剩下n-1楼分为f+b-2组,规定每组中最高的在最左边,那么只需要再从n-1组选出f-1组放到左边即可。现在解决将n-1

2015-08-05 19:24:35 693

原创 HDU 4343 Interval query(倍增思想+贪心)

题意:给定n(n思路:首先贪心的思想,去除掉包含其他区间的大区间,这样做肯定不会影响结果。然后对于所有区间,按照左端点升序排序,那么由于这时所有区间不相互包含,他们的右端点也是递增的。那么对于每个询问,肯定是从左到右去尽可能多的区间,这个贪心容易想到。对数据离散化,记录从每个点开始的经过i个区间所达到的最近距离,这一步用到了倍增的思想,因为如果一个点一个点顺序找,那么时间复

2015-08-05 06:30:05 928 1

原创 HDU 4008 Parent and son (数据结构)

题意: 一颗结点数为(100,000)的树,最多询问100,000次。每次询问对两个结点X,Y,以X为根,Y的最小标号的孩子,Y的最小标号的后代。思路:如果dfs n次那么时间复杂度无法承受,我们考虑只dfs一次。以1为根节点dfs一次,记录每个点的最小和次小儿子值和最小后代值,考虑询问x, y,如果x不是y的子孙节点,那么答案就是y的最小儿子值和最小后代值。如果x是y的子孙节

2015-08-04 02:27:42 1319

原创 ZOJ 3195 Design the city(LCA变形)

题意:给定一棵树,求连接三点所需的最短距离。思路:LCA变形,连接三点的最短距离可以转化为求任意两点距离之和的和再除以二。#include #include #include #include #include #include #include #include #include #include #include#include #includ

2015-08-03 20:23:36 555

原创 HDU 2874 Connections between cities(LCA离线)

题意:一个森林,询问两个节点距离,若无法到达,输出Not connected。思路:还是求LCA的思想,只需再对每个询问的两个节点判断是否在一棵树内即可。有一个问题是这道题的query很大,达到了1000000,所以离线算法空间上比较虚,然而只会离线的.....于是把int改成short int险过....#include #include #include

2015-08-03 16:48:40 513

百鸡问题详解

c语言实验题中的百鸡问题对理解c语言很有帮助多看无害

2014-04-11

空空如也

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

TA关注的人

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