求解策略
文章平均质量分 76
刀刀狗0102
一个喜欢敲代码的zhazha
展开
-
hdu5414(2015多校10)--CRB and String(字符串匹配)
题目链接:点击打开链接题目大意:有A,B两个字符串,现在有一种操作可以在A的任意一个字符x后面增加一个字符y(x!=y),问能不能将A变为B。首先如果A可以变成B,那么A就一定是B的一个子序列,这个可以在O(n+m)的时间内算出。如果A是B的子序列之后,判断增加的字符中是不是含有不能增加的情况,我们只需要判断B从开始的一段连续的相同的字符串,是不是在A的开头也存在,如果存在,那么就是可原创 2015-08-21 10:11:37 · 833 阅读 · 0 评论 -
poj1054--The Troublesome Frog(枚举+二分)
题目链接:点击打开链接题目大意:青蛙经过一块农田,每一次跳相同的距离,经过的点的植物被踩坏,给出n个被踩坏的坐标,问危害最大的一个青蛙踩坏了几块植物。(最少要有三个,否则是0)每一次跳的距离相同,枚举最先开始的两个点p[i],p[j],得到距离差(x,y)来计算之后的点的坐标,用二分查找该点是否被踩坏,找出最大值。优化:1、枚举的是最先开始的两个点,所以p[i].x-x,p[i].y-原创 2015-07-20 14:33:15 · 995 阅读 · 0 评论 -
poj1691--Painting A Board(拓扑+dfs)
题目链接:点击打开链接题目大意:一个矩形由n个小矩形组成,现在要给小矩形染色,但是颜料会向下滑,为了防止弄乱颜料,所以要先染上面的矩形,后然染下面的矩形,每一次改变颜色都要用一个新的刷子,问最小用多少刷子。按照染色的条件,可以找到一个拓扑序列,拓扑序列中前面的要先染,后面的要后染,按拓扑的顺序dfs找出最少的刷字数。#include #include #include #incl原创 2015-07-20 13:35:16 · 989 阅读 · 0 评论 -
poj3318--Matrix Multiplication(随机算法)
题目链接:点击打开链接题目大意:给出三个n*n矩阵的矩阵a,b,c问a*b是否等于c,等于输出YES,否则输出NOn的最大值是500,计算矩阵乘法的话需要O(n^3)的复杂度,很明显超时。随机出一列k,计算a*(b*k) 和c*k,计算出一列的值,这样的如果a*b==c那么a*(b*k) 和c*k也一定会相等的,因为是随机的数,所以可以多测试几次。#include #includ原创 2015-08-12 16:17:37 · 1035 阅读 · 0 评论 -
hdu5334(2015多校4)--Virtual Participation(构造)
题目链接:点击打开链接题目大意:给出一个数字k,要求做出一个长度小于等于10^5的序列,该序列中不相同的连续子序列有k个。构造啊,,,,,,一点辙都没有使用连续的数字做成序列,可以省事的计算出不相同的子序列有多少个。使用n个1,那么不相同子序列有n种。使用n个1和m个2,那么不相同的子序列有n+m+n*m种。使用n个1,m个2和l个3,那么不相同的子序列有n+m+l+n*m原创 2015-08-12 09:25:01 · 914 阅读 · 2 评论 -
hdu5412--CRB and Queries(整体二分)
题目链接:点击打开链接题目大意:给出n个数的初始序列,有两种操作,1 l v将第l个数换成v,2 l r k 问在区间[l,r]内的第k大是多少,并输出经典的题目,但是树状数组+主席树(TLE)伸展树(MLE),听说他们用的块状链表,zhazha表示不会,后来补题,发现整体二分是一个好方法。首先,这个整体二分是将数据范围和操作放到一起,不断二分数据的范围,可以得到有某些操作可以被完成,原创 2015-08-26 08:27:43 · 1784 阅读 · 0 评论 -
poj1724--ROADS(最短路变形)
题目链接:点击打开链接题目大意:给出n个点,m条路径(有向),每条边有一个花费和一个长度,要求在给定的花费内求1到n的最短路径用dis[i][j]表示从1到i点,花费为j的最短路径,跑spfa,求出最短路#include #include #include #include using namespace std ;#define INF 0x3f3f3f3fstruct原创 2015-07-17 15:25:00 · 1408 阅读 · 0 评论 -
poj3411--Paid Roads(bfs+状压)
题目链接:点击打开链接题目大意:有n个点,m条有向边,经过边需要一个花费,a b c p q代表 a到b的一条道路,如果经过这条边之前经过c点,那么需要p的花费,否则需要q的花费,问从1点到n点的最小花费。方法1、每条边可能会经过多次,每个点也可以经过多次,这样就没有了边界不能直接进行dfs,因为要记录之前经过的边,所以使用状压,dis[i][j]:当前在第i个点,j表示经过了的点,这样就原创 2015-07-17 15:13:28 · 1304 阅读 · 0 评论 -
hdu5358--First One(双指针)
题目链接:点击打开链接题目大意:给出一个序列,其中S(i,j)代表a[i]到a[j]的和,然后计算的和。其中包含了向下取整,所以我们可以想到,log(2,S(i,j))向下取整后最大也就是33,所以我们可以寻找log值相同的段,对于以每一个数为起点,都有可能存在一段连续的序列,他们的log值是相同的,,,一开始的做法是枚举起点i,然后对每一段log值计算一个区间(r1,r2),通过二分原创 2015-08-10 16:18:12 · 919 阅读 · 0 评论 -
hdu5355--Cake(构造)
题目链接:点击打开链接题目大意:给出n块蛋糕,现在有m个人要分蛋糕,要求分的大小是一样的,并且蛋糕不能切开,问能不能分成,并输出可以分成的方法。计算蛋糕的和sum,如果sum不能整除m,或者sum/m同样也就得到n >= 2*m-1,就是可以的,所以可以先计算出(n-2*m+1)%(2*m)+2*m-1,先拿出2*m-1个来,那么剩下的蛋糕中,每连续2*m个都可以组成一个相同的数值(小原创 2015-08-10 09:48:06 · 854 阅读 · 0 评论 -
poj1699--Best Sequence(dfs+剪枝)
题目链接:点击打开链接题目大意:给出n个字符串,要求组合后的串最短#include #include #include using namespace std ;char str[12][22] ;char s[300] , s1[300] ;int vis[12] , min1 , n , l[12];void dfs(int cnt,int k) { //prin原创 2015-07-16 15:18:37 · 1992 阅读 · 0 评论 -
hdu5323(2015多校3)--Solve this interesting problem(万万没想到,,,)
题目链接:点击打开链接题目大意:按照题目给出的区间向根部搜,由子区间推到父区间,有四种可能(左右区间和(l+r)的奇偶性):[ l , 2*r-l ][ l , 2*r+1-l ] [ (l-1)*2-r , r ][ (l-1)*2+1-r , r ]按照这四种方式向上搜,加上剪枝就可以AC原因是l/(r-l+1) 注意:剪枝的时候当前值>= n 就retur原创 2015-07-29 14:59:22 · 777 阅读 · 0 评论 -
hdu5325(2015多校3)--Crazy Bobo(dfs)
题目链接:点击打开链接题目大意:给出一棵树,n个点,每个点都有一个权值,现在定义一个集合,集合中的点按照权值排序,v[i]到v[i+1]的路径上的点都比v[i]的权值小,问集合中最多能有多少个点。如果存在一个集合满足这些条件,那么肯定有一个中心点,这个中心点按照它能到达的路径上的点权值不断在增加,这样中点最小,其他的分支上的点越远离中点越大。dp1[i]记录以i为根的子树上向下,从w[i]原创 2015-07-29 15:30:50 · 705 阅读 · 0 评论 -
hdu5360--Hiking(优先队列)
题目链接:点击打开链接题目大意:邀请n个人去旅游,给出每个人同意邀请时对人数的限制条件:最小人数和最大人数,一旦接收邀请就不会再退出,求一个序列,在这个序列中可以邀请到最多的人去旅游。首先对n个人的最小人数限制由小到大排序,记录当前已经接受邀请的人数,然后将满足最小人数的人加入优先队列,优先队列按照最大人数由小到大排列,每次吐出的都是最大人数限制的最小值,如果当前的人数小于等于最大的人数就原创 2015-08-10 10:22:58 · 714 阅读 · 0 评论 -
hdu5419--Victor and Toys(枚举)
题目链接:点击打开链接题目大意:有n个值a[i],排成一排,编号为1到n,现在有m个区间[lj,rj],任意从m个区间里挑选出三个i,j,k,统计编号在[ max(li,lj,lk) , min(ri,rj,rk) ]内的数的和,问最终和的期望是多少。和的期望 = (∑任意一种挑选方式的和)/(总的挑选方式) = x / y ;首先y = m*(m-1)*(m-2)/6 ;至于x,原创 2015-08-24 08:36:49 · 1254 阅读 · 0 评论 -
hdu5353(2015多校6)--Average(贪心)
题目链接:点击打开链接题目大意:有n个人围城一个环,每一个人手里都有一些糖果,第i个人有ai块。现在有三种操作:第i个人给第i+1个人一块。如果i有第i+1个人给第i个人一块。如果i+1有什么都不做。第i个人和第i+1个人之间,可以选择一种操作并执行,问最终能不能让所有人手里的糖相等。当n = 1 时,永远是YES当n = 2 时,注意1和2之间只能有一种操作,不存原创 2015-08-07 16:00:27 · 1222 阅读 · 0 评论 -
BestCoder 1st Anniversary--1001,1002解题
SouvenirTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 713 Accepted Submission(s): 436Problem DescriptionToday is the 1st原创 2015-07-27 15:46:44 · 1293 阅读 · 0 评论 -
hdu5288(2015多校1)OO’s Sequence
OO’s SequenceTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 353 Accepted Submission(s): 117Problem DescriptionOO has got a原创 2015-07-21 20:10:47 · 1339 阅读 · 0 评论 -
hdu5386(2015多校8)--Cover
题目链接:点击打开链接题目大意:给出一个n*n的矩阵的初始值,和最终的值,现在有m个操作 L i j ,将第i列的值重置为j,H i j,将第i行的值重置为j。问m个操作应该怎么执行,可以完成矩阵的变化。从最终的值向前找寻方案,每次找行和列中剩余的颜色全部相同的,看是否存在没被使用的操作可以完成它,如果有就记录下来,那么最终按照记录的逆序输出,就是可以完成变化的序列啦#include原创 2015-08-15 15:49:47 · 510 阅读 · 0 评论 -
hdu5340--Three Palindromes(Mannacer算法)
题目链接:点击打开链接题目大意:给出T个字符串,问每个字符串是不是由三个回文串组成,是输出Yes,否则Non*n的复杂度竟然可以过啊,,,,,,,,用Mannacer直接计算出以每一位为中心的最长回文串,然后求出pre[i](1~i)是否为回文串,suf[i](i~len-1)是否为回文串,然后枚举第二段回文串的中点,只要在第二段中左侧和右侧存在同样位置的两个pre[j]和suf[j]原创 2015-08-03 09:45:02 · 843 阅读 · 0 评论 -
codeforces(567A)--A. Lineland Mail--B. Berland National Library
A. Lineland Mailtime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAll cities of Lineland are located on the原创 2015-08-07 09:32:20 · 1334 阅读 · 0 评论 -
poj3301--Texas Trip(最小正方形覆盖)
题目链接:点击打开链接题目大意:给出n个点的坐标,现在要求一个正方形,完全包围n个点,并且正方形面积最小,求最小的正方形面积。表示不能理解为什么面积随着角度的变化是一个单峰的函数,等待大牛告诉一下,,,如果面积随角度变化是单峰的函数,那么自然就可以想到是三分,按照题目要求求正方形最小的面积,如果正方形是平行于x轴的,那么正方形面积是x的最大距离*y的最大的距离。然后旋转正方形,在0到9原创 2015-08-06 19:14:01 · 3421 阅读 · 0 评论 -
poj3296--Rinse(三分)
题目链接:点击打开链接题目大意:有一个酒桶容量为Vc,里面还有Vw的酒,现在用Vb的水去刷酒桶,每次酒桶的内壁上会留下Vr的液体,最多可以刷k次,问怎么样刷酒桶,可以让酒桶里面的就最少。如果Vb+Vw 那么其它情况就保证了一定可以向外倒水。所以最终的桶里面剩余的液体是Vr,只要保证Vr内的酒的浓度最小,那么剩余的酒也就是最少的。可以假设用的水是x1,x2,x3,,,,计算每次刷通后原创 2015-08-19 10:37:28 · 871 阅读 · 0 评论 -
poj1870--Bee Breeding(模拟)
题目链接:点击打开链接题目大意:给出一个蜂窝,也就是有六边形组成,从内向外不断的循环(如图),给出两个数的值u,v按六边形的走法,由中心向六个角走。问由u到v的的最小步数。首先处理处每一个数的坐标,让1点位(0,0)其他的点预先处理出来。然后计算两个数的距离时,我们可以计算两个数的位置横坐标差位x,纵坐标差位y,当x 当x>=y的时候,可以先斜线走走到相同的行,然后横正走,一直找到原创 2015-08-19 15:23:55 · 867 阅读 · 0 评论 -
hdu5399(2015多校9)--Too Simple
题目链接:点击打开链接题目大意:有m个映射,从1到n映射到1到n,记为f1,f2,f3,,,fm,并且这些映射满足f1( f2( f3(,,,,fm(i) ) ) ) = i现在已知几个映射的值,还有几个映射是不知道的,问不知道的映射一共有几种可能的组合方式。输入n m,之后m行,如果一行的第一个数为-1,代表这一个映射fi是不知道的,否则一行有n个数,第i行的第j个数字x代表fi(j)原创 2015-08-18 20:19:26 · 652 阅读 · 0 评论 -
poj2454--Jersey Politics(随机化算法)
题目链接:点击打开链接题目大意:给出3*n个地方,每个地方有1000票,现在有每个地方的得票数,问如何分成3个区域(每个区域n个城市),使得每个区域的总票数过半数。首先对于所有地方由大到小排序,选择前2*n个,划分到两个区域,这样是能得到和最大的方法,然后随机交换两个不同区域的城市,一直到这两个区域的和都大于3*500#include #include #include #inc原创 2015-08-17 20:29:01 · 1555 阅读 · 0 评论 -
hdu5379(2015多校7)--Mahjong tree(构造+dfs)
题目链接:点击打开链接题目大意:给出一棵n个节点的树,1节点是根,现在有1到n,n个数放到每个节点上,要求每个子树中数字是连续的,同一个父节点的节点数字是连续的,问有多少种。如果对于一个节点u来说,如果子节点vi数目是sum,子节点是叶子节点的数目是num,如果sum-num>2那么不能被构造,如果sum-num==2,那么方案是dp[u] = ∏dp[vi]*(num!),如果小于2,那原创 2015-08-18 09:00:37 · 798 阅读 · 0 评论 -
poj3373--Changing Digits(DFS+剪枝///记忆化)
题目链接:点击打开链接题目大意:给出一个n和一个k 求m要求1、m要和n相同的位数要求2、m要整除k要求3、如果1和2满足,那么m要和n有尽量少的不同位要求4、如果1、2、3满足,要使m尽量的小简单的一个深搜,但是直接被要求吓蒙,,,,,要求1和2直接可以在搜索时判断,要求3可以在深搜时给出可以改变的位数(有0到len(n)),而要求4需要控制在搜索是要从小的开始搜,即原创 2015-07-24 16:52:15 · 1338 阅读 · 0 评论 -
hdu5305(2015多校2)--Friends(状压,深搜)
FriendsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 668 Accepted Submission(s): 313Problem DescriptionThere are n people原创 2015-07-24 10:59:15 · 1116 阅读 · 0 评论 -
hdu5351(2015多校5)--MZL's Border(打表,,找规律)
题目链接:点击打开链接题目大意:给出b1 = 'b' , b2 = 'a' , bi = b(i-1)b(i-2),将i-1和i-2链接起来,记录一个串的s[1~i] 和s[n-i+1~n]相同的话Border,当i为最长是为LBorder,现在给让求在bn这个串上的前m个字符组成的子串的LBorder通过计算可以发现,b字符串的前缀都是相同的,所以只要求出m的LBorder就行,原创 2015-08-04 20:02:15 · 734 阅读 · 0 评论 -
hdu5303(2015多校2)--Delicious Apples(贪心+枚举)
Delicious ApplesTime Limit: 5000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 587 Accepted Submission(s): 188Problem DescriptionThere are原创 2015-07-24 15:23:31 · 1230 阅读 · 0 评论 -
hdu5348(2015多校5)--MZL's endless loop(搜索)
题目链接:点击打开链接题目大意:给出n个点,m条无向边,现在要求将无向边变为有向边,要保证每个点的出度和入度的差不超过1直接进行搜索,对每个点进行出度和入度的判断,如果出度大,就先进行反向的搜索(每搜索一条边u,v就认为这是一条v到u的有向边),反之,进行正向搜索(每搜到一条边u,v认为这是一条u到v的有向边),一直搜索到找不到边能继续为止。注意:1、已经使用过的边为了防止再次被遍原创 2015-08-04 19:53:02 · 1617 阅读 · 2 评论 -
hdu5385(2015多校8)--The path(贪心,搜索)
题目链接:点击打开链接题目大意:给出一个有向图,求1到其它点的最短距离,要求dis[1] dis[n-1] > dis[n] (1 给出符合条件的每条边的边长(1设置vis标记点是否已经存在,从左边开始逐个搜索,如果点已经存在那么继续遍历,否则换方向遍历(从右开始遍历),因为题目保证存在输出,所以一定可以遍历完所有的。按照被遍历到的时间也就是dis的值,然后在按照(u,v) =原创 2015-08-15 18:52:21 · 685 阅读 · 0 评论 -
codeforces(559B)--B. Equivalent Strings(暴搜 或 最小表示法)
B. Equivalent Stringstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputToday on a lecture about strings Gera原创 2015-07-23 09:43:19 · 1891 阅读 · 0 评论 -
hdu5387(2015多校8)--Clock(模拟)
题目链接:点击打开链接题目大意:给出一个时间,问在钟表上这个时间的时候,时针和分针的角度,时针和秒针的角度,分针和秒针的角度,如果不是整数以分数的形式输出。如果按照最小的格来算,那么:1s对于秒针来说走1格,分针走12/720格,时针走1/720格。1m对于分针来说走一个,时针走60/720格。1h对于时针来说走5格。计算给出的时间中时针,分针,秒针走的格数,相减得到差,每原创 2015-08-14 15:27:44 · 725 阅读 · 0 评论 -
sdut2168--Mathmen(贪心)
MathmenTime Limit: 1000MS Memory limit: 65536K题目描述Mathmen love mathematics, and they live on the number line. All the mathmen spend all their time on solving mathematical pro原创 2015-04-06 10:57:36 · 823 阅读 · 0 评论 -
zoj3847--Collect Chars(搜索+dp)
Collect Chars Time Limit: 2 Seconds Memory Limit: 65536 KB Bob was playing MC and was punished by Alice. Bob was trapped in a maze and there were some characters on some specific cell原创 2015-03-23 16:36:27 · 977 阅读 · 0 评论 -
poj1027--The Same Game(模拟)
The Same GameTime Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64uSubmit Status Appoint description: System Crawler (2013-03-03)DescriptionThe game原创 2015-01-29 21:12:44 · 994 阅读 · 0 评论 -
poj3371--Flesch Reading Ease(模拟)
Flesch Reading EaseTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 1882 Accepted: 553DescriptionFlesch Reading Ease, a readability test named after its原创 2015-01-29 17:33:24 · 1229 阅读 · 0 评论 -
测试赛D - The War(有控制范围的贪心)
#include #include #include using namespace std;struct node{ int x , y ;} p[2600];int q[1200] ;bool cmp(node a,node b){ return a.y < b.y || ( a.y == b.y && a.x < b.x ) ;}int main(){原创 2014-07-30 14:53:50 · 888 阅读 · 0 评论