- 博客(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
352
原创 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
390
原创 计蒜客上周赛的题 恶魔包毁灭世界
二分图建图+tarjan强联通#include#define Mem(a,b) memset(a,b,sizeof(a))#define N 10000using namespace std;vector G[10000];set ans[4000];struct edge { int v,next; edge() {}; edge(int _v,int _
2017-03-28 23:22:00
266
原创 二分答案加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
443
原创 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
301
原创 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
535
原创 HDU 4521
参考神犇的博客的题目刷下来吧线段树DP 最长上升子序列的扩展#include#define N 101000#define lson root<<1#define rson root<<1|1using 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
280
原创 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
212
原创 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
247
原创 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
212
原创 树链剖分 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
200
原创 树链剖分 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
281
原创 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
257
原创 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 100100using namespace std;int n,m,cnt;i
2017-03-07 18:00:47
354
原创 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 100100using namespace std;struct segtree {
2017-03-06 22:34:33
245
原创 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
423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人