XJBG
文章平均质量分 60
Drenight
Dream in the night.
展开
-
822C Hacker, pack your bags!
对我来说非常有启发的一条题目 机票具有往返两个时间点,做不交叉匹配的时候可以把一张机票一分为二, 每张机票按照时间点构造成两个事件, 对总的事件做排序就可以很轻松的做到无交叉匹配 bestCost[i]意思是时长i天的机票最少的花费,由于枚举时间点的缘故必定可行 代码: #include using namespace std; #define ll long long c原创 2017-07-03 16:32:55 · 291 阅读 · 0 评论 -
BZOJ1067 [SCOI2007]降雨量 模拟/线段树/map经验书
从知道x,y能是没出现过的我就知道GG了 学到了max_element以及map的一些坑 map的lower_bound熟练度++ #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll原创 2017-11-15 23:57:03 · 246 阅读 · 0 评论 -
2017南宁现场赛E 存档
现场时间不够,没加记忆化T了,滚cu 当时还写错了mx1,mx2的关系。。。 出场喜闻乐见有人加记忆化传参递归过。。 这份代码未必是正解,等到放上hdu交上去试试吧。。 #include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #inc原创 2017-11-28 21:54:20 · 273 阅读 · 0 评论 -
894D - Ralph And His Tour in Binary Country 完全二叉树点对计数
打完模拟被xz忽悠去码,粗略听了一波题解之后开始搞 总体感觉自己码力确实有进步了。。起码遇到啥问题了会找地方改,改啥肯定能出想要的效果。。 好像别人的代码都很短啊?我感觉自己这版写的逻辑挺清楚的。。就是长了点。。 一点一点实现自己脑内搭建的逻辑还是挺愉快的。。 //#include //#pragma comment(linker, "/STACK:1024000000,10240原创 2017-11-22 03:28:28 · 223 阅读 · 0 评论 -
BZOJ1015: [JSOI2008]星球大战starwar
要求支持图上的动态删点&&维护联通块个数 似乎这个要求4e5个点不太可做。。 正解是离线下来之后倒序用并查集加点 。。。长见识了 #include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #inc原创 2017-11-22 23:29:57 · 239 阅读 · 0 评论 -
Codeforces Round #446 (Div. 2) D
讨论版提供的一个思路,感觉挺好的 Yes, and it's easy to prove. Let's consider for convenience the permuted arrays a and b: a1a2a(N-1)aN ^ ^ ^ v a2a3aN >a1 If we take any subset that doesn't co原创 2017-11-18 03:33:11 · 172 阅读 · 0 评论 -
一些关于数学的小结论(updating)
组合数C(n,m)的奇偶性:(n&m)==m是奇数,否则偶数对于变量a,常量b,c,若a-(a%b)<c,则更小的a也满足此式计算n中二进制位1的个数int countBits(int n) { int count = 0; while(n != 0) { n = n & (n-1); count++; } re...原创 2017-08-28 17:24:19 · 286 阅读 · 0 评论 -
Genius ACM HihoCoder - 1384 倍增/归并排序模板
倍增可行长度和直接二分都可以保证对于每个左端点至多log次找到最远右端点 但是倍增的过程中所需要计算的长度是从小逐渐变大的,而且可以利用前一步倍增的有序数组做一轮归并, 整体就比直接二分右端点所需要计算的长度快一个log //#include //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #原创 2018-02-06 00:20:53 · 426 阅读 · 0 评论 -
Raid POJ - 3714 分治最近点对模板
复杂度大约是nloglog//#include<bits/stdc++.h> //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<algorithm> #include<queue> #include<st...原创 2018-02-11 17:59:30 · 280 阅读 · 0 评论 -
unique离散化用法
用法类似lower_bound,sort,不过下标从1开始的话和lower_bound减去的东西不一样 用来离散化很好用 pos就是在原数组a中的rank了,根据cnt建线段树啥的。。。 sort(a2+1, a2+1+n); cnt = unique(a2+1, a2+1+n) - (a2+1); FOR(n) { int pos = lower_bound(a2+原创 2017-11-13 15:41:21 · 569 阅读 · 0 评论 -
BZOJ1295 [SCOI2009]最长距离 智商
大体就是给一个01矩阵,1不可通行,可以破坏k[0,30]个1方格,问最长欧式距离 脑洞1小时没啥想法。。给正解跪。。居然是跑破坏方块的最短路,然后枚举点对更新答案,只要点对的最短路距离 naive! #include #include #include #include #include #include #include #include #include #include #inc原创 2017-11-11 21:58:33 · 160 阅读 · 0 评论 -
UVa1471 LIS变种 nlgn
//#include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define pb push_back const int maxn=2e5+9; int f[maxn];/原创 2017-07-13 16:36:20 · 159 阅读 · 0 评论 -
UVa1451 数形结合
//#include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define pb push_back const int maxn=2e5+9; char s[maxn];原创 2017-07-13 17:59:07 · 183 阅读 · 0 评论 -
Rikka with Candies HDU - 6085 多校#5 bitset优化01状态
#include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define pb push_back #define FOR(a) for(int i=1;i<=a;i++) c原创 2017-08-16 19:22:45 · 197 阅读 · 0 评论 -
XXFSDDX HDU6119 区间合并模板(交叉区间去重)
原来要这样写啊( #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define pb push_back #define FOR(a) for(int i=1;i原创 2017-08-13 20:43:22 · 528 阅读 · 0 评论 -
Havel_Hakimi定理模板 可图化判断
度数序列转图的判断算法,利用贪心的思想 #include #include #include #include #include #include #include using namespace std; #define ll long long const int maxn=1e6+7; const int inf=0x3f3f3f3f; #define FOR(n) for(int i=1原创 2017-09-14 18:52:10 · 227 阅读 · 0 评论 -
Codeforces Round #424 E. Cards Sorting 线段树/数据结构瞎搞/模拟
第一眼感觉是个水题 过程确实也无脑,但是细节麻烦。。。 就是循环找最小值,删除,算步数而已 不过转移位置的计算我试了好几种方法,才写出一个对的。。 提交时一度抱着求求你让我过吧这种心态( #include #include #include #include #include #include #include #include #include #include #include原创 2017-08-15 00:22:52 · 269 阅读 · 0 评论 -
The Next HDU - 5491 转二进制模板
存个板子~ ll tmp=d; int num_digit=0,cnt1=0,bri[35]; while(tmp){ if(tmp%2){ bri[num_digit++]=1; cnt1++; }else bri[num_digit++]=0; tmp/=2; }原创 2017-10-10 02:12:27 · 169 阅读 · 0 评论 -
BZOJ4017 小Q的无敌异或 好题
给一个序列 询问这个序列 1:所有子区间的异或值的和 2:所有子区间的和的异或值 第一个操作,拆二进制位,枚举右端点r,记录这个位前r个数字0/1的个数,右端点转移O(1) 第二个操作比较复杂,对于每个右端点要询问sum[r]-sum[l-1]mod(2^(k+1))>=2^k的左端点个数(的奇偶性) 题解用了树状数组维护,参考skywalkert,题解里对于模不等式的解释很巧妙,复习原创 2017-11-10 00:47:03 · 720 阅读 · 0 评论 -
NUMBER BASE CONVERSION POJ - 1220 进制转换/模拟除法
给a进制下的x,求x的b进制表示考虑20(10)→(3)20/3=6余2,那么3^0位记录2,接下来考虑用3^1位表示6整体像是一个递归,把原数字不断除以b,每一轮余下的数字作为这个深度的余数最深一层也就是除以b最多的一层是最高阶的余数,按阶从高向下写余数就是b进制的x表示//#include<bits/stdc++.h> //#pragma comment(linker, "/S...原创 2018-02-15 17:19:30 · 239 阅读 · 0 评论