摘要:
人生第一发splay,写得巨丑,最后忘记了push_down以后要将子节点maintain 9k代码不忍直视 1 #define NDEBUG 2 #include<cstdio> 3 #include<cassert> 4 #include<climits> 5 #include<cstdlib> 阅读全文
摘要:
这道题题解太多,只贴代码。 1 #include<cstdio> 2 #include<cmath> 3 #include<algorithm> 4 using namespace std ; 5 6 const int MAXN = 50 ; 7 double value [ MAXN ] [ M 阅读全文
摘要:
第一次写链剖,于是挑了个简单的裸题写。 以下几点要注意: 1.链剖中的height是从根到该店经过的轻边个数 2.分清num与sum。。。。。 #include<cstdio> #include<algorithm> using namespace std ; const int MAXN = 3 阅读全文
摘要:
一道裸的最小割的题,写一下只是练练手。 表示被卡M,RE不开心。一道裸题至于吗? 再次复习一下最大权闭合子图: 1.每一个点若为正权,与源点连一条容量为绝对值权值的边。否则连向汇点一条容量为绝对值权值的边 2.如果有选了A点才能选B点的约束条件,且违背这个约束条件有C的代价,则从A点向B点连一条容量 阅读全文
摘要:
好久没有写过KMP了,今天写个KMP练练手。此题就是枚举左端点暴力,用KMP做到O(n^2) 1 #include<cstdio> 2 #include<cstring> 3 using namespace std ; 4 5 const int MAXL = 15000 + 20 ; 6 7 ch 阅读全文
摘要:
1 #include<cstdio> 2 #include<cstdlib> 3 #include<algorithm> 4 #include<queue> 5 using namespace std ; 6 7 int d [ 100 ] [ 100 ] ; 8 int ha ( const in 阅读全文
摘要:
我们很容易知道要求的式为 由公式 化得 lucas定理求得 1 #include<cstdio> 2 using namespace std ; 3 4 const long long MOD = ( long long ) 1e6 + 3 ; 5 const long long MAXN = MO 阅读全文
摘要:
先表示:这道题为了减少思维复杂度,牺牲了时间我们一开始考虑线段树,维护一个矩形内四个角的联通情况4*(4-1)/2共6种合并两个矩形应该经过30秒思考可以想出来但是如果直接用的话随手被卡:因为矩形只有两层,我们枚举两点联通的每一种情况我们考虑如果两个点在同一侧:有:1.直接连接2.绕一个弯连接*23... 阅读全文
摘要:
今天终于写了一道正常的题 思路是这样的: 1.普通线段树add,set不变,并改为下放标记版本 2.past_addv 记录一个区间内可能的addv值的最大值 3.past_setv 记录一个区间被set的最大值 4.maxv与past_maxv为值 代码风格导致比较长 1 #include<cst 阅读全文
摘要:
这道题其实挺水,只是写的时候需要想清楚。我的方法是:1.将[a,b]转化为[0,b+1)-[0,a)2.预处理出非0的v在区间[0,10^p)出现次数以及0在区间[0,10^p)出现数3.将一个区间再拆分为几段,如:12345拆分为[0,10000),[10000,12000),[12000,123... 阅读全文