codeproblem
文章平均质量分 74
johsnows
正在静下心来学算法的acmer
展开
-
poj 3096 Surprising Strings
题意:看题目示例领会Consider the string ZGBG. Its 0-pairs are ZG, GB, and BG. Since these three pairs are all different, ZGBG is 0-unique. Similarly, the 1-pairs of ZGBG are ZB and GG, and since these two p原创 2017-02-07 16:08:14 · 339 阅读 · 0 评论 -
poj 3007 Organize Your Train part II(map)
题意:给一个字符串s,将s在任意一位拆开成两个子串s1, s2,可将子串翻转,然后重新连接一起形成新的字符串,可以让s2在前,问最终能形成多少个不同的字符串。解题思路:枚举不同的拆分情况,然后用map,当然,这么耿直肯定是要超时的,但是我加了点优化,水过去了,嘻嘻。map比较慢,这题数据比较大,其实不如直接写查找树。代码:#include #include原创 2017-02-07 17:21:38 · 309 阅读 · 0 评论 -
uva 7219 Problem on Group Trip (优先队列)
题意:三种洗漱房s1,s2,s3,n个人,每个人按1到3的顺序排队等候洗漱,给出每人在这三个洗漱房需要多少时间洗漱,并且排队过程中,编号小的先洗漱,问需要多少时间所有人完成洗漱解题思路:用优先队列存储在3个房间的等候队列,如果洗漱玩了,就加入到下一个队列,注意如果两个相邻队列队首的人同时完成洗漱,那么应该先让编号大的那个队列队首的下一个人先开始洗漱,然后再让编号小的那个刚刚完成原创 2017-02-17 14:18:38 · 433 阅读 · 0 评论 -
poj 1703 Find them, Catch them(并查集)
题意:城市里有两帮犯罪团队,给你m条信息,D x y表示x和y不是同一帮,A x y是查询x和y的关系。解题思路:用带权并查集可以很好的解决这个问题,定义ran[i]为i与祖先节点的关系,0表示同帮,1表示不同帮。查询的时候如果两个点不在一棵树上,说明有节点的信息还没有给出过,那么不能确定两者之间关系,如果在同一棵树上而ran[x]==ran[y],那么说明他们是同帮,反之不同原创 2017-02-10 09:36:43 · 227 阅读 · 0 评论 -
poj 2492 A Bug's Life(并查集)
题意:有两种性别的bug,研究发现他们每个bug只和不同性别的人交流,给出一些bug之间交流记录,问这个研究是否正确解题思路:定义ran[i]记录i与祖先的关系,用带权并查集来存储bug之间的关系。如果交流记录里出现有两个bug在同一棵树上了,而且他们还是同一个性别,那么说明研究不正确,如果没有这样的两个bug,那么说明研究正确。代码:#include #in原创 2017-02-10 10:11:04 · 470 阅读 · 0 评论 -
codeforces 768 C Jon Snow and his Favourite Number(循环节)
题意:有一个长度n的数列,琼恩有一个喜爱的数x,琼恩每次去隔一个 数对数列里的数异或,请问k次操作后数列里最大的数和最小的数分别是什么解题思路:这种题一般来说操作后的数列是有循环节的,然后看到群里qc爸爸问有没有循环节不是2的例子的时候就更确定了。先去模拟下操作,然后每次操作出来的数列都去和之前得到的数列比较,看看是否有相同的数列,如果有就找到循环节了,只要让k对应到这个循环节原创 2017-02-21 09:53:30 · 1246 阅读 · 0 评论 -
codeforces 768 B Code For 1 (数学)
题意:一个集合里一开始只有n这个数,每次操作把集合里大于1的数分为,,,三个数,它们的位置在原位置,知道集合里所有的数都是0和1.现在循环l到r区间内有多少个1,保证r-l例如:解题思路:一开始用链表去模拟做,内存炸了.然后开始想去计算的办法.我们可以发现原创 2017-02-21 09:39:22 · 673 阅读 · 1 评论 -
POJ 1961 Period(KMP)
题意:在一段字符串的所有前缀中,找出有循环节的那些前缀,并分别求这些前缀的最大循环节数量。解题思路:用一下公式 循环节数=(i+1)/(i+1-next[i])(当(i+1)%(i+1-next[i])==0时)即可代码:#include #include using namespace std;const int maxn=1e6+5;char str原创 2017-02-13 14:43:05 · 589 阅读 · 0 评论 -
hdu6012(bestcoder 91) Lotus and Horticulture(离散化+前缀和)
题意:这几天Lotus对培养盆栽很感兴趣,于是她想搭建一个温室来满足她的研究欲望。Lotus将所有的nn株盆栽都放在新建的温室里,所以所有盆栽都处于完全相同的环境中。每一株盆栽都有一个最佳生长温度区间[l,r][l,r],在这个范围的温度下生长会生长得最好,但是不一定会提供最佳的研究价值(Lotus认为研究发育不良的盆栽也是很有研究价值的)。Lotus进行了若干次试验,发现若第ii原创 2017-01-23 19:50:34 · 470 阅读 · 0 评论 -
codeforces 755 d PolandBall and Polygon(找规律)
题意:给一个凸n边形,给定一个数字k,保证gcd(n,k)等于1,每隔k个点连一条线,问每连一条线凸多边形被划成多少块。思路:容易得出,每次画一条线,它所多划分出来的块数就是它穿过的线数加一,而它所穿过的线的数量就是这条线连接的两个点之间,已经有线连接的点的数量乘2.例如在2和4之间连 一条线,2和4之间3已经被连接了,所以2和4这条线穿过的线的数量就是1*2。但是原创 2017-01-16 13:19:18 · 736 阅读 · 1 评论 -
hdu 5945 Fxx and game(单调队列,dp)
题意:一开始你将会得到一个数\:XX,每次游戏将给定两个参数\:k,tk,t, 任意时刻你可以对你的数执行下面两个步骤之一:1.\:X = X - i(1 1.X=X−i(1=i=t)。2.\:2.若\:X\:X为\:k\:k的倍数,X = X / kX=X/k。现在Fxx想要你告诉他最少的运行步骤,使\:X\:X变成\:11。思路:从x变成1其实等同于从1变成原创 2017-01-15 10:33:22 · 389 阅读 · 0 评论 -
zoj 3780 Paint the Grid Again 11届浙江省赛 (拓扑排序)
题意:给定一块正方形区域,大小为n,现在你能对每一行每一列进行一次操作,你可以 把一行涂成黑色,或者把一列涂成白色,但是每行每列都只能操作一次。现在给你目标区域,X表示黑色,O表示白色,问经过怎样的操作可以让得到 这个目标区域。Rx表示把第x行涂成黑色,Cx表示把第x列涂成白色,按操作顺序输出,要求操作数最少,且字典序最小。如果不能得到输出No solution。思路:首先我们原创 2017-01-14 10:36:31 · 357 阅读 · 0 评论 -
poj 3071 Football (概率)
题意:给一个n,有1思路:这题难度在于cooding,思路比较好想。我的做法是定义一个b[i][j]的数组,表示第j个人进入到第i轮的概率转移方程为: b[i][j]=b[i-1][j]*(a[i][k]*b[i-1][k]+a[i][k+1]*b[i-1][k+1]......)(k,k+1,k+2...为所有本轮可能面临的选手,比较难处理),最后找到第n-1轮中概率最大原创 2016-11-30 21:36:50 · 308 阅读 · 0 评论 -
poj 2065 SETI(高斯消元求模线性方程组)
题意:给出一个方程f (k) = ∑0aiki (mod p) always evaluates to values 0 每个字母代表一个f[k], a代表1,b代表2,以此类推,*代表0.让你求出ai并输出。思路:方程已经给出,直接建立方程,只要建立方程的过程没有写错,套用下高消求模线性方程组的模板即可,与poj 2947如出一辙,我直接套用那题的高消了,然后就过了。原创 2016-11-29 12:38:29 · 468 阅读 · 0 评论 -
poj 1487 Single-Player Games(高斯消元+字符串处理)
题意:给你几棵树,每棵树的叶子节点都有一个值或者其它树的期望,问每棵树走到叶子节点获得的值的期望是多少。每棵树的编号是从a到a+n-1.思路:被这道题,卡了好几天,快卡哭了QAQ。首先麻烦的是字符串的处理,用递归是一种比较好的办法,先记录下同一个括号里所存在的元素个数,再往下递归就好。然后建立方程。记a树的期望为Ea,把有确定值的叶子节点的期望求出来加和为va,以及求出走到原创 2016-11-28 21:38:50 · 365 阅读 · 0 评论 -
codeforces 735 D Taxes(数学)
题意:给你一个数,可以将它拆成n个数加和(n大于等于1),求这几个数最大因子(不包括自己)加和的最小值。思路:给这道题跪了,没有想到用哥德巴赫猜想,就当做是学姿势吧。对于一个素数来说,它最大因子就是1,所以答案明显是1.对于合素,分奇数偶数两种情况,对于一个大于6的偶数,可以拆成两个素数的和,所以它的最小值就是2,然后奇数可以通过减去一个非偶质数得到一个偶数,所以答案是原创 2016-11-28 19:34:50 · 419 阅读 · 0 评论 -
hdu 3359 Kind of a Blur(高斯消元求浮点型解)
题意:模糊处理的图是将图中每个点的值改为距离本身曼哈顿距离d以内的点的平均值,先给你一个高为h,宽为w的模糊处理后的图让你还原为原图。思路:简单的高斯消元,只要对图中h*w个点找出曼哈顿距离d以内的点再列个方程,求高斯消元就行。没注意看题习惯性的把第一个输入的w当做行数了,跪了快十几发,改了就A,QAQ。代码:#include #include #i原创 2016-11-17 11:05:16 · 484 阅读 · 0 评论 -
codeforces 490C Hacking Cypher(大数逆向取模)
题意:给定一个长度为10^6的数n,问能不能把这个数分成两半,使它的前一半组成的数被整数a整除,后一半组成的数被整数b整除,a,b小于10^8,且要求分成的数不能有前导0.题解:字符串a记录大数n.大数取模的板子改进一下即可,用一个xzero[i]数组记录a[0]到a[i]组成的数对a取模是否为0.然后将大数取模逆过来写一遍,用一个yzero[i]数组记录a[len-1原创 2016-11-08 21:39:13 · 449 阅读 · 0 评论 -
2016 沈阳 1003 Recursive sequence(hdu 5950)矩阵快速幂
题意:给出f[1]=a;f[2]=b;f[n]=f[n-1]+2*f[n-2]+i*i*i*i;问f[n]对2147493647取模的值,n的范围到2的31次。思路:由于n的范围过大,必须要用矩阵快速幂求解。难点在于构造矩阵。一开始我的想法是把i的四次分别用(i-1)的四次、三次、二次、一次、零次表示,来构造矩阵,结果一直错,后来看了网上有人是把i+1的四次用i来表示来构造的矩原创 2016-10-31 16:55:13 · 441 阅读 · 0 评论 -
codefoces 724 c Ray Tracing (扩展欧几里德)
题意:给定一个矩形,长n宽m, 一束光从矩形的一个顶点发射,角度为45度,遇到墙壁则反射, 只有遇到顶点时被吸收, 给你k个光传感器,光传播的速度是根号二m/s,问经过多少时间,光经过这个传感器, 若不能经过,则输出-1。思路:将矩形对称展开,把所有反射当做穿过看待,容易想到光在横纵坐标都为maxnx= m*n/gcd(m,n)(m,n的最小公倍数) 处吸收,因为光总是沿着y原创 2016-10-11 09:02:08 · 468 阅读 · 0 评论 -
hdu 5898 odd-even number (数位dp)
题意:一个数中,每位上数连续是奇数的长度是偶数,每位上数连续是偶数的长度是奇数的数称为odd-even number, 问区间l到r之间的odd-even number数有多少个。l,r的范围为1到9e18.解题思路:数位dp,dp[pos][status][ismax],pos记录当前位置,ismax记录当前是否是边界值,status记录当前状态, 奇数长度为奇数为1原创 2016-10-06 15:32:42 · 407 阅读 · 0 评论 -
cf 721 d(优先队列+贪心)
题意:给一个数列,一种操作,操作是:给定X,可以对数列里的数加x或者减去x。给定数字k,允许操作k次,求经过k次操作后,使数列的乘积最小,输出操作后的数列。思路:看示例后发现这个题应该把最小的数尽量往小了减,直到出现负数,是最终结果值为负,然后去找绝对值最小的值,不管它们正负,去把绝对值加大。这样子想只想对了一部分,没有考虑一开始数列有可能就存在负数,使值为负,也有可能一开始有负数原创 2016-10-02 22:22:37 · 419 阅读 · 0 评论 -
POJ 1019 Number Sequence (瞎搞)
题意:一串序列从1思路:先求出每个小序列分别用多少个数,然后确定m在什么位置,减去之前区间的所有位置,在在这个小序列里找就好了,找的时候貌似利用(int)log10(double(i))+1 这个公式会很简单,我做完才发现的QAQ。代码:#include #include #include #include using namespace std;lo原创 2016-09-20 16:38:28 · 355 阅读 · 0 评论 -
poj1850 Code (瞎搞)
题意:编码题,一个由小写字母组成的英文字符串,严格按字典序升序组成,长度最大为10,然后所有的字符串按字典序排序,依次编号,如 a:1 ,ab:27, abc: 352, 给你一个字符串,让你求它的编号,如果不符合要求输出0. 这题归类是组合数学题,我照例先自己想了想怎么做,也没有去想组合数学的做法。思路:1.首先应该求出第几位是什么字母时,小于等于这个字母有多少字符串,即原创 2016-09-13 11:19:43 · 334 阅读 · 0 评论 -
POJ 1080 Human Gene Functions(dp)
题意:两个字符串(基因序列),进行分值匹配, 不同字母(基因)匹配有不同分值,可以选择字母与'-'匹配,也有一定分值,最终要求小的字符串在用'-'填充之后去大的字符串长度相等,求总匹配分值最大.思路:和最大公共子序列的问题类似,用dp[i][j]表示到字符q[i]和字符p[j]时当前最大分数,dp[i][j]时可以有三个选择,1.让p[i]和'-'匹配,继承dp[i原创 2016-08-25 19:20:33 · 311 阅读 · 0 评论 -
POJ 1837 Balance(二维dp)
题意:一个天平,给n个不同长度(g[i])方向的钩子,m个不同重量(w[i])砝码,问有多少钟方法在使用了所有砝码后使得天平平衡.思路:一开始想的 以为钩子也要全部用上,这样就比较简单了,不需要考虑每个钩子情况,统一求正负钩子比例就好,但是交上去错的,去网上看了下才知道其实不用使用全部的钩子.用二维数组来记录状态,dp[i][j]i表示当前以挂上第i个砝码,j表示当原创 2016-08-24 15:21:21 · 367 阅读 · 0 评论 -
POJ 3009 Curling 2.0(深度优先搜索+剪枝)
题意:给一个图,由障碍和空地组成,一块石头可以在上面往一个方向滑动,只能沿着x,y方向滑动,并且那个方向上第一个地方不能是障碍物,石头滑动直到碰到障碍停止,并且消掉障碍物,或者滑出边界,这时候算游戏失败,给出起点和终点,问石头能否在十步之内到达终点,能的话最小步数是多少.思路:题目很简单,只需要模拟dfs就可以,注意走过的点可以重新走,因为图是在变化的,建图的时候可以全原创 2016-08-22 11:37:31 · 489 阅读 · 0 评论 -
POJ 2513 Colored Sticks (排序+并查集判断欧拉路)
题意:给一堆棍子,棍子由头尾两个字符串组成,棍子两两相连的条件是相接的部分字符串必须相同,问能否将这些棍子组成一条直线.解题过程:这题其实并不需要用字典树处理,用排序统计度数一样.一开始我想到保证度数为奇数的点的数量小于2就行了,但这样明显不可以,点数为1时就不正确.另外最重要的一点,当度数为奇数的点数量为0或2时,可以保证每条边都会被遍历且只有一次,但是,这样的图有可原创 2016-08-22 10:13:09 · 474 阅读 · 0 评论 -
POJ 2152 Check the difficulty of problems(三维dp)
题意:在一次比赛中,有t只队伍参赛,总共有m道题目,现给出每支队伍解出每道题的概率,问满足以下两条件的概率为多少条件1:每支队伍至少解出一道题目.条件2:夺冠的队伍至少解出n道题目.思路:首先用p[i][j]记录第i只队伍解出第j道题的可能性.这个题目每个队伍是一个情况,每个队伍在到第j到题为止解出k道题又是一种状态.所以应该用一个三维dp数组来记录状态原创 2016-08-20 21:25:40 · 403 阅读 · 0 评论 -
POJ 2002 Squares (哈希表)
题意:在二维坐标上给一堆不重复的点,问能组成多少个正方形.解题思路:一开始的方法是记录每条边的距离,找出相同距离的边,然后想办法判断这两条边是不是一个正方形的对角线,用叉积相乘等于零以及中点相等两个点来判断,这样做答案正确,但是明显超时,总共有50W条边,每找到一组重复边再去判断两两之间是不是满足关系,复杂度最坏的情况相当于O(N^3),可怕...然后换了一原创 2016-08-19 15:25:01 · 389 阅读 · 0 评论 -
Labeling Balls poj 3687(拓扑排序反向建图)
题意是求一系列盒子,给出相同数量不同重量的球,再满足题目所给轻重关系下让编号小的盒子里的球的重量最轻.注意要反向建图,博主也不明白为什么..代码:#include #include #include #include #include #include using namespace std;int b[205][205];int c[205];int原创 2016-08-16 21:03:10 · 440 阅读 · 0 评论 -
2016多校第七场1010(hdu5818)
Joint StacksTime Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 57 Accepted Submission(s): 17Problem DescriptionA stack is a data原创 2016-08-09 17:38:43 · 601 阅读 · 0 评论 -
poj 1125 Stockbroker Grapevine (最短路求最长距离)
Stockbroker GrapevineTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 33855 Accepted: 18707DescriptionStockbrokers are known to overreact to rumours. You原创 2016-08-02 21:52:28 · 1344 阅读 · 0 评论 -
poj 1860 (弗洛伊德水过)
Currency ExchangeTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 26472 Accepted: 9784DescriptionSeveral currency exchange points are working in our city原创 2016-08-02 21:42:42 · 525 阅读 · 0 评论 -
Finding Nemo POJ 2049(bfs+dp思想)
Finding NemoTime Limit: 2000MS Memory Limit: 30000KTotal Submissions: 8804 Accepted: 2069DescriptionNemo(现场转播节目) is a naughty(顽皮的) boy. One day he went into t原创 2016-08-01 18:44:19 · 425 阅读 · 0 评论 -
poj 2632 Crashing Robots(模拟)
Crashing RobotsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9977 Accepted: 4243DescriptionIn a modernized warehouse, robots are used to fetch the g原创 2016-07-28 11:02:19 · 385 阅读 · 0 评论 -
poj 1936 All in All
All in AllTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 31754 Accepted: 13179DescriptionYou have devised a new encryption technique which encodes a原创 2016-07-27 23:42:38 · 342 阅读 · 0 评论 -
poj 1068 Parencodings
ParencodingsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 24776 Accepted: 14582DescriptionLet S = s1 s2...s2n be a well-formed string of parentheses原创 2016-07-27 23:33:55 · 415 阅读 · 0 评论 -
poj 2533 Longest Ordered Subsequence
Longest Ordered SubsequenceTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 46180 Accepted: 20509DescriptionA numeric sequence of ai is ordered if a1 a2原创 2016-07-27 23:31:15 · 366 阅读 · 0 评论 -
pat 城市救援 最短路
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="cpp"><span style="font-family: Arial, Helvetic原创 2016-07-01 17:16:55 · 960 阅读 · 0 评论