摘要: 枚举1..n的每个数x,加上它对答案的贡献n/x即可。// BZOJ 1968#includeusing namespace std; int n, ans; int main(){ scanf("%d", &n); for(int i=1; i<=n; i++) ans+=n/i; ... 阅读全文
posted @ 2016-01-07 23:32 Armeria 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 比较裸的DP+斜率优化啦…… 让窝又想到了BZOJ上A的第一道有意义的题1597…… 作为第27个A的题也让我颇有感触……设前$i$个玩具放置到$j$个盒子里所需的最小费用为$f[i][j]$。由于连续的玩具必须放到一个容器里,所以我们有:$$f[i][j]=f[k][j-1]+cost[k+1][... 阅读全文
posted @ 2016-01-07 23:14 Armeria 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一张无向图,每次删去其中一个点,每删一次就输出当前连通块的数量。 首先要明确一点:删去一个点,同时也删去了和这个点有关联的边集。但无论如何,删点并不好搞,所以我们可以考虑倒着来,加点,用并查集维护。具体来说,每次加上一个点x,如果一个点是被第一次删去的(一个点可能被删去多次)(然而数据中并... 阅读全文
posted @ 2016-01-07 18:45 Armeria 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 本题的DP思路很好想:设f[i]为第i个怪兽被消灭所需要的最小代价,那么,f[i]=min{spl[i],ori[i]+∑j∈App[i]f[j]}然而,由于f[j]有可能也要依赖f[i],所以这个DP会带环。啊,那该怎么办呢?遇到这类问题,我们常常用SPFA来处理。怎么处理呢?我们需要更新过f[j... 阅读全文
posted @ 2016-01-06 22:20 Armeria 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题意:求∑ni=1gcd(i,n) 首先,gcd(i,n)肯定是n的约数。所以我们可以考虑枚举每个n的约数d,然后看有多少个gcd(i,n)=d。这个式子又可以化成gcd(i/d,n/d)=1。而它,就相当于ϕ(n/d)。所以,答案就是∑d|nϕ(n/d),其中ϕ(x)可以在O(x√)的时间内求出。... 阅读全文
posted @ 2016-01-06 00:12 Armeria 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 1009那题仍然记忆犹新…… 首先说一下1009的拓展:如果有多个串,则需要建立AC自动机,状态也需要改成:设f[i][j]为考虑到长度为i的字符串,匹配到AC自动机的j号节点的方案数,同样地道理构造出矩阵即可,只不过这里f[i][j]为0的条件变为j号节点是单词节点。 然后看这道题,它的要求是相反... 阅读全文
posted @ 2016-01-05 19:41 Armeria 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y)=k。 首先用容斥原理将一个询问拆成4个。然后,一种可行的转化是求一种可行的转化是先令k=1,即求1≤floor(x/k)≤n 且 1≤floor(y/k)≤m 的互质数对(x,y)的数量。然后我们... 阅读全文
posted @ 2016-01-05 19:24 Armeria 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 第一次用MarkDown和LaTex,写得有点丑……本题的坑爹历程给了我一个血的教训:没有真正搞清楚做法之前,不要瞎BB地写题解。不然会造成深陷坑中的严重后果。题意简述:给定一个字符串s,求出长度为n的不含字串s的字符串t的数量。这道题是一个非常经典的模型,DP之: 设f[i][j]为前i个t字符,... 阅读全文
posted @ 2016-01-03 23:05 Armeria 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 先看一个乱搞的题解(但是很有启发性...):首先是一个有趣的发现:当i增长很小时,k/i值是不变的!比如,在 i ∈[l, r]的时候,商不变,那么在这个区间内,k modi 的值将是一个公差为1的等差数列!所以,我们枚举商,统计答案就行了!好吧。。我们来一个严谨一点的方法。。题目要求的是 ans ... 阅读全文
posted @ 2015-12-29 22:10 Armeria 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 从这篇开始换字体。。数据范围很小。。直接暴力DP之即可。。感觉跟之前做的1597的DP很像,都是基于连续区间的DP,应该也可以用斜率优化。。还感觉跟某次CodeVS模拟赛的题的一道变态题(多面体原谅我。。)很像。。只不过那道题最后是二分图匹配。。题解详见代码注释。。我只想吐槽。。窝一遇到什么n m ... 阅读全文
posted @ 2015-12-29 22:10 Armeria 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 这道题有很多奇妙的方法可以搞。。最科学的当然是基尔霍夫矩阵(按照传统,“我也不知道是什么东西”),详见VFK教主的博客;还有乱七八糟的找规律,网上遍地都是。。我就把这题当作高精度练习题了。。(你为什么又抄黄学长模板!?。。// BZOJ 1002#include #include #include ... 阅读全文
posted @ 2015-12-29 00:10 Armeria 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 状态很不好。。容我再羞耻MAX一下。。sb题,然而一开始不加思考地写了紫书上的做法,然后华丽丽地T了。。当然核心都是用欧拉函数解决问题。题目要求的显然是满足(x, y)=1 (x#include #include using namespace std; #define rep(i,a,b) for... 阅读全文
posted @ 2015-12-28 23:12 Armeria 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 今天终于入手了期盼已久的Macbook Pro,十分高兴。。本题是树链剖分的模板题,下面对这种神奇的方法作个理解。。首先是动机:如果我们要维护树上的信息(点权或边权)并在线回答两点间的路径和或最大权,我们可以采用树链剖分的方法(如果只需要回答路径和,也可以通过欧拉序列+RMQ+LCA的方式实现)。—... 阅读全文
posted @ 2015-12-27 00:07 Armeria 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 一个写过的题还搞了半个多小时。。羞耻MAX。。求反素数的核心思想是“用大的(质数)不如用小的”。一个数的约数个数等于其各质因子的次数加1后的乘积,因此可以从小到大考虑每个质数,枚举其次数,DFS之即可。具体细节详见代码。// BZOJ 1053#include #include #include u... 阅读全文
posted @ 2015-12-24 19:40 Armeria 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 本题是我第一道A掉的NOI题~ 啪啪啪。。参考了tky的论文,他的题解很详尽易懂,下面对这个经典题目的经典解法作个推导和总结。第一个拦路虎是如何求出鼠和猫的位置为(a,b)时猫的下一步行动。我们设p[a][b]为猫位于a,鼠位于b时猫下一步走到的节点。由于这个图没有边权,所以这个p是可以通过n次BF... 阅读全文
posted @ 2015-12-23 00:33 Armeria 阅读(169) 评论(0) 推荐(0) 编辑