- 博客(16)
- 收藏
- 关注
原创 hihocoder 1342 二分
#include #define Mem(a,b) memset(a,b,sizeof(a)) #define eps 1e-6 #define ll long long #define l(x) (x<<1) #define r(x) (x>>1) #define lson root<<1 #define rson root<<1|1 #define Mid int mid=(l+r)>>1 #
2017-04-01 16:19:03
375
原创 hihocoder 1503 二分贪心
跟周赛的有道题目比较像 双线性指针在上面跑 对于二分到的mid值 枚举每个点 在可以差值的地方不断的插 直到达到上届mid #include #define FREI freopen("in.txt","r",stdin) #define FREO freopen("out.txt","w",stdout) #define inf 0x3f3f3f3f #define Mem(a,b)
2017-03-29 22:21:55
409
原创 计蒜客上周赛的题 恶魔包毁灭世界
二分图建图+tarjan强联通 #include #define Mem(a,b) memset(a,b,sizeof(a)) #define N 10000 using namespace std; vector G[10000]; set ans[4000]; struct edge { int v,next; edge() {}; edge(int _v,int _
2017-03-28 23:22:00
303
原创 二分答案加DP判断
题意:给定数列{an},任意改动其中至多k项,求相邻两项差的绝对值的最大值的最小值。 思路:二分答案(二分的区间可以优化),对于某一个二分值mid,采用DP检验其可行性。 设dp[i]表示考虑前i个数,且第i个数不变,至少需要改多少个才能使得答案不大于mid。 那么考虑下一个不变的数是a[j],则a[i+1]~a[j-1]这些数可以任意改变,前提是abs(a[i]-a[j]) 接下来枚举最
2017-03-27 22:28:21
479
原创 HDU 5726 区间GCD=k的个数
不知为何改了了ll就过了 感觉Int应该不会有问题才对 做了两道区间GCD的 也算有点收获#include #define N 101000 #define FREI freopen("in.txt","r",stdin) #define FREO freopen("out.txt","w",stdout) #define Mem(a,b) memset(a,b,sizeof(a)) #def
2017-03-18 09:31:12
323
原创 HDU 5869 区间不同GCD的个数
GCD的预处理 区间GCD的种类数肯定小于LogN(每次增一个数 产生新的GCD必定小于原来GCD的1/2或者不增加) 类似HDU 3333的插入修改离线法#include #define N 101000 #define FREI freopen("in.txt","r",stdin) #define FREO freopen("out.txt","w",stdout) #define M
2017-03-17 15:25:30
568
原创 HDU 4521
参考神犇的博客的题目刷下来吧 线段树DP 最长上升子序列的扩展#include #define N 101000 #define lson root<<1 #define rson root<<1|1 using namespace std; int dp[N<<2],n,d; struct mark{ int val,id; }; mark a[N]; bool cmp(mark a,
2017-03-16 21:32:53
311
原创 hihocoder 1158 二分图
转化为求最大独立集 #include #define Mem(a,b) memset(a,b,sizeof(a)) #define lson root<<1 #define rson root<<1|1 #define Mid int mid=(l+r)>>1 #define FREI freopen("in.txt","r",stdin) #define N 500100 #define ll
2017-03-13 22:41:10
235
原创 hihocoder 1329 splay 伸展树
#include #define N 101000 #define FREI freopen("in.txt","r",stdin) #define FREO freopen("out.txt","w",stdout) #define Mem(a,b) memset(a,b,sizeof(a)) #define lson root #define rson root #define
2017-03-11 23:05:47
275
原创 BZOJ 2243 树链剖分+线段树
#include #define N 101000 #define FREI freopen("in.txt","r",stdin) #define FREO freopen("out.txt","w",stdout) #define Mem(a,b) memset(a,b,sizeof(a)) #define lson root<<1 #define rson root<<1|1 #defin
2017-03-10 21:47:08
237
原创 树链剖分 SPOJ375 线段树的维护
参考ACdream的 用深度较深的点表示边 故build过程为(1,2,n) 关于修改的关系 注解里还有些待解决的和深入理解的地方#include #define N 10100 #define FREI freopen("in.txt","r",stdin) #define Mem(a,b) memset(a,b,sizeof(a)) #define lson root<<1 #defi
2017-03-09 22:03:14
224
原创 树链剖分 HDU 3966
树链剖分模板题 把链映射到线段树上 询问的过程中 在一条链上的询问才是有效的 所以有个change操作(不是随意的划分区间) 注意区间连续和离散的区#pragma comment(linker, "/STACK:1024000000,1024000000") #include #define N 50100 #define FREI freopen("in.txt","r",stdin) #
2017-03-09 14:13:36
310
原创 HDU 3333 线段树+离散化
只查询区间不同的数的和(思路好题) 对查询离线 不断的往每个位置插值 并把前面位置的值置为0 每查到一个右端点 查询一下 (等价操作的转换) 离散化一下#include #define Mem(a,b) memset(a,b,sizeof(a)) #define lson root<<1 #define rson root<<1|1 #define Mid int mid=(l+r)>>1
2017-03-08 18:51:44
282
原创 2-SAT入门(tarjan强连通分量)hihocoder 1467
本质 是否存在布尔表达式的结果为真 用图论的知识解决#include #define Mem(a,b) memset(a,b,sizeof(a)) #define lson root<<1 #define rson root<<1|1 #define Mid int mid=(l+r)>>1 #define N 100100 using namespace std; int n,m,cnt; i
2017-03-07 18:00:47
376
原创 ACdream 1101 线段树维护LCIS
线段树维护LCIS 主要是Merge操作#include #define Mem(a,b) memset(a,b,sizeof(a)) #define lson root<<1 #define rson root<<1|1 #define Mid int mid=(l+r)>>1 #define N 100100 using namespace std; struct segtree {
2017-03-06 22:34:33
265
原创 HDU 5942 (杭州赛)
看的题解 写了下 数论思维好题 附上题解 https://async.icpc-camp.org/d/621-2016 #include #include #include using namespace std; typedef long long ll; const ll mod=1e9+7; const int maxn=1e6+10; ll n,cnt=0;
2016-10-29 22:01:16
460
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅