
思维
lushanlushan0026
退役acmer,准研究生
展开
-
HDU 6315 G Naive Operations 线段树
这题看题面就知道是线段树了,但是我们发现这个式子并不是很好维护,那么我们可以换一个思路,对于每个add操作,我们把B序列的对应区间-1,当B序列中某个位置上为0的时候,这个位置的答案就+1 并且把这个值又变回到Bi 这个很好理解 所以我们要维护区间的最小值来看-1后以后会不会有位置变成0 对于会变成0的位置我们需要单点更新 有些人可能觉得 如果有多个位置同时为1的话 复杂度会很高 其实...原创 2020-07-09 08:45:47 · 133 阅读 · 0 评论 -
E. Johnny and Grandmaster 数论+思维
这道题的思路来源于一个叫zbr的大佬 真的挺秒的 仔细想想也不是很难 但是没有想到如此简便的做法 首先我们要从大到小排序 这个应该没问题 因为大数的权重远远比小的大 所以先分配大的在分配小的 其次 我们要清楚 对于一个大数 如果我们把他分配给一个集合 另外一个集合就要想办法凑出这个数 根据p^k这个特殊性 假设我们这个一个大数是 p^k 那么比它小的数 要么刚好凑成它要么不够凑 这是显然易见的 如果不够凑 答案就是 p^k减去所有比它小的数 否则 我们把p^k 凑出来 在重置差值为0 再...原创 2020-06-05 11:44:15 · 297 阅读 · 0 评论 -
CF Round #643 (Div. 2) C. Count Triangles
有人说这套题C比D和E 从过题的人数上来看确实这样 D题很好想 过的人很多 E题大佬说是三分裸题(大佬总能一眼看出)等下就补E 我们来讲讲C题 其实有个很简单的而且细节也很少的方法 当时想了想 被队友叫去搞D了 主要就是利用前缀和思想(虽然我求的是后缀) 我们知道 在 X<=Y<=Z的情况下 要构成三角形就只有一个限制 那就是 X+Y>Z 我们肯定要从a,b,c,d这几个范围下手 先枚举最小的那条边 a<=X<=b 从a到b枚举一遍 对于第2条边 ...原创 2020-05-17 19:51:20 · 1032 阅读 · 0 评论 -
cf Round #641 (Div. 2) D. Orac and Medians 思维
显然当某个区间(长度大于1)的中位数为k时,整个区间都可以变成k 但我们很难去找所有子区间的中位数 来确定它们是否为k 我们得换个思路:https://www.luogu.com.cn/blog/Caro23333/codeforces-round-641-div1b-orac-and-medians-zhong-wen-ti-xie 我们假设 Ai==k Bi=1 Ai<k Bi=0 Ai>k Bi=2 首先 数组里面必须包含k这个值 其次 对于每个长度为3的区间 若这...原创 2020-05-14 16:23:52 · 240 阅读 · 0 评论 -
Gym - 100519 B Bring Your Own Bombs 离散化+二分+思维
题目链接:https://vjudge.net/contest/370255#problem/B 我们考虑每一行每一列会爆炸的概率是多少 显然 对于会爆炸的每一行 位于该行的矩形的长都会爆炸 对于会爆炸的每一列 位于该列的矩形的宽都会爆炸 但是对于 行列都爆炸的但我 我们显然重复计算了 所以要容斥一下 #include<cstdio> #include<algor...原创 2020-05-03 18:48:44 · 205 阅读 · 0 评论 -
HDU-6602 杭电多校 线段树
题目链接:hdu 6602博客 思路源自博客:https://blog.nowcoder.net/n/bdacd5d54bdc491ea71ece169c860f39 感觉多校的题目还是比较重思维 而饿我的思维很菜 这题我一开始想了个假算法,因为要个数>=k或者==0,一开始我想着用主席树,先二分一个长度len,再去枚举左端点,假设枚举到了左端点为L 那么右端点R=L+len-...原创 2020-04-28 16:51:18 · 236 阅读 · 0 评论 -
CodeForces - 1151E 思维
是很难简单计算的 我们换一个角度去看 看每一个位置对答案的贡献是多少 但是位置必须得是联通块 才会有贡献 所以我们要对和进行适当筛选才能计算贡献 首先对于位置我们计算它作为连通块右端点的贡献 那要如何计算呢 例如 序列 2 5 1 3 4 我们要让位置1的2作为联通块右端点 首先2要属于l和r 那么 l的取值范围 就是1-2 其次我们要让第2个位置的5和第一个位置...原创 2020-04-15 17:29:28 · 205 阅读 · 0 评论