09 2015 档案
摘要:题目大意:貌似是一个游戏,首先给出卢布的攻击,防御,还有血量,再给出每升一级增加的攻击防御还有血量,然后又N个敌人,杀死每个敌人都会得到一些经验,求杀死完所有敌人时剩余的最大血量。分析:因为敌人比较少,最多只有20个,所以状态最多有2^20种,用dp[i]表示状态为i的时候的最大剩余血量,然后模拟战...
阅读全文
摘要:分析:首先想到每个钥匙的结尾有4种状态,不过题目还需要判断有三种不同的钥匙深度,所以每种深度结尾后有2^4种状态,0000->1111,不过题目还需需要有相邻的钥匙深度大于等于3,所以需要两种不同的状态表示0表示没有出现过这样的,1表示出现过,然后开一个4维的数组进行状态转移就好了dp[MAXN][...
阅读全文
摘要:题目大意:有一列数据,可以从最上面的开始连接下面相同的元素,然后消除,不过距离不能超过6,询问最后能不能消除完整个数列。分析:首先讨论一点最远能消除的地方,比如点的位置是x,如若想要消除x+1位置处的值,那么至少也得在x-4处开始消除,所以x后面最多能有4个被消除,也就是最多能下落4个位置,能够消除...
阅读全文
摘要:题目大意:一个圆上有2K个点,用K个线把他们连接起来,求出这些线最少可以把这个圆分成P部分,有N种分割方法。输出N和P。分析:分割线一定是相互不相交的线,所以可以把这写分成两部分,f[i] += f[j]*f[i-j-1](j[0....i-1])。=========================...
阅读全文
摘要:题目大意:给一个凸多边形(点不是按顺序给的),然后计算给出的线段在这个凸多边形里面的长度,如果在边界不计算。分析:WA2..WA3...WA4..WA11...WA的无话可说,总之细节一定考虑清楚,重合的时候一定是0代码如下:=====================================...
阅读全文
摘要:题目大意:有N个点,如果可以使用这N个点连接,连接的时候任意两条边要成直角,任意边都要平行于x轴或者y轴,并且不能出现跨立相交,最终组成一个闭合的多边形,求出来这个多边形的最小长度。分析:容易证明这个多边形的存在是唯一的,因为每个点出发都会产生两条边,横着的或者竖着的,而且,相同x或者相同y的点所在...
阅读全文
摘要:题目大意:有一个电话簿,每页最多纪录K行电话,现在有N个电话要记录在电话薄上,要求同页的电话号码的首位要相同,电话簿的前两页是纪录的别的东西,问最少需要多少页电话簿。分析:直接求首位数字有多少个即可.....==============================================...
阅读全文
摘要:题目大意:有两个箱子,一个箱子装了A个球,一个箱子装了B个球,可以从球多的那个箱子拿出来球少的箱子里面球的总数放在少的那个箱子里面,问能否把球全部放在一个箱子里面?分析:很容易求出来最后放的拿一下一定是A == B,再继续往前推A/=2....所以判断拿球的过程中是否有2^k次方数,如果有就能放,没...
阅读全文
摘要:题目大意:B[i, j]表示周围有多少个比它大的数,能否用B数组构造出一个A数组,如果不能输出“NO SOLUTION”。分析:数据规模比较小,可以直接暴力枚举每个点的值。代码如下:#include#include#include#includeusing namespace std;const i...
阅读全文
摘要:题目大意:RT分析:构造一条射线,如果穿越偶数条边,那么就在多边形外面,如果穿越奇数条边,那么就在多边形里面。代码如下:==========================================================================================...
阅读全文
摘要:直接上代码.......================================================================================================================#includeconst int MAXN = 4...
阅读全文
摘要:题目大意:有个一无向图,给所有的边染色,如果一个点连接的边超过两个,那么最少要染一个白色和一个黑色,能否给整个图染色?不能输出“No solution”。分析:引用连接http://edward-mj.com/archives/445首先构建dfs树,无向图dfs树具有的一大优点是该点只会向自己的祖...
阅读全文
摘要:题目大意:有一个正N边形,然后给出两个点,求出剩余的点的坐标。分析:向量旋转可以求出坐标,顺时针旋转时候,x = x'*cos(a) + y'*sin(a), y=-x'*sin(a) + y'*cos(a), 逆时针时候 x = x'*cos(a)-y'*sin(a), y=x'*sin(a)+y...
阅读全文
摘要:题目大意:如果A0*X + B0*Y能够整除 N,求出来多有少A*X+B*Y 也能够整除去N,求出所有的A,B(0 (K * A0) % N = A, (K * B0) % N = B, (k=[0....N))。ps.记得排序去重复......代码如下:======================...
阅读全文
摘要:题目大意:有K组测试数据,然后每组有N个正整数,A1,A2,A3.....An,求出 A1 + A1*A2 + A1*A2*A3 + .......A1*A2*...An 的数根。分析:有个对9取余的定理是可以直接求树根的,不过拿来玩大数运算也不错。ps.每位可以保存9位数,保存10位数会溢出。高精...
阅读全文
摘要:题目大意:求下面N个数里面有多少个数的M次方能整除K代码如下:========================================================#include#include#includeusing namespace std;const int MAXN = 10...
阅读全文
摘要:题目大意:素数表2,3,5,7,11.....如果一个素数所在的位置还是素数,那么这个素数就是超级素数,比如3在第2位置,那么3就是超级素数.....现在给你一个数,求出来这个数由最少的超级素数的和组成,输出这个超级素数。分析:因为给的数字并不大,所以直接用完全背包求出来即可。代码如下:======...
阅读全文
摘要:这年的开始的第一天是星期 1代码如下:========================================================================================================#include#include#include#in...
阅读全文
摘要:题目大意:在一个数轴上有N个点,每个点都有一个权值,在这个数轴上找一个点,是的每个点到这个点的距离之和乘上权值的总和最小。分析:以前也遇到过类似的问题,不过并不知道这是带权值的中位数问题,百度百科有比较精彩的证明,可以证明出来跟这个位置和距离没有什么关系,只和权值有关系,假设这个点是T,那么∑d[L...
阅读全文
摘要:题目大意:判断一个数是否是两个素数的乘积,如果是,输出Yes,否则No。分析:先打表求出来一部分素因子,用素数对素数判定还是比较快的。代码如下:==============================================================================...
阅读全文
摘要:分析:直接上吧,建议不要使用模板,否则没啥意义了。代码如下:========================================================================================================================...
阅读全文
摘要:分析:使用的是构造新数字法进行不断构造,然后逼近每一位数字,然后使用c++徒手敲了240多行代码,竟然过了........................很有成就感。代码如下:==============================================================...
阅读全文
摘要:题目大意:这是一个魔术游戏,首先把你的手指放在一个左上角的格子里面,然后魔术师说你可以移动K1步,移动完之后,他会删除一些方格,并且说,你肯定不在这里,删除的方格不可以再去了,然后让你再走K2步,继续删除一些格子,直到就剩下一个格子为止,魔术师就可以说抓住你了,输出每个Ki和删除的格子。分析:比较明...
阅读全文
摘要:翻译:引自http://www.cnblogs.com/yylogo/archive/2011/06/09/SGU-108.html在1949年印度的数学假D.R.Kaprekar发现了一种叫做self-number的经典数字,对于任意正整数n,定义d(n)为n加上n的各个位上的数字(d是数字的意思...
阅读全文
摘要:题目大意:求n位数的平方的后几位结果是987654321的个数是多少。分析:刚看到这道题的时候怀疑过有没有这样的数,于是暴力跑了一下,发现还真有,9位的数有8个,如下:i=111111111, i*i=12345678987654321i=119357639, i*i=142462459876543...
阅读全文
摘要:题目大意:有一个二元一次方程,给出系数值和x与y的取值范围,求出来总共有多少对整数解。分析:有以下几点情况。1,系数a=0, b=0, 当c != 0的时候结果很明显是无解,当c=0的时候x,y可以为任意值,答案就是(x2-x1+1)*(y2-y1+1)2,系数a=0, b!=0, 先判断y的唯一解...
阅读全文
摘要:分析:这个东西在数论里面应该叫做不定方程式,可以搜一下,有很精彩的证明,先求出来方程式的一组特解,然后用这组特解来求通解,但是求出来特解之后怎么求这些解里面的最小非负x值?我们知道 x = x0 + bt, 假设x=0, 也就是最小值, 那么 t = x0/(-b), x0+x0/(-b)*b就是最...
阅读全文
摘要:分析:很容易知道序列1,2,3, 4,5, 6......与3的关系就是1,2, 0,1, 2,0,......如果是在一个数后面添加一个数就变成了这种序列1, 0, 0, 1, 0, 0, 1, 0, 0.。。。代码如下:======================================...
阅读全文
摘要:题目大意:把 M 朵花插入 N 个花瓶中,每个花插入不同的花瓶都有一个价值A[Mi][Nj],要使所有的花都插入花瓶,求出来最大的总价值(花瓶为空时价值是0)。分析:dp[i][j]表示前i朵花插入前j个花瓶的最大价值,那么比较容易看出 dp[i][j] = max(dp[i][j-1], dp[i...
阅读全文
摘要:题目大意:有一个城市的路线图,有N个交叉点,每两个交叉点之间只有一条路,现在想从交点u去交点v,不过这个路的交通比较特别,每个路都有一个交通灯,灯有两种颜色,蓝色和紫色,例如一条路线在交点s,t之间,如果想从s走到t,那么只有等s和t的交通灯的颜色一致的时候才可以从s走,求出来从u到v的最短时间。分...
阅读全文
摘要:题目大意:给你一个正整数N,求出来不超过N 的并且与N互质的正整数的个数。就是一个大水题~~~代码:#include#includeint GCD(int m, int n){ if(n == 0) return m; return GCD(n, m%n);}int mai...
阅读全文
摘要:题目大意:这是一个多米诺骨游戏,这个游戏的规则就是一个连着一个,现在给出 N 个多米诺,每个多米诺两边都有一个编号,相邻的多米诺的编号要一致,当然多米诺是可以翻转的(翻转就加‘-’,不翻转是‘+’),输出一个多米诺的顺序,要从左往右。分析:开始的是有以为是二分匹配,然后发现并不能匹配,无法分成两个集...
阅读全文
摘要:140 A.New Year Table题目大意:有一个大圆桌子,半径是R, 然后有n个半径是r的盘子,现在需要把这些盘子摆放在桌子上,并且只能摆放在桌子边缘,但是不能超出桌子的范围....问能放摆放下。分析:先求出如果可以摆放n个盘子的最大夹角a,然后计算出来两个圆之间的距离,就可以判断出来是否能...
阅读全文
摘要:题目I -Osu! -HDU 5078题目分析:最水的一道题吧,求两点间的距离和时间差值的最大比值#include#include#includeusing namespace std;const int MAXN = 1007;const double EPS = 1e-9;struct Poin...
阅读全文
摘要:题目大意:首先给一个圆的半径和圆心,然后给一个多边形的所有点(多边形按照顺时针或者逆时针给的),求,这个多边形是否是凸多边形,如果是凸多边形在判断这个圆是否在这个凸多边形内。分析:判断凸多边形可以使用相邻的三个点叉积判断,因为不知道顺时针还是逆时针,所以叉积如果有有整数和负数,那么一定不是凸多边形(...
阅读全文
摘要:题目大意:给一些几何图形的编号,求出来这些图形都和那些相交。分析:输入的正方形对角线上的两个点,所以需要求出来另外两个点,公式是:x2:=(x1+x3+y3-y1)/2; y2:=(y1+y3+x1-x3)/2;x4:=(x1+x3-y3+y1)/2; y4:=(y1+y3-x1+x3)/2;这个是...
阅读全文
摘要:题目大意:有一个不反光并且不透光的管道,现在有一束光线从最左端进入,问能达到的最右端是多少,输出x坐标。分析:刚开始做是直接枚举两个点然后和管道进行相交查询,不过这样做需要考虑的太多,细节不容易掌控。后来发现其实只需要对接口进行一下相交查询就简单多了,因为只需要考虑能不能通过每个截口就可以了,而且这...
阅读全文
摘要:题目大意:有两块木板交叉起来接雨水,问最多能接多少。分析:题目描述很简单,不过有些细节还是需要注意到,如下图几种情况:#include#include#include#includeusing namespace std;const int MAXN = 107;const double oo = ...
阅读全文
摘要:题目大意:给一些序列的正方形的边长,然后让这个正方形倾斜45度,放在第一象限,一个角要紧挨着x轴,按照输入的顺序放下去,然后问最后从上往下看可以看到那些正方形?分析:不能算是计算几何题......先求出来这个正方形的左右两端的位置,然后判断是否有比它高的正方形把它掩盖住就行了,为了避免浮点运算,可以...
阅读全文
摘要:题目大意:给一些散列点然后初始点是坐标最下面最左面的点,然后只能往左走,求出来最多可以经过多少个点,把序号输出出来。分析:先求出来初始的点,然后不断排序找出来最近的凸点....复杂度是 n^2*log(n)。。。。不多点很少,所以随意玩。代码如下:==========================...
阅读全文
摘要:题目大意:给一个线段和一个矩形,判断线段是否和矩形有公共点。分析:用矩形的四个边当线段判断与所给的线段是否有交点,需要注意的是给的矩形是不标准的,需要自己转换,还需要注意线段有可能在矩形内部。代码如下:=================================================...
阅读全文
摘要:题目大意:在一个正方形的迷宫里有一些交错墙,墙的两端都在迷宫的边缘墙上面,现在得知迷宫的某个位置有一个宝藏,所以需要砸开墙来获取宝藏(只能砸一段墙的中点),问最少要砸开几面墙。分析:这个题意刚开始理解错了,以为只能砸整面墙的中点,而实际上使一段墙的中点,也就是两个交点之间的墙,这样问题就变得比较容易...
阅读全文
摘要:题目大意:有一个木棒,按照顺序摆放,求出去上面没有被别的木棍压着的木棍.....分析:可以维护一个队列,如果木棍没有被压着就入队列,如果判断被压着,就让那个压着的出队列,最后把这个木棍放进队列,不过速度并不快,枚举才是最快的......据说是任意时刻没有超过1000个top sticks.....很...
阅读全文
摘要:题目大意:有一个房间(左上角(0,10),右下角(10,0)),然后房间里有N面墙,每面墙上都有两个门,求出来从初始点(0,5),到达终点(10,5)的最短距离。分析:很明显根据两点之间直线最短,所以所走的路线一定是点之间的连线,只需要判断一下这两点间知否有墙即可。代码如下:============...
阅读全文
摘要:分析:有三种关系,共线,平行,还有相交,共线和平行都可以使用叉积来进行判断(其实和斜率一样),相交需要解方程....在纸上比划比划就出来了....代码如下:========================================================================...
阅读全文
摘要:题目大意:给出一些线段,然后判断这些线段的投影是否有可能存在一个公共点。分析:如果这些线段的投影存在一个公共点,那么过这个公共点作垂线一定与所有的直线都想交,于是题目转化成是否存在一个直线可以经过所有的线段,考虑线段并不多,所以可以枚举任意两点当作直线......代码如下:=============...
阅读全文
摘要:题目大意:给你一个矩形的左上角和右下角的坐标,然后这个矩形有 N 个隔板分割成 N+1 个区域,下面有 M 组坐标,求出来每个区域包含的坐标数。 分析:做的第一道计算几何题目....使用叉积判断方向,然后使用二分查询找到点所在的区域。 代码如下: #include<stdio.h> #include
阅读全文
摘要:题目大意:RT分析:后缀数组求回文串,不得不说确实比较麻烦,尤其是再用线段数进行查询,需要注意的细节地方比较多,比赛实用性不高......不过练练手还是可以的。线段数+后缀数组代码如下:=========================================================...
阅读全文
摘要:题目大意:RT分析:练手题目....后缀数组确实很强大.....多理解height数组, 切勿使用模版,后缀数组本身就有很多细节,多犯错更有利理解这个算法。代码如下:===================================================================...
阅读全文
摘要:题目大意:给你一个数组,求这个数组里面至少重复k次的子串。分析:后缀数组的练手题目...不过给的数字比较大,可以先离散化处理一下即可。代码如下:==============================================================================...
阅读全文
摘要:题目大意:* 有N(1 #include#include#includeusing namespace std;const int MAXN = 2e4+7;const int BaseNum = 90;struct SuffixArr{ int text[MAXN], tempx[MAXN]...
阅读全文

浙公网安备 33010602011771号