
中等
文章平均质量分 80
Tri_integral
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDU 4775 Infinite Go 解题报告
题目题意:在一个有上、左边界,无右、下边界的棋盘上下棋,如果一片同颜色的棋子周围(只考虑横纵的四个格子)都是边界或者敌方的棋子,则它们会被消去。A、B两人轮流下棋,如果一方下了一个棋子使得有棋子要被消去时,先消敌方的,消完敌方后再看是否要消去己方。已知下棋的位置,求最后剩的棋子个数。题解:用map存下每个棋子的位置,就可以预处理棋子之间的邻接关系。然后依次下棋,遇到同色的棋子则用并原创 2013-11-18 20:25:28 · 1672 阅读 · 0 评论 -
CodeForces 115C. Plumber 解题报告
题目题意:n×m的的矩阵里,每个格子都有一个水管,并且水管是给出的4种形状的一个。有一些地方水管已经确定了,有一些还没有。若两个相邻的水管彼此没有连通则为泄漏。求不泄漏的方案数,不要求水管全部连成一条。题解:原本以为是简单的插头DP,但是看数据规模不可能。根据给出的四种水管,可知任何一种都和左右两格连且只连一个,上下也是,而且左右和上下是独立的,所以可以单独考虑一行和一列。对一原创 2013-09-06 11:46:26 · 1083 阅读 · 0 评论 -
UVAlive 6160 Countdown 解题报告
题目题意:给出6个数,可以任意做四则运算,但是每个数和每个等式的结果只能用一次,任何时候运算结果都要求是正整数。问能否能得出指定的值,如果不能,要求得到最接近的值。要求输出解,不要所有数字都用上,也不要求输出的过程个个都有用。题解:每次枚举剩下的数和结果里选两个枚举运算方式,将结果放进去再dfs。做之前先把6个数排序,如果两次枚举的数和上次一样,就不用再做了。加上这个剪枝可以快原创 2013-08-17 22:55:11 · 1099 阅读 · 0 评论 -
UVAlive 6151 Beehives 解题报告
题目题意:森林里有n棵树,一些树之间有道路。现在蜜蜂要选择不少于两棵的树建蜂巢,每棵一个,之后所有两边不都有蜂巢的道路会被清除。如果要使得剩下的道路去掉任意一条依旧两两可达,求最少的蜂巢数。题解:也就是在原图中找一个点数最少的双连通子图,显然就是个环。由于点比较少,可以直接枚举每个点做BFS。原本我是每次BFS一找到环就退出并更新,但是那样会WA,不知道为什么。原创 2013-08-17 22:47:12 · 1370 阅读 · 0 评论 -
HDU 4681 String 解题报告
题目题意:有三个字符串ABC,现在要求一个最长的字符串D,使得:1、D是A的子序列。2、D是B的子序列。3、C是D的子串。输出D的长度。题解:首先对于A,求以J为结尾时,最大的I,使得C是A[i]~A[j]的子序列。B同理。然后枚举A、B各自包含C的区间,那么两个区间外的位置用LCS计算能在C两端加的字符数。有点卡常数,T了两次,还是自己写得原创 2013-08-15 21:18:50 · 685 阅读 · 0 评论 -
HDU 4667 Building Fence 解题报告
题意:给n个圆和m个三角形,且保证互不相交,用一个篱笆把他们围起来,求最短的周长是多少。解法1:在每个圆上均匀的取2000个点,求凸包周长就可以水过。解法2:求出所有圆之间的外公切线的切点,以及过三角形每个顶点的的直线和圆的切点,和三角形的三个顶点。这些点做凸包确定篱笆边上的图形。凸包的边和圆弧之和即为所求。求圆弧长度的时候要判断是优弧还是劣弧。用叉积判断两个向量的方向关系即可。//T原创 2013-08-14 15:54:25 · 944 阅读 · 0 评论 -
hdu 4071 Game
题意:ALICE和BOB轮流买东西,ALICE的钱总数为a,BOB的钱为b,物品必须从左到右买,一次至少买一个,最先不能买的人输ALICE为先手,问谁能赢。解法:t=a+b。只有前缀和1.ans[i]>=c[i]+ans[i+1],即当前选手买下第i个物品后对于第i+1个物品还处于必胜态 2.ans[i]>=t-sum[i-1]-(ans[i+1]-1),即当前选手买下第i个物品后另原创 2013-08-26 14:31:30 · 903 阅读 · 0 评论 -
HDU 4637 Rain on your Fat brother
题意:和Maze在(x,0)位置吵架,Maze在0时刻离开,t时刻开始下雨,雨的速度都为v。Maze的速度为v1,Fat Brother的速度为v2,Fat Brother 从t时刻开始从(x,0)开始追赶Maze给她送伞,求Maze在雨中的时间。雨的竖直下落,且下落位置给出,雨可以看作是等腰三角形和半圆的组合体。解法:容易计算出Maze在雨中的时间,把雨当成参考系,Maze的路径就是一条线段原创 2013-08-14 16:05:37 · 727 阅读 · 0 评论 -
HDU 4666 Hyperspace 解题报告
题目题意:k维平面上,会有一些点出现或者消失,求每次现存的点中,曼哈顿距离最大值。题解:以二维为例,对于原点而言,点(x,y)到它的曼哈顿距离为abs(x+y)或abs(x-y),到(x1,y1)的距离为abs(x+y)-abs(x1+y1)或abs(x-y)-abs(x1-y1).所以只要存下当前所有点相对原点的曼哈顿距离,对于每个点,可以用上述的方法查询其它点到它的最大曼哈顿距原创 2013-08-14 11:10:52 · 761 阅读 · 0 评论 -
CodeForces 254 E Dormitory
题目题意:一个人,每天有食物供应,除了自己吃之外还可以给同学吃,或者将今天的食物留到明天,但不能留到后天。每天每个朋友只能喂一次,每喂一次加1点受欢迎度。求n天后的最大受欢迎度。题解:DP,记录昨天剩下多少食物,并且每天计算喂i个朋友的最小花费。注意食物不能留到第三天。本来以为400^3要很久呢,没想到CF升级后这么快了。//Time:62ms//Memroy:3600K原创 2013-08-13 11:45:19 · 774 阅读 · 0 评论 -
HDU 4495 Rectangle 解题报告
通化邀请赛题意:有一个只包含字母和数字的矩阵,找一些两腰和X、Y坐标轴平行的等腰三角形,若斜边的高是它的对称轴,则是合法的,求最大的合法三角形的面积。解法:假如把字符串转成131进制的数(不要取模,溢出没关系),那么对一个字符串O(n)预处理后可以O(1)求某个子串的哈希值,因此O(n^2)预处理每一行,然后对于每一个点,假如是等腰三角形两腰的交点,则高有四个方向,对于每个方向原创 2013-05-30 19:32:02 · 2153 阅读 · 0 评论 -
HDU 4597 Play Game 解题报告
通化邀请赛题意:给两叠数量相同的牌,两人轮流取,只能从顶部或者底部取牌,每次只能取一张,每张牌上有分数,问先手最多能得几分。解法:记忆化搜。dp[a][b][c][d]表示当前的第一堆牌顶部为第a张,底部为第b张时,第二堆同理,先手最多能获得的分数。搜的时候枚举每次的四种取法,最大值即为所求。#include #include #include #include #in原创 2013-05-30 20:53:01 · 1853 阅读 · 0 评论 -
HDU 4499 Cannon 解题报告
通化邀请赛题意:一个最多5*5的棋盘,上面已有一些棋子(不是炮),现在要放置一些炮上去,使得按照中国象棋的规则不能互相吃掉对方。解法:题目没说清楚的地方是放上去的炮是不能移动的,但是题目里详细介绍了移动的规则。可以用状压做,状态(i,j)表示(0,j)~(i,j)的状态,若有无炮兵则为0,一个炮兵和一个棋子(棋子在后,在前的话相当于2)为1,有一个炮兵为2,两个炮兵为3.原创 2013-05-30 19:25:16 · 2045 阅读 · 0 评论 -
Codeforces 336D. Vasily the Bear and Beautiful Strings 解题报告
题目题意:一个01串,0刚好有n个,1刚好有m个,每次将最后的两个数字变成一个,如果是00则变成1,否则变成0.已知n,m和最后剩的一个数字,求原串可能有多少种。题解:由题,倒过来做,1->00,而0->01,10,11,进一步地0->100,000,10,100,也即是说最后的0可以在前面塞任意多个00或10或1,最后还是0.假如原串最后是0的话,枚举中间00、10和1的个数原创 2013-09-06 13:49:03 · 1316 阅读 · 0 评论 -
UVALive 5790 Ball Stacking 解题报告
题目题意:有n层堆成金字塔状的球,若你要选一个球,你必须把它上面那两个球取了,当然也可以一个不取。求选的球最大的权值和。题解:将这堆球转成举行,第一行是(0,0),第二个是(1,0)和(0,1)……如果选(i,j)的话,(i,j)到(0,0)之间的都要选。先把f(i,j)=(i,j)+……+(0,0)预处理出来。然后用dp[j]表示在j这一列有球被选,且j+1~n-1没选过的最原创 2013-09-01 20:56:32 · 1228 阅读 · 0 评论 -
HDU 4778 Gems Fight! 解题报告
题目题意:有一些背包,每个包里有一些宝石,A和B两人轮流操作,每次可以选一个包,将里面的宝石都放到公用坩埚里。如果坩埚里有某种颜色宝石的数目不少于s个,那么每s个这种颜色的宝石可以变成一个魔法石。如果操作者选完包后能得到魔法石,则他可以再操作一次。每个人都是最优策略(宝石尽可能比对方多),且可操作的时候必须操作,求A最多可以比B多多少魔法石。题解:可以用状压来做,i为哪些包选了,j原创 2013-11-18 20:15:15 · 1346 阅读 · 0 评论 -
HDU 4777 Rabbit Kingdom 解题报告
题目题意:有n个数字,m个查询,每次询问[l,r]这些数字中,和其他数都互质的数有多少个。题解:从左到右遍历,对每个数因子分解,如果它含有的因子在之前也有数含有,那么便可知那个数和它不互质,所以可以求出每个数i左边第一个和它不互质的数的位置,记为lefi,右边同理,记为rigi。然后将查询按l排序,从左往右遍历原数组,遍历到j时,若存在i使得j-1=lefi,则可知从j到(ri原创 2013-11-18 19:33:41 · 1495 阅读 · 0 评论 -
ZOJ 3431 Escape! 解题报告
题目题意:主角要从一座塔中逃脱,每一层除了出口外,还有不超过5个的宝藏,而且每层还有倒塌时间。求在成功离开的前提下,能拿到的最大财宝价值。题解:对每一层做预处理,计算从入口选择某几个宝藏再到出口所花的最少时间。然后对每层做dp[i],i表示到这层的时间为i,然后枚举所有选宝藏的方案来转移。//Time:190ms//Memory:280KB//Length:26原创 2013-09-27 22:16:21 · 976 阅读 · 0 评论 -
ZOJ 3430 Detect the Virus 解题报告
题目题意:要检测一个字符串中,包含多少种模式串。但是主串和模式串都用base64表示,所以要先转过来。题解:转码后,建AC自动机,老题了不多说……但是因为是从base64转来的,所以取值为0~255,因为这个坑了很久。//Time:230ms//Memory:44824KB//Length:3401B#include #include #include原创 2013-09-27 22:20:06 · 998 阅读 · 0 评论 -
HDU 4731 Minimum palindrome 解题报告
题目题意:要求生成一个字符串,字符集是前m个字母,长度为n,要求包含的最长回文子串最短,多组解输出字典序最小的。题解:1、m==1时,输出n个a。2、m>2时,将“abc”循环输出。3、m==2时:打表找一下规律,当n>8的时候,可以看到开头一定是"aa",然后"aababb"循环。如果最后出现的“bb”后的字符不多于4,则将他们都替换成“a”。在做这题时,对于原创 2013-09-15 10:46:35 · 933 阅读 · 0 评论 -
HDU 4734 F(x) 解题报告
题目题意:对于十进制数n,各位数是AnAn-1An-2 ... A2A1,定义函数 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1。求[0,B]中,有多少个数i的F(i)题解:由于指数从10变成了2,所以数变得特别小,999999999也就4599.所以可以预处理,dp[i][j]表示[0,10^i-1]之间原创 2013-09-15 10:25:41 · 848 阅读 · 0 评论 -
CF 333E Summer Earnings
题意:给二维平面上的n个点(n解法:可以转化为找一个最短边最长的三角形,圆心在三角形的三个顶点上。把n个点之间的连线长度从大到小排序,一条一条的加入集合中,如果当前当前线段的两个端点有两条在集合中且相交的线段,当前线段即为三角形的最短边。判断是否有交点可以用bitset简单粗暴的完成关于bitset的用法Member functions(constructor)Co原创 2013-09-04 22:02:03 · 1083 阅读 · 0 评论 -
UVA 12538 Version Controlled IDE 解题报告
题意:给三种操作 1.在p位置插入一个字符串.2.从p位置开始删除长度为c的字符串3.输出第v个历史版本中从p位置开始的长度为c的字符串解法:可以用平衡树做,但是不会.后来又听说可一用一个叫roap的神奇的STL,学习了一下,用法基本和string一样.roap的内部是用平衡树实现的,历史版本和当前版本可以共享一些内存,插入和删除整段字符串效率很高.是可持久化的数据结构.//T原创 2013-08-06 00:23:30 · 2300 阅读 · 0 评论 -
UVALive 5795 Garden Fence
题意:给定平面上的两种点a和b,每个点有权值,要求画一条直线,并删除一些点,使得直线的每一侧只有一类点,并且删除的权值之和最小。解法:枚举每一个点为中心,用atan2进行极角排序。再扫一遍中心点和每个点的连线,连线为射线,可以计算射线的反向延长线的极角。统计在这条直线一侧的两种点的个数(射线上的点包括端点算在内,延长线上的点不算),就可以计算出以这条直线分割的代价。扫下一条射线时,要把在当前射原创 2013-09-04 11:08:47 · 867 阅读 · 0 评论 -
UVALive 5791 Candy's Candy 解题报告
题目题意:有f种口味的糖果,现在要把每颗糖果分到一些packs里面去。packs分两种:flavored pack:只有一种口味。variety pack:每种口味都有。求满足下列要求的分法有多少种:1、每个pack至少有两颗糖果。2、所有pack的糖果数相同。3、variety pack 里每种口味的糖果数量相同。4、至少一个variety pack。5、原创 2013-09-01 20:44:32 · 1272 阅读 · 0 评论 -
UVA 12585 Poker End Games 解题报告
题目题意:两个人玩扑克牌,A每局输赢的概率都是0.5.如果A有a张,B有b张,c=min(a,b),则该局获胜的人可从输的一方得到c张牌。谁先失去所有牌就输掉游戏。给出初始局面,求游戏进行的轮数的期望和A获胜的概率。题解:初看是概率DP,但是以为是个图所以不好写,然后又用高斯消元,但是某些局面某些矩阵元素会超过long long。测了几个自己的样例,发现获胜的概率就是a/(a+b)原创 2013-08-27 21:50:47 · 1307 阅读 · 0 评论 -
UVA 12587 Reduce the Maintenance Cost 解题报告
题目题意:一个有n个城市m条道路的图,如果一条边删除后,有些城市变得不可达,则它需要维护,花费为L×D,L是道路长度,D是变得不可达的城市对数。每条道路维护花费由连接的城市中的一个承担。城市本来也有固定的维护花费。求所有可能中,花费最大的城市的最小花费。题解:首先可以用tarjan求桥,如果(u,v)之间为桥,且u为父亲,则回溯时已遍历的点数-dfn[v]+1就得到和v在同一双连通原创 2013-08-27 22:02:32 · 1244 阅读 · 0 评论 -
HDU 4655 Cut Pieces
题目题意:有N个blocks,每个block可以染的颜色为1~ai。连续的同颜色的blocks为一个piece,设N个blocks的某种上色方案的pieces数为s个。现在给你a序列,求将a重新排序后,所有上色方案的s的和的最大值是多少。题解:我的方法很麻烦……首先取得最大值的a的排序方案可以是:如果a序列有序,则 新序列为 a1 an a2 an-1 ……YY出来的,用暴力验原创 2013-08-09 12:52:56 · 813 阅读 · 0 评论 -
HDU 4661 Message Passing
题目题意:有n个人呈树状结构,每个人知道一个独特的消息。每次可以让一个人将他所知的所有消息告诉和他相邻的人。求所有人都知道所有消息花时花的步数最少的所有方案数。题解:首先最少步数一定是全部人的消息都单向传到某个人后,这个人再传回去给所有人,也就是每条边走且只走两次。如果所有消息单向传到某个人的方案数是K,那么他再传回去的方案数也是K。那现在只考虑单向传递时的方案:对于一原创 2013-08-09 13:05:27 · 1093 阅读 · 0 评论 -
URAL 1698||UVA 12009 解题报告
题意:找出平方后的尾数还是本身的n位数有几个解法:高精度打表,用java比较方便。做uva 12009的时候暴力打表找得到的结论是:符合要求的n位数为一个或者两个, 且后最后两个数的后m位都是符合要求的m位数。又有ural 1698的n的最大值为2000,所以不能暴力打表,要利用以上结论和一个YY的结论:如果之前的50个数都不能推出两个符合要求的n位数,符合要求的m位数只有一个原创 2013-05-18 22:17:36 · 1305 阅读 · 0 评论 -
FZU 1918 John’s Direction 解题报告
题意:给出一个点,和一堆边和坐标轴平行的多边形,问由这个点发出的射线不和多边形相交的角度之和。多边形是给出一个起点,然后通过向前走一定的距离和向左向右转90度得到的,且最后一个点是起点解法:用atan2计算出起点和多边形每条边的极角的大小,然后统计不重叠的角度的大小之和。所得的是会和多边形相交的角度,再用360减就可以。要注意的地方是,所得的交是小于180°的,如果用atan2计算出两角之原创 2013-05-24 00:13:36 · 938 阅读 · 0 评论 -
URAL 1699 Turning Turtles 解题报告
题意:给定一个w*h图,'#'可以走,'.'不可以走,且保证任意两个可达的'#'之间有且只有一条路,给出q个询问(x1, y1, x2, y2),问位于(x1, y1)的'#'要到(x2, y2)的'#'要转过几个弯思路:有题易知,图可以看成一棵一棵的树,问题就可以变成求树上两点间距离,很容易求出点(x1, y1)到其树根节点(x0, y0)需要转几个弯,现在要考虑的问题是:已知两点到根的“距原创 2013-05-24 00:50:28 · 1240 阅读 · 0 评论 -
HDU 4565 So Easy! 解题报告
题目比赛题意:给出a,b,n,m,求的Sn。思路:留意数据范围(a-1)^2√b)^n+(a-√b)^n的和为整数,而0(a-√b)^n(a+√b)^n+(a-√b)^n]%m, 已知Sn的通项公式了,如果我们能求出它的递推公式,就能用矩阵乘法解决了。 易知特征根为r1=a+√b,r2=a-√b,所以特征方程为r^2-(r1+r2)r+r原创 2013-07-06 11:47:32 · 1395 阅读 · 1 评论 -
URAL 1382 Game with Cards 解题报告
题目比赛题意:有N张牌,N个人,每个人会说两句话,"我拿着牌a"和"b拿着牌c",这两句话中有且只有一句话是对的。求每个人说的话中哪一句话是对的,题目保证一定有解思路:2-sat,对于第i个人,有第一句是对的I1,第二句话是对的I2两种互斥的状态,可以把I1看成"i拿着牌a",则当两句话中人相同牌不同时,或者人不同牌相同时,这两句话产生冲突,然后就套用2-sat输出解的模板原创 2013-07-07 17:10:07 · 1166 阅读 · 0 评论 -
UVA 12013 Entertainment 解题报告
题目5.1 training 1题意:网球比赛:一场比赛由5场轮换发球的sets组成,五局三胜制。一场set由轮换发球的games组成,至少得6分且领先对方4分获胜。一场game由同一个人发球的scores组成,至少得4分且领先对方2分获胜。已知一个人自己发球和对方发球时赢得一个score的概率,且一开始由他先发球,求赢得比赛的概率。题解:比赛的时候想来想去原创 2013-07-20 12:12:38 · 1194 阅读 · 0 评论 -
HDU 4604 Deque 解题报告
题目题意:按序给你一些数,每个数你可以加入双端队列(初始为空),且任何时候都可以弹出元素。求最后能保留在双端队列中的最长不下降子序列长度。题解:以 4 5 6 4 2 1 为例:首先从右至左做最长不下降子序列,设为A序列,这些序列可以每次加到队首。其次从左至右做最长不上升子序列,设为B序列,这些序列可以每次加到队尾。那么A和B各选一个序列拼成答案,由于一个从队首进一个原创 2013-07-23 19:32:29 · 1510 阅读 · 2 评论 -
HDU 4605 Magic Ball Game 解题报告
题目:一棵n个节点的二叉树,每个非叶子节点都有左右儿子,每个节点都有一个权值w[u],从根丢一个值X的球,沿着树链往下走:如果w[u]=X或者到了叶子,球就停下来如果w[u]如果w[u]>X,球有1/2的概率往左边走,有1/2的概率往右边走询问(v,x),当X=x时,有多少概率经过点v。解法:问题抽象成,求树根到点v的链上,有多少个点权值比x大,且往左孩子走(×1/2)原创 2013-07-24 13:40:29 · 1615 阅读 · 1 评论 -
HDU 4614 Vases and Flowers 解题报告
题目题意:一开始有标号为0~N-1的N个空花瓶,进行两种操作操作1:A F,从标号为A的花瓶开始往后面放F朵花,如果当前花瓶有花了,就继续往后放,如果有花没有地方放了就丢掉。输出第一朵花和最后一朵花放的花瓶标号操作2:A B,将花瓶A~B全部清空,并输出多少个花瓶被清空。解法:利用线段树的区间更新区间查询,线段树存储区间内有多少不为空的花瓶对于操作1,先在[A,N-1]二分原创 2013-07-25 19:45:33 · 1231 阅读 · 0 评论 -
HDU 4606 Occupy Cities 解题报告
题目题意:有n个城市,m个边界线,p名士兵。现在士兵要按一定顺序攻占城市,但从一个城市到另一个城市的过程中不能穿过边界线。士兵有一个容量为K的背包装粮食,士兵到达一个城市可以选择攻占城市或者只是路过,如果攻占城市,就能装满背包。从城市到城市消耗的粮食等于两城市的距离,如果距离大于士兵当前的背包的容量,士兵就不能走这条路。士兵可以选择空降一次,空降不耗费。求p个士兵攻占完所有城市所需要的最小原创 2013-07-25 20:32:58 · 1153 阅读 · 0 评论 -
HDU 4609 3-idiots 解题报告
题目2013 多校训练 第一场题意:有10^5条边,任选三条能组成三角形的概率?题解:因为边很多,所以要用FFT。将边长变换后,对应元素自乘,再逆变换,就可以得到所有两条边和的方案数。但是由于同一条边可能选两次,所以要去掉这种情况。用一个pre[i]来记两条边和大于i的方案数,枚举三角形的最长边,那么另外两条边的和必须比它大,但是这样算出来的方案数还包括了最长边也在原创 2013-07-26 19:23:05 · 1065 阅读 · 0 评论