ZOJ 2592 Think Positive ——(xjbg)
摘要:做法是,先求出前缀和pre。然后枚举端点i,[i+1,n]中pre最小的找出来,减去pre[i-1]大于0,这是第一个条件;第二个条件是,从i开始的后缀和和i之前的最小的一个pre相加大于0。只要满足这两个条件那么这个端点就是可行的。显然找这两个区间的最值都是可以用数组线性维护的,因此总体复杂度是O
阅读全文
POJ 3342 Party at Hali-Bula ——(树型DP)
摘要:一开始用pii保存dp类型,写的很长,还是WA了= =。。 然后参考了一下别人的博客,重新写了一发(似乎是岐哥的博客233)。 代码如下: 想说明的一点是,博客里面的判断是否有多种可能的if条件应当是dp[i][0] >= dp[i][1],虽然两者都能AC,但是我觉得这样更加妥当一些。
阅读全文
POJ 2486 Apple Tree ——(树型DP)
摘要:题意是给出一棵树,每个点都有一个权值,从1开始,最多走k步,问能够经过的所有的点的权值和最大是多少(每个点的权值只能被累加一次)。 考虑到一个点可以经过多次,设dp状态为dp[i][j][k],i表示当前从i出发,j表示最多走j步,k=0的话表示最后回到i点,否则不回到i点的子问题的答案。 转移见代
阅读全文
Egyptian Collegiate Programming Contest (ECPC 2015)
摘要:题目链接:https://vjudge.net/contest/155219#overview。 A题,用全排列来找出比当前这个数字字典序还大的排列有几个,然后前缀和dp即可。据说可以康拓展开来快速找出前面需要实现的要求。 B题,水题。 C题,感觉数据比较水。做法是dsu+lca,但是为了实现lca
阅读全文
2015 ACM Arabella Collegiate Programming Contest
摘要:题目链接:https://vjudge.net/contest/154238#overview。 ABCDE都是水题。 F题,一开始分类讨论,结果似乎写挫了,WA了一发。果断换并查集上,A了。 G题,状态压缩DP,不难写,但是时限有点紧,读入也比较恶心。。值得注意的是计算一个数二进制下有几个1可以用
阅读全文
2015-2016 ACM ICPC Baltic Selection Contest
摘要:这是上礼拜三的训练赛,以前做过一次,这次仅剩B题没补。题目链接:https://vjudge.net/contest/153192#overview。 A题,水题。 C题,树形DP,其实是一个贪心问题,比如要取max的话,从根往下的肯定是要依次放max门,因此取一条能够获得最大值的一路放下max门即
阅读全文
UVALive 4254 Processor ——(二分+优先队列处理)
摘要:题目是求最小化最大值,很显然是二分,但是二分以后怎么判断mid是否可行并不容易。 代码参考了网上一个博客的代码。巧妙之处在于一秒一秒的考虑,这样可以把处理速度mid直接转化成1秒内实际的量来解决(避免小数问题),然后贪心考虑每次处理最早结束的工作即可。注意我这里的代码t表示的是一整秒,譬如[1,2]
阅读全文
HDU 2243 考研路茫茫――单词情结 ——(AC自动机+矩阵快速幂)
摘要:和前几天做的AC自动机类似。 思路简单但是代码200余行。。 假设solve_sub(i)表示长度为i的不含危险单词的总数。 最终答案为用总数(26^1+26^2+...+26^n)减去(solve_sub(1)+solve_sub(2)+...+solve_sub(n))。前者构造f[i]=f[i
阅读全文
Zhejiang Provincial Collegiate Programming Contest + ZOJ Monthly
摘要:题目链接:https://vjudge.net/contest/152802#overview。 前五题以前做过了。不过还是没能全A= =。 前三题水题,略过。 第四题是找规律,暴力打表找一下循环节即可。 第五题是贪心,记得上次搞这题时就没搞出来= =。其实很简单,只是需要注意一下小细节。 第六题求
阅读全文
POJ 2778 DNA Sequence —— (AC自动机+矩阵快速幂)
摘要:距离上次做AC自动机有很久了=。=,以前这题的思路死活看不懂,现在还是觉得很好理解的。 思路参见:http://blog.csdn.net/morgan_xww/article/details/7834801#。 我用cnt=1表示这个节点是危险的,然后再匹配fail指针的时候,如果一个节点的前缀是
阅读全文
2015 Syrian Private Universities Collegiate Programming Contest
摘要:题目链接:https://vjudge.net/contest/152219#overview。 水题较多。就贴一下当时没做出来的几题好了。 D,方法很简单,当时没想出来。用pos[x]表示x这个数已经是递增序列的第几个了,那么每次输入一个数x,令pos[x] = pos[x-1] + 1并更新答案
阅读全文