摘要: 十分有趣的问题. 我们发现如果拿的话肯定要先拿一些大的. 所以我们可以先将所有数从小到大排序,令 $f[i]$ 表示拿完前 $i$ 小先手-后手的最大值. 则有转移:$f[i]=max(f[i-1],a[i]-f[i-1])$ 反复阅读:每次拿一些数字的贡献是这些数字中最小的值. 反复阅读上一句话, 阅读全文
posted @ 2019-12-17 20:50 EM-LGH 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 之前绝对做过几乎一模一样的题,现在做竟然忘了. code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; ll n,ans=1 阅读全文
posted @ 2019-12-17 20:08 EM-LGH 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 推到了一个推不下去的形式,然后就不会了 ~ 看题解后傻了:我推的是对的,推不下去是因为不需要再推了. 复杂度看似很大,但其实是均摊 $O(n)$ 的,看来分析复杂度也是一个能力啊 ~ code: #include <bits/stdc++.h> #define ll long long #defin 阅读全文
posted @ 2019-12-17 19:40 EM-LGH 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 看到这道题的第一个想法是二分+主席树(好暴力啊) 实际上不用这么麻烦,用一个双指针+桶扫一遍就行了 ~ code: #include <bits/stdc++.h> #define N 100006 #define setIO(s) freopen(s".in","r",stdin) using n 阅读全文
posted @ 2019-12-17 18:37 EM-LGH 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 不难发现,当我们要选的区间确定后,一定会把仓库安排到中间的稻草上(如果是偶数个的话中间两个都行)。 然后按照坐标从小到大枚举右指针,左指针一定不递减,双指针扫一下就行了. code: #include <bits/stdc++.h> #define N 100007 #define ll long 阅读全文
posted @ 2019-12-17 17:01 EM-LGH 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 思路很巧妙的一道题 ~ 这个应该不完全是正解,复杂度约为 $O(3\times 10^8)$,有时间再研究研究正解. 首先,最裸的暴力是按照权值从小到大枚举每一个数,然后枚举后面的数来更新方案数,是 $O(n^2)$ 的. 然后,我们可以用lucas定理来模拟那个组合数,会发现只需满足大数&小数=小 阅读全文
posted @ 2019-12-17 16:20 EM-LGH 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 这个思路挺巧妙的 ~ 定义一行/列的权值为操作后所整体增加的值. 那么,我们会有若干个 $a[x]+b[y]=c$ 的限制条件. 但是呢,我们发现符号是不能限制我们的(因为可加可减) 所以可以将限制条件转化为 $a[x]-b[y]=c$. 这个用带权并查集就可以方便地维护了~ code: #incl 阅读全文
posted @ 2019-12-17 14:56 EM-LGH 阅读(180) 评论(0) 推荐(0) 编辑
摘要: #include <cstdio> #include <cstring> #include <algorithm> #define N 1000007 #define ll long long #define lson now<<1 #define rson now<<1|1 #define set 阅读全文
posted @ 2019-12-17 14:24 EM-LGH 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 如果单点而不是求 sigma 的话还是比较好办的. 遇到这种前缀和相减的矩阵乘法可以增设一个 0 使得后面的能先加到前面,然后再算. 这样的话可以使的最后算出的是前缀和相加的形式. code: #include <bits/stdc++.h> #define ll long long #define 阅读全文
posted @ 2019-12-17 14:01 EM-LGH 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 思路并不难,主要是细节需要注意一下. 在 lct 中,删边要写成:f[lson]=0,lson=0 (因为删 x->y 时 y 不一定是左儿子,y 只是 x 的前驱) 然后 f[lson]=lson=0 这个写法在一些编译器上是错误的(就是你会发现 f[lson] 中这个 lson 会变成 0 ) 阅读全文
posted @ 2019-12-17 11:28 EM-LGH 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 有一个神奇的技巧——打表 code: #include <bits/stdc++.h> #define N 10000007 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; in 阅读全文
posted @ 2019-12-17 09:55 EM-LGH 阅读(153) 评论(0) 推荐(0) 编辑