- 博客(89)
- 收藏
- 关注
原创 【Swift】拉格朗日插值法
这大概是我继Java、JavaScript、C++以后第四次写多项式计算先定义termstruct term { var coe: Double var exp: Double init(coe: Double, exp: Double) { self.coe = coe; self.exp = exp; } }用一个数组 [term...
2018-05-16 15:41:47
504
原创 Windows下搭建基于VScode+clang+MinGW的C++开发环境
这种奇怪的组合大概只有我这种写前端的mac用户才会用的吧……参考资料:https://www.zhihu.com/question/30315894 setting代码直接贴里面的就好了,这里只做搭建过程整理。首先我们要去下一个VScode:https://code.visualstudio.com/Download然后我们要去下一个LLVM/clang:http://releases.llvm....
2018-04-08 14:02:47
12741
原创 【二叉树】
烦死人的g++系列,root会自动初始化为野指针? #include #include #include #include #include #define EMPTY_ELE '#' class BinaryTree { public: struct Node { char val; Node* left; Node
2017-05-26 08:18:29
469
原创 【动态规划】Sicily1280 Permutation
http://soj.sysu.edu.cn/show_problem.php?pid=1280 dp[i][j]表示已经填了i个数,剩余有j个数比填好的第i个数小。 转移: dp[i + 1][k] += dp[i][j]; a[i] > a[i + 1] k: 0 to j - 1 a[i] 起始状态:dp[1][i] = 1 (i : 0 to
2016-11-15 13:19:17
1176
原创 【区间dp】hdu5396 Expression
http://acm.hdu.edu.cn/showproblem.php?pid=5396 现在有n个(≤100)数字和n-1个操作,操作只有”+ - *”三种,并且顺序是a1 op1 a2 op2 a3 ⋯ an。 然后小明每一次随便选两个相邻的数和他们中间的符号,然后计算答案并且把那两个数擦掉换成新的数字。 执行n-1次后会得到一个数字,现在请问对于所有可能的操作顺序最后得到的
2016-07-26 13:28:28
709
原创 【数位dp】hdu4389 X mod f(x)
http://acm.hdu.edu.cn/showproblem.php?pid=4389 简直有毒…… #include #include #include using namespace std; int read() { char c;int sign = 1, n = 0; c = getchar(); while(c > '9' || c < '0')
2016-07-25 22:36:06
709
原创 【See you】
遇见你 花光此生所有运气。 握紧彼此的手 我们却还是走散。 谢谢你带给我的这个世界。 记得小学英语老师说 See you 其实 一般是再也不见的意思。 那么 See you.
2015-12-19 21:46:37
979
原创 【记录】绵东实三校联考 验题记录
感觉已经快成御用验题小天使 = =。。 姜神出的题,然后cyx小朋友成功AK了 【T1】 排队 Waiting 这题和之前有一道NOIp题差不多。。做法也是一样的。。排个序就万事大吉了。 听说有人最后计算结果的时候少算了b,然后出了点儿事。。。 #include #include #include #define Mod 1000000009ll usi
2015-11-04 16:53:55
1397
原创 【倍增】【set】[NOIP2012] codevs1199 开车旅行
题目点这里 这题的复杂度基本就在预处理找在每个点A、B分别要开去哪上面了 = =倍增其实很水…… 用set维护高度。因为只能从前往后,所以从后往前插入,然后取其前两个和后两个用他们之间的距离排个序,距离最小的是B去的地方,第二小是A去的地方。 记A+B各开一次为一轮。然后令f[i][j]为从i出发,开了2^j轮去了哪。fa[i][j]、fb[i][j]分别表示从a、b出发走2^j轮后
2015-10-18 00:15:33
2472
原创 【树链剖分】【最大生成树】[NOIP2013]codevs3287 货车运输
题目点这里 嗯……我知道正解是LCA倍增……但是补这个题的时候第一反应就是树剖,于是我就愉快地写树剖了…… 用树剖的话复杂度会多一个log不过常数写的小点话几乎可以忽略不计。代码量比正解大那么1000k的样子……毕竟有个线段树还有两个dfs 先用kruskal建个最大生成森林出来,然后把每棵树剖分一下就行了。线段树可以用一个,因为互相不影响 #include #inclu
2015-09-27 11:05:59
1643
原创 【最短路】【bfs】[NOIP2013] codevs3290 华容道
记得这题暴力有70...十分良心,然而它卡A*……(好像A*的估值很忧伤) 本来YY出了很诡异的姿势。。然后发现很难写……想弃疗…… 最后还是按网上流传的方法做的..不过网上的代码都好繁琐啊 = =差评…… 太久没有写代码真的生疏了不少..代码能力掉的很厉害。所以啊很多东西很久不碰也许就会忘掉了 还好最后还是成功AC掉了,谢天谢地 注意:1.加边不能加双向,因为虚拟节点可能会捣乱
2015-09-26 22:49:01
1459
原创 【数论】[NOIP2014]bzoj3751 codevs3732 解方程
题目点这里 网上流行的解法是mod五个小素数,因为十个数据点嘛除非人品太好了不然一般都不会炸吧…… 然后之前vfk讲了万无一失的做法就是先用一个小素数筛,再用一个大素数筛,然后高精度带回去验证…… 本来打算把完整解法写完的不过没力气写高精度了……想当初我是现场写高精度的啊…… 选了一个颜值比较高的素数和UOJ素数然后就水过了…………那就这样吧………………作为一只高三党狗还是好好刷常
2015-09-20 10:43:12
944
原创 【你又何必】
还是这里好,没什么人知道,可以把碎碎念搞得假装是在学术 = = 从在这里写下第一篇blog到今天已经七个多月了,其实退役也都四个月了,真的在更新的也就三个月不到的时间 - - 但是还是能看到我的代码日益紧凑,黑语法越用越多 = = 卡常数的丧病技巧玩的越来越6 从最开始的线段树写不来、网络流写不来、斜率优化搞不起来,到后来双treap、cdq、各种诡异优化的dp都能分分钟码起来。 大部分写
2015-09-19 19:23:08
807
原创 【动态规划】[NOIP2014] codevs3729飞扬的小鸟
去年这题炸了,然后一年过去了,我又写炸了 人老了,写不动代码了…… 虽然复杂度是O(NM)没错,但是常数越写越大简直快要飞起来了 = = 其实感觉可以开个辅助数组会降不少常数…… 题目点这里 dp[i][j]表示到达(i, j)这个位置需要的最小点击次数 三个转移: 向上点击不到顶:step[i][j] = min(step[i][j], step[i - 1][j
2015-09-12 22:20:28
1202
原创 【扫描线】【线段树】UVa11983 Weird Advertisement
各种暴力 #include #include #include #include using namespace std; const int Lmax = 60005; struct Line { int x, down, up; int cover; bool operator < (const Line &b) const { return x
2015-07-27 12:57:56
841
原创 【线段树】spoj GSS2 Can you answer these queries II
写了三个小时的线段树也是醉了 = = PushDown手贱了一下于是一直23333 #include #include #include #include #include using namespace std; const int maxN = 100005; #define lc (u << 1) #define rc (u << 1 | 1) namespace
2015-07-27 12:53:28
1002
原创 【Treap】poj1442 Black Box
七月了。NOI也结束了。 题目点这里 题意:有个黑箱子。有两个数组A[1...N] Q[1...M] 其中A数组表示依次往黑箱子里加入A[i]这个数 Q[i]表示在加入了A[Q[i]]以后查询箱子里第i大的数 正解大概不是treap。。不过也就80行。。。 #include #include #include using namespace std; co
2015-07-21 20:18:57
1105
原创 【参考代码】mz线段树基本操作训练
QAQ为什么高一小朋友们的题都这么难。。 代码仅供参考,禁止照抄哦 = v = 说明一下:read()函数是读入优化,你们直接写scanf就行了。namespace只是为了封装,可以不要。 然后我线段树的姿势可能和你们老师讲的不太一样,个人觉得这样写起来简洁一些,而且效率高。 Promble A 原题是hdu1166。简单的点修改和区间查询。因为太水了我就写的树状数组 =
2015-05-06 17:04:34
912
原创 【半平面交】poj2540 Hotter Colder
写了三天的半平面交总觉得自己姿势有问题。。 #include #include #include #include #define eps 1e-8 using namespace std; struct Point { double x, y; Point(double _x = 0. , double _y = 0. ) : x(_x), y(
2015-04-16 22:56:46
706
原创 【并查集分块】Codeforces 475D CGCDSSQ
题目点这里 bin神说这题和他当年出的一道题差不多TAT 听了半天终于听懂了TAT。。。 利用gcd的递减性 从左往右把一段的gcd和最新的数相同的的放到一个并查集里去。。 可以证明段数是不会增加的 = = #include #include #include using namespace std; const int Nmax = 1e5 + 5; int
2015-04-16 22:41:12
946
原创 【线段树】Codeforces 437B The Child and Set
题目点这里 vfk大大讲过的 = = 记录一个最大值然后暴力搞就行了。。。 最开始WA了一次是因为Modify没更改最大值。。 #include #include #include using namespace std; const int Nmax = 1e5 + 5; int N, M; int a[Nmax]; #define lc (u << 1) #
2015-04-16 22:38:39
685
原创 【树形dp】Codeforces 238C World Eater Brothers
题目点这里 嗯。。。其实就直接dfs就可以了。。。 就是先枚举一条边砍掉 = = 然后呢先计算 u 和 v 的答案。。 然后再dfs一遍修正答案。。。。。 #include #include using namespace std; const int Nmax = 3e3 + 5; int N; struct ed{ int u, v, w, next
2015-04-16 22:33:03
915
原创 【贪心】Codeforces 353E Antichain
题目点这里 窝也不知道这叫不叫贪心 = = 窝想说这题看题面是裸的二分图匹配 Hungray敲上去。。 然后您就TLE了。。。。 实际上这题是有线性算法的。。因为它是个环。。 那么就只能是 → ← → ← 这样的情况才行 = = 那么连续的一段→ → →就可以直接合并了。。。 然后直接计算! #include #include #include u
2015-04-16 22:26:38
921
原创 【二分图匹配】Codeforces 387D George and Interesting Graph
不想写模板了来水几篇题解。。。 题目点这里 最开始窝写的贪心。。然后就WA了。。 = = 正解是二分图匹配。。。 首先枚举中心点。。然后用需要添加的边加上需要删除的边求个最小值就是答案了。。。 设与Center相关的边数为A 需要添加的边 = (2 * N -1 - A) + (N - 1 - match) 需要删除的边 = (M - A) - match
2015-04-16 22:17:26
693
原创 【省选模板】
【数学】 - 快速幂/快速乘 int Pow(int a, int b, int Mod) { int temp = 1, cmp = a; while (b) { if (b & 1) temp = temp * cmp % Mod; b >>= 1; cmp = cmp * cmp % Mod; } ret
2015-04-15 19:59:03
664
原创 【线段树】line
。。水题。。。 #include #include using namespace std; int read() { int n = 0, sign = 1; char c = getchar(); while(c '9') {if(c == '-') sign = -1; c = getchar(); } while(c >= '0' && c <= '9') { n
2015-04-10 18:45:34
520
原创 【AC自动机】西征罗马之路
水题再没有爱了。。。 #include #include #include using namespace std; int read() { int n = 0, sign = 1; char c = getchar(); while(c '9') {if(c == '-') sign = -1; c = getchar(); } while(c >= '0'
2015-04-10 18:43:13
819
原创 【计数】tower
看了题解完全觉得是sb题。。。那么 = =作为一个sb题都做不来的。。。 设dp[i] 为前i 个的方案数,那么枚举所有能在上面放i 的积木j,就会对答案带来dp[i - 1]的贡献。 #include #include #include using namespace std; int read() { int n = 0, sign = 1; char c = ge
2015-04-10 18:36:56
564
原创 【区间dp】括号序列再战猪猪侠
ydc的题解是只需要两维状态 = = 可是。。。可是我必须写三维才能AC TAT all表示区间[L, R]是(A) 还是 AB。。 为了O(1)判断处理一个二维数组的前缀和。。 还有这个鬼要特判 u == v的情况 #include #include #include using namespace std; int read() { int n = 0, sign = 1
2015-04-10 18:27:53
792
原创 【双Treap】[Scoi2014] bzoj3595 方伯伯的Oj
题目点这里 原来的题解点这里 。。Treap+Map写的。。。 。。然后听说scoi的评测鸡很傲娇。。。。当场是卡了map的。。。。 所以我就重新写了双Treap。。。一个维护编号一个维护排名。。。。。。 叫bzoj比map慢了几十ms = =因为有-O2? rank3是的评测结果 rank4和rank5目测都是直接交的我的代码吧 = =|||| 然后rank6就是这份代
2015-04-10 12:07:46
1475
原创 【主席树】poj2104 K-th Number && poj2761 Feed the dogs
这两道题。。似乎是一样的。。。 = = (我才不会说其实最开始是想交2104结果交城2761结果还Accept了。。。) 就是个主席树模板题。。静态区间第k大。。 其实用整体二分写的话更方便的。。不过无所谓了。。。反正学学高端的CMT嘛…… 其实思路和整体二分也差不多的啊QAQ 离散化一下然后用权值建线段树。。 就是从前往后依次把树加入线段树 每次加入的时候新建这条链上的节点。
2015-04-09 18:51:42
658
原创 【好饿】 = =
真的很饿可是不想起床。。。 一下午居然又过去了。。 写了一半的数位dp没力气写下去了 要从床上爬起来洗澡然后下去买东西吃。。。想想就好累啊。。 再有三天就回四川了。。。。 依旧像之前那样。。每次都以为一个月时间自己能提高很多呢。。。 其实想想感觉过来以后基本没学什么。。。 好久没写平衡树了。。。还有费用流什么的。。。 考了这么多次试写的最多的还是dfs。。。。 每天最多交一题
2015-04-08 18:48:40
1508
原创 【动态规划】【双调TSP与MTSP问题】 hdu2224 & hdu4281
一个月前写的了。。。。 首先双调TSP:hdu2224 给出平面上的N个点(1~N) 从 1 号点出发走到最右端的点 N 再返回 1 要求中途不能重复走某个点而且必须把所有点全走一遍 求最小的总路径 这个东西不是NPC 算导上有介绍O(N ^ 2)的算法。 dp[ i ][ j ]来表示从 1 到 i 以及从 1 到 j 的最小总路径 (i 转移: ①当 i ②
2015-04-08 18:26:20
1970
原创 【差分约束】[SCOI2011] bzoj2330 糖果
题目点这里 lxhgww的水题 。。 = =像我这种现在只会写水题的人。。。 在求一个点的最长路时: dis[u] + e[i].w dis[v] - dis[u] >= e[i].w 那么这里把没个小朋友看做一个点然后根据不等式求每个点的最长路就好了 没写特判自环就4000多ms也是醉了。。。反正特别这种东西谁爱写谁写吧 = = #include "
2015-04-08 16:23:54
530
原创 【整体二分】[ZJOI 2013] bzoj3110 K大数查询
题目点这里 树套树题解点这里 调完这个。。一晚上居然就又过去了。。。TAT 先说下效率 我的树套树是283136 kb 7556 ms(永久化标记的)分治是3148 kb 1296 ms _(:з)∠)_代码长度的话。。两个都差不多T_____T 思路: 整体二分这玩意。。和cdq分治挺像的样子。。 从我的理解来说。。。cdq分治是用[l, mid]更新[mid
2015-04-06 21:54:49
4649
3
原创 【cdq分治】[Noi2007] bzoj1492 货币兑换Cash
题目点这里 嗯。。倒腾了这么久终于折腾出来了。。 对cdq有一点感觉了T_T当然。。还是很多不懂 = = 在雅礼写cdq写不出来的感觉实在是。。。。 首先这题有一个贪心 就是每天的买卖一定是100% 这样才能保证收益最大 然后设x[i]表示第i天最多拥有A劵的数量 y[i]表示第i天最多拥有B劵的数量 f[i]表示第i天把劵全卖出去获得的最大金钱数 那么 f[i
2015-04-04 15:30:54
788
原创 【最大流】攻略世界树!
【描述】 有四种定位,队长,战士,牧师,法爷。一个标准的小队应当拥有这四种人至少每种各一个。 目前总共有h个队长(Hero), w个战士(Warrior), c个牧师(Claric), m个法爷(Mage)。 允许最多有nw个小队没有战士,nc个小队没有牧师,nm个小队没有法爷。 如果一个小队没有牧师,那么这个小队至少要有战士和法爷。 同一个小队里的战士必须和队长合得来,牧师必须和战士合
2015-04-03 16:29:45
793
原创 【多重背包】二进制优化 && 单调队列优化 && w == v 的特殊情况的处理
为了弥补之前没有好好学的背包 = = 花了一下午来研究这个神奇的东西。。。 当时觉得背包九讲好多东西根本看不懂啊各种跪啊其实现在看来也还好啊 = =唉。。当初真的太水了 (PS:我依旧还是没觉得noip2014D1T3是个背包) 其实其他的都没什么好说的。。 01背包和完全背包就是枚举顺序问题 分组背包和依赖背包其实都可以看成是泛化物品 当然多重背包其实也是…… 不过多重背包因为
2015-04-02 18:20:10
928
原创 【01背包】Uvalive4015 Caves && Uvalive3637 The Bookcase
我要相信LA已经挂掉了 不管是我的代码还是网上的AC代码 交上去全是WA WA WA!!! so。。我也不知道我写的到底能不能过。。。以后找时间交吧。。 QAQ两道01背包。。当时学背包就没好好学T_T于是………… Uvalive4015 Caves 题意:(不吐槽lrj那个语死早的翻译了)就是一个人要在树上走。。他可以在树上随意走动 然后有一些
2015-04-01 18:36:42
827
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人