随笔分类 -  其他 - 模型/总结/重要

上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 32 下一页
摘要:Description 影魔,奈文摩尔,据说有着一个诗人的灵魂。事实上,他吞噬的诗人灵魂早已成千上万。千百年来,他收集了各式各样 的灵魂,包括诗人、牧师、帝王、乞丐、奴隶、罪人,当然,还有英雄。每一个灵魂,都有着自己的战斗力,而影魔,靠 这些战斗力提升自己的攻击。奈文摩尔有 n 个灵魂,他们在影魔宽 阅读全文
posted @ 2019-12-18 18:10 EM-LGH 阅读(188) 评论(0) 推荐(0)
摘要:code: #include <bits/stdc++.h> #define N 100060 #define M 1000000 #define lson x<<1 #define rson x<<1|1 #define ll long long #define setIO(s) freopen( 阅读全文
posted @ 2019-12-18 10:35 EM-LGH 阅读(187) 评论(0) 推荐(0)
摘要:问题转化为求每一个极长横线段与极长纵线段的交点个数. 这个东西用扫描线+树状数组维护一下就可以了. code: #include <cstdio> #include <algorithm> #define N 200005 #define setIO(s) freopen(s".in","r",st 阅读全文
posted @ 2019-12-18 09:17 EM-LGH 阅读(155) 评论(0) 推荐(0)
摘要:十分有趣的问题. 我们发现如果拿的话肯定要先拿一些大的. 所以我们可以先将所有数从小到大排序,令 $f[i]$ 表示拿完前 $i$ 小先手-后手的最大值. 则有转移:$f[i]=max(f[i-1],a[i]-f[i-1])$ 反复阅读:每次拿一些数字的贡献是这些数字中最小的值. 反复阅读上一句话, 阅读全文
posted @ 2019-12-17 20:50 EM-LGH 阅读(184) 评论(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 阅读(157) 评论(0) 推荐(0)
摘要:推到了一个推不下去的形式,然后就不会了 ~ 看题解后傻了:我推的是对的,推不下去是因为不需要再推了. 复杂度看似很大,但其实是均摊 $O(n)$ 的,看来分析复杂度也是一个能力啊 ~ code: #include <bits/stdc++.h> #define ll long long #defin 阅读全文
posted @ 2019-12-17 19:40 EM-LGH 阅读(140) 评论(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 阅读(181) 评论(0) 推荐(0)
摘要:不难发现,当我们要选的区间确定后,一定会把仓库安排到中间的稻草上(如果是偶数个的话中间两个都行)。 然后按照坐标从小到大枚举右指针,左指针一定不递减,双指针扫一下就行了. code: #include <bits/stdc++.h> #define N 100007 #define ll long 阅读全文
posted @ 2019-12-17 17:01 EM-LGH 阅读(153) 评论(0) 推荐(0)
摘要:思路很巧妙的一道题 ~ 这个应该不完全是正解,复杂度约为 $O(3\times 10^8)$,有时间再研究研究正解. 首先,最裸的暴力是按照权值从小到大枚举每一个数,然后枚举后面的数来更新方案数,是 $O(n^2)$ 的. 然后,我们可以用lucas定理来模拟那个组合数,会发现只需满足大数&小数=小 阅读全文
posted @ 2019-12-17 16:20 EM-LGH 阅读(245) 评论(0) 推荐(0)
摘要:这个思路挺巧妙的 ~ 定义一行/列的权值为操作后所整体增加的值. 那么,我们会有若干个 $a[x]+b[y]=c$ 的限制条件. 但是呢,我们发现符号是不能限制我们的(因为可加可减) 所以可以将限制条件转化为 $a[x]-b[y]=c$. 这个用带权并查集就可以方便地维护了~ code: #incl 阅读全文
posted @ 2019-12-17 14:56 EM-LGH 阅读(197) 评论(0) 推荐(0)
摘要:如果单点而不是求 sigma 的话还是比较好办的. 遇到这种前缀和相减的矩阵乘法可以增设一个 0 使得后面的能先加到前面,然后再算. 这样的话可以使的最后算出的是前缀和相加的形式. code: #include <bits/stdc++.h> #define ll long long #define 阅读全文
posted @ 2019-12-17 14:01 EM-LGH 阅读(160) 评论(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 阅读(136) 评论(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 阅读(162) 评论(0) 推荐(0)
摘要:比较神奇的贪心 有点类似于田忌赛马. 如果我方最弱强于对面最弱,则直接最弱pk最弱. 如果我方最强强于对面最强,那么直接最强间pk. 否则,试着用我方最弱 pk 对方最强,看是否能打成平手. code: #include <bits/stdc++.h> #define N 100006 #defin 阅读全文
posted @ 2019-12-16 18:25 EM-LGH 阅读(131) 评论(0) 推荐(0)
摘要:这个思路挺有意思的 ~ 利用树链的并来保证每个颜色只贡献一次,然后用可持久化线段树维护 code: #include <set> #include <cstdio> #include <cstring> #include <algorithm> #define N 100005 #define se 阅读全文
posted @ 2019-12-16 16:04 EM-LGH 阅读(145) 评论(0) 推荐(0)
摘要:自己独立想出来的,超级开心 一开始想的是对于每一个点分别算这个点对答案的贡献. 但是呢,我们发现由于每一条路径的贡献是该路径颜色种类数,而每个颜色可能出现多次,所以这样就特别不好算贡献. 那么,还是上面那句话,由于算的是颜色种类,所以我们可以对每一个颜色种类单独算贡献. 即不以点为单位去算,而是以颜 阅读全文
posted @ 2019-12-16 11:31 EM-LGH 阅读(154) 评论(0) 推荐(0)
摘要:code: #include <bits/stdc++.h> #define N 200009 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; ll Sum[N]; int n, 阅读全文
posted @ 2019-12-06 20:14 EM-LGH 阅读(180) 评论(0) 推荐(0)
摘要:自己 yy 了一个动态 dp 做法,应该是全网唯一用 LCT 写的. code: #include <bits/stdc++.h> #define ll long long #define lson tr[x].ch[0] #define rson tr[x].ch[1] #define setIO 阅读全文
posted @ 2019-12-05 20:25 EM-LGH 阅读(183) 评论(0) 推荐(0)
摘要:做这道题真的是涨姿势了,一般的CDQ分治都是在序列上进行的,这次是把CDQ分治放树上跑了~ 考虑一半的 CDQ 分治怎么进行: 递归处理左区间,处理左区间对右区间的影响,然后再递归处理右区间. 所以,如果是有坐标不递增的斜率优化的话就用 CDQ 分治先处理出左半部分答案,然后将处理好的左区间答案用来 阅读全文
posted @ 2019-12-04 20:50 EM-LGH 阅读(275) 评论(0) 推荐(0)
摘要:挺神的一道题 ~ 由于两个人选的数字不能有互质的情况,所以说对于一个质因子来说,如果 1 选了,则 2 不能选任何整除该质因子的数. 然后,我们发现对于 1 ~ 500 的数字来说,只可能有一个大于 $\sqrt 500$ 的质因子(两个的话乘积就超过 500 了) 而不大于 $\sqrt 500$ 阅读全文
posted @ 2019-12-02 20:59 EM-LGH 阅读(181) 评论(0) 推荐(0)

上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 32 下一页