题目
文章平均质量分 72
getupdown
这个作者很懒,什么都没留下…
展开
-
HDU 2766
一开始没有思路,后来看了看网上的,发现这个题的玄机就在于 如果一个磅砣给定了,那么这个天平两端总重量也就给定了(这个重量就是 当前磅砣重量于是就开出一个map change 来记录 如果总重量是 A,那么有几个可以固定下来,最后找出一个最大值,磅砣总数减去这个最大值就是答案了。虽然这个题说是二叉树,但其实根本不用dfs(网上好多用了的),我用一个stack来维护,碰到 [ 深度就加一,原创 2015-08-28 16:14:56 · 411 阅读 · 0 评论 -
51nod 1674 区间的价值 V2
题目链接:点击打开链接这个题很明显是要从位运算的角度去考虑的。考虑“与运算“ 和 ”或运算“ 的性质。与运算,是只要有一个0,那么就都是0或运算,是只要有一个1,那么就都是1考虑样例:3: 0114: 1005: 101假如现在扫描到了第三个数5,那么就是要求 (3 & 4& 5) * (3|4|5)按位扫描,最高位有2个连续的1,意味着最高位可以对答案贡原创 2017-04-20 14:51:18 · 234 阅读 · 0 评论 -
51nod 1524 可除图的最大团
题目链接:点击打开链接这个题如果往图论上不行,因为边太多了,所以我往数的角度想。如果能组成一个集合,那么这些数从小到大排,两两之间肯定有倍数关系。所以用dp[x]表示,到x为止,能组成的最大集合。用一个arr数组表示,这个数有没有在集合中出现。不会超时,因为每个状态只需要走一次,而且转移的同时会覆盖掉没覆盖的状态。用一下读入优化好一些。#include#include原创 2017-04-20 00:46:19 · 237 阅读 · 0 评论 -
51nod 1503 猪和回文 (dp + 优化好题)
题目链接:点击打开链接这道题是个dp计数问题,朴素的dp方程其实并不是很难dp[x1][y1][x2][y2]表示当从左上角走到x1,y1 从右下角走到x2,y2时的状态总数,然后根据上下左右,字符是否相等转移即可。但是这里的4维都是高达500的,首先这么大的DP数组肯定是开不下的,所以一定要优化。思考转移过程,因为这里要求是回文,所以我们肯定是从 两个相同字符长度 转移到 下一个原创 2017-04-20 00:16:09 · 411 阅读 · 0 评论 -
51nod 1478 括号序列的最长合法子段
题目:点击打开链接用一个栈,每次弹栈之后,读取弹栈之后,最高的那个下标,那个与当前坐标的差就是最长的序列。如果说是判断合法括号串,那么扫描一遍之后如果栈空就说明合法,对于括号子串也是如此,只不过是“部分空”,所以读取“弹栈之后,最高的那个下标”,当前下标与其做个差就是当前长度。一开始可以存一个"-1"修正一下。#include#include#include#include#i原创 2017-04-04 17:13:46 · 388 阅读 · 0 评论 -
51nod 1453抽彩球
题目:点击打开链接做法:“对于所有颜色为i (1的球,他的最后一个球总是在编号比他大的球拿完之前拿完”,也就意味着,i拿完的时候,不可以有它前面的球没拿完。假设现在拿完了第i种球,准备在其中插入第i+1种球(第i+1种球有t[i+1]个),就相当于,在这些球的最后一定要放一个i+1号球,设没放i+1号球的球数为cnt,cnt个球会产生cnt+1个空,问题就转换成了:在cnt+1个空中,原创 2017-04-03 22:24:23 · 377 阅读 · 0 评论 -
51nod 1712 区间求和
题目链接:点击打开链接解法:这个题首先考虑一个简单情况:对于区间[x,y],权值为多少。容易写出公式:F[x , y] = S[y] - S[x-1] - (sum[y]-sum[x-1])*(x-1)+sum[x-1]*(y-x+1)其中S[x]表示 从第一个元素到第x个元素的 所有有序二元组的和(题目中定义的),sum表示前缀和整理一下就是:F[x , y] = S原创 2017-04-02 15:23:37 · 250 阅读 · 0 评论 -
Prefixes and Suffixes - Codeforces432D(后缀数组)
给一个串,找到这样的子串:它既是这个母串的前缀,又是这个母串的后缀。统计这样的串的个数,长度和在母串中总共的出现次数。解法:首先把后缀数组排出来,找到代表母串的那个后缀的rank,这个rank设为st。有一个结论比较重要:“设有一个子串x满足这个条件(它既是母串前缀,又是母串后缀),设这个子串所表示 的后缀 的位置为r。则r上面就必定没有和这个后缀相等的串了。”原创 2017-03-24 22:06:41 · 490 阅读 · 0 评论 -
2016ICPC青岛网络赛 1006
欧拉回路/欧拉通路。如果不是欧拉回路,欧拉通路,或者 点数大于1的 连通分支数 大于1 直接impossible。如果是欧拉回路:每个点都可以作为起点,除了终点多算了一次进入外,对于这些点来说,每个点进出次数都是成对的,而这个对数就是序列中该点出现的次数。由于异或的性质:x^x=0 && 交换律 -> 出现次数是偶数可以不统计,奇数的统计一次即可,所以对于所有点,求 该原创 2016-09-17 18:39:47 · 475 阅读 · 0 评论 -
UVA 1630 folding
题目大意:折叠一个字符串,使得其成为一个尽量短的字符串 例如AAAAAA变成6(A)而且这个折叠是可以嵌套的,例如 NEEEEERYESYESYESNEEEEERYESYESYES 会变成 2(N5(E)R3(YES))思路:首先是要找相同的字符串组,然后进行标记。就着上面的例子是, NEEEEERYESYESYESNEEEEERYESYESYES,变成 2个 NEEEEERYE原创 2015-11-01 01:30:17 · 1119 阅读 · 3 评论 -
Uva437 The Tower of Babylon
这个题就是麻烦,其实并不难。状态转移方程: dp[ depth ][ n ][ c ]=max(dp[ depth ][ n ][ c ], dp[depth-1] [ n' ][ c' ])放在第depth层,用的第n块,以其中第c种摆放方式(就是决定了哪个是高)的最大高度。 #include#include#include#include#include#include原创 2015-10-01 21:50:39 · 311 阅读 · 0 评论 -
UVA 11491
有个N位数,删掉D位,使得剩下来的数字数值最大。反过来想,把这个数列拼成N-D位数。由于数的大小,越高位越大越好,所以这个题是个典型的贪心算法。比如这个例子 69852 要留下个三位数。因为5 和 2 不可能成为最高位,所以这两位不用遍历。然后从头开始遍历,发现9最大。下次就从8开始遍历,发现2不可能成为第二位,以此类推。最后得出结果985。一开始卡了TLE,后来原创 2015-09-03 22:30:00 · 371 阅读 · 0 评论 -
51nod 1461 稳定桌
这个题直接考虑:每种长度的桌脚,分别作为最长的桌脚的情况。根据这个枚举。对于最长桌脚x,所以大于x的长度肯定必须要砍掉。对于小于x的桌脚,尽量多地保留x(尽量少地砍x),其实就是不砍。然后看CF上的原题比这个简单,主要是因为CF上那个,桌角的长度只有200以内,所以可以开桶。但是51nod这个题长度有100000,所以不能扫描桶了。所以这里我使用一个Treap 每次算出前k原创 2017-04-26 15:23:01 · 325 阅读 · 0 评论