
codeforces & bestcoder
alpc_wt
a star in the making
展开
-
hdu5179 beautiful number
hdu5179 beautiful number原创 2015-03-03 15:43:09 · 1254 阅读 · 0 评论 -
51NOD算法马拉松 最大值问题 离线预处理+set lower_bound
题目:http://www.51nod.com/contest/problem.html#!problemId=1349题意:100000个数的序列,有100000次询问,每次问区间最大值大于等于k的区间有多少?思路:一开始没看到“大于等于”,想了很久也不会,原来看错题了。看错题害死人。一般询问的问题,如果不能用线段树log(n)求出,那么就离线做。首先将询问按从大到小排序原创 2015-07-05 11:08:08 · 1516 阅读 · 0 评论 -
cf451E Devu and Flowers 卢卡斯定理+容斥定理
题目:http://codeforces.com/problemset/problem/451/E题意:有n个盒子(n组合数学问题,求C(n,m).但n,m过大时,可用卢卡斯定理.卢卡斯定理:C(n,m) %p = C(n/p,m/p) * C(n%p,m%p)从n个盒子中取出s个球的方案数,相当于插板,即 C(s+n-1,n-1).注意这是没有限制条件的情况。原创 2015-07-03 16:08:39 · 1762 阅读 · 0 评论 -
hdu5274 Dylans loves tree LCA+线段树
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5274 在树上的询问和操作,每次修改单点值,询问两点之间出现次数为奇数的点权是什么,若没有输出-1.询问保证两点间至多只有一个数出现奇数次。 有一种经典的将树上的点转化成序列的方法,我们用dfs遍历这棵树,那么对于一个节点,他一点比他的子树即子节点先访问到,且当他的最后一个子节点的所有子树也都原创 2015-07-02 23:39:44 · 733 阅读 · 0 评论 -
Codeforces Round #309 (Div. 1)D. Nudist Beach 二分+bfs
题目:http://codeforces.com/contest/553/problem/D 在一个无向图中,有若干坏点,选择一个不包含坏点的集合,使得集合中p值最小的点的p值最大。一个点的p值=集合中与该点相连的点的个数 / 与改点相连的总点数.原创 2015-06-28 19:39:16 · 942 阅读 · 0 评论 -
Looksery Cup 2015 H. Degenerate Matrix
又学会了二分的新用法,其实二分可以设置固定的二分次数作为跳出条件,当次数达到一定时,一定可以的到解,可以解决因精度而T的情况。向群神致敬。题目:http://codeforces.com/contest/549/problem/H代码:#include#include#include#include#include#include#include#include原创 2015-06-21 10:19:07 · 1107 阅读 · 0 评论 -
Codeforces Round #305 (Div. 2) E. Mike and Foam 容斥原理
在一个集合中,找和x互素的数有多少?用容斥定理,先把每个数质因数分解(每个数至多有6个质因子),奇减偶加,就统计到和x互素的数了。代码:#include#include#include#include#includeusing namespace std;const int N = 5*100000+10;const int maxn = 5*100000;int c原创 2015-05-28 23:41:50 · 1157 阅读 · 1 评论 -
Sabotage 二分
题目链接:http://www.usaco.org/index.php?page=viewproblem2&cpid=419题意:有1,000,000个整数,要求从第2个到n-1个之间,删去一段连续的数,使得剩余数的平均数最小。( 1题解:二分法,二分一个平均密度p,使原序列均减去p,求得2~n-1的最大连续和,可得到剩余数的和的正负值。若为正,则p小于mid;否则,p大于mid。代码原创 2015-05-20 20:11:08 · 575 阅读 · 0 评论 -
hdu5212 Code 莫队算法
这道题需要一些莫队算法的知识定义记号f(A,B)表示询问区间A,B时的答案用记号+表示集合的并利用莫队算法我们可以计算出任意f(A,A)的值不妨假设A=[l1,r1],B=[l2,r2],C=[r1+1,l2−1]容易知道f(A,B)=f(A+B+C,A+B+C)+f(C,C)−f(A+C,A+C)−f(C+B,C+B)因此一个询问被拆成四个可以用莫队算法做的询问总的时间复杂度为O(原创 2015-05-01 12:48:36 · 846 阅读 · 0 评论 -
hdu5195 DZY Loves Topological Sorting 线段树+拓扑排序
要求在一个DAG中删去不多于k条边,使得拓扑序的字典序最大。贪心策略:每次删去入度小于res的,序号尽量大的点的入边。需要用线段树维护区间最小值。代码:#include#include#include#include#include#include#includeusing namespace std;const int N = 400000 +10;const原创 2015-04-02 19:54:13 · 596 阅读 · 0 评论 -
hdu5191Building Blocks 模拟
题意:看完电影后,乐乐回家玩起了积木。他已经搭好了n堆积木,他想通过调整积木,使得其中有连续W堆积木具有相同的高度,同时他希望高度恰好为H。乐乐的积木都这了,也就是说不能添加新的积木,只能移动现有的积木。他可以把一个积木从一堆移动到另一堆或者新的一堆,但是不能移动到两堆之间。比如,一次移动之后,"3 2 3" 可以变成 "2 2 4" 或者 "3 2 2 1",但是不能变成"3 1 1原创 2015-03-22 14:11:59 · 645 阅读 · 0 评论 -
hdu5188 zhx and contest (DP+map)
有限制的 0/1背包#include#include#include#include#includeusing namespace std;const int N = 30+5;typedef long long ll;map dp[3];map::iterator it;struct node{ int l,t,v;}p[N];int cmp(node a,原创 2015-03-20 09:35:45 · 405 阅读 · 0 评论 -
Codeforces Round #260 (Div. 1) B. A Lot of Games Trie + 博弈
题意:两个人在Trie树上博弈k局,当前局输的人在下一局中执先手。在一局博弈中,当一个人不能走时,判定另一个人赢。最后一局的结果作为整个游戏的结果。分析:先手赢的情况为:(1)先手可必胜,也 可败。那么前k-1局败,最后一局胜利即可。(2)先手只能必胜。 当k为奇数时获胜。 后手赢的情况为:(1)先手必败。(2)先手只能必胜。 k为偶数。(本题的状态为取完当前节点的原创 2015-09-22 18:21:03 · 723 阅读 · 1 评论