![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思维
文章平均质量分 67
JXNU_SONG
这个作者很懒,什么都没留下…
展开
-
牛客练习赛50 B tokitsukaze and Hash Table
B tokitsukaze and Hash Tablehttps://ac.nowcoder.com/acm/contest/1080/B实际上我们就是要维护每个点右边(循环)第一个空位的位置,那么我们发现,插入一个新的节点可能导致一段区间右边(循环)的空位发生改变,不好直接暴力维护。我们模拟几下以后发现这个过程就类似于把几个区间拼接在一起的味道,我们就考虑能否用并查集去维护这个拼接过程。此时我们考虑:我们将右边(循环)第一个空位相同的的位置视为同一集合,我们假设这个空位是 xxx ,那么我们就令这原创 2022-04-27 15:48:41 · 187 阅读 · 0 评论 -
AtCoder Regular Contest 139 B - Make N(思维)
B - Make Nhttps://atcoder.jp/contests/arc139/tasks/arc139_b三个操作的单价分别为: X1,YA,ZB\frac{X}{1},\frac{Y}{A},\frac{Z}{B}1X,AY,BZ ,如果操作 111 的单价最低肯定直接只用操作 111 ,若操作 111 的单价是第二低,那么肯定是先一直用单价最低的,然后最后剩下没处理完的用操作 111 。那么现在主要就是讨论如果操作 2,32,32,3 的单价都比 111 低的情况:首先我们这里假原创 2022-04-25 11:34:14 · 388 阅读 · 0 评论 -
第46届ICPC亚洲区域赛(昆明) B Blocks(容斥+子集和DP+期望DP)
B Blockshttps://ac.nowcoder.com/acm/contest/32708/B我们首先对每个矩形进行二进制状压,状态 iii 的每一位表示一个矩形,此位置为 111 表示此矩形已经选过,否则没选。那么我们设 f[i]f[i]f[i] 表示当前状态为 iii ,我们还需要花费多少步(期望),才可以把整个 (W,H)(W,H)(W,H) 填满。那么 f[0]f[0]f[0] 就是我们要求的答案。我们此时分两种情况求解:(1)状态 iii 已经将 (W,H)(W,H)(W,H)原创 2022-04-21 16:16:17 · 860 阅读 · 0 评论 -
2021-2022 ICPC, NERC, Northern Eurasia Onsite J. Job Lookup (区间DP+二位前缀和)
J. Job Lookuphttps://codeforces.com/contest/1666/problem/J首先两点 u,vu,vu,v 之间的权值是 cu,v×du,vc_{u,v}\times d_{u,v}cu,v×du,v ,实际上我们可以理解把每个 cu,vc_{u,v}cu,v 放在 u,vu,vu,v 路径中的每条边上,所以我们这里最后就可以去考虑边权和。那么这里设 dp[i][j]dp[i][j]dp[i][j] 为:在 最终状态 下,范围在[i,j][i,j][i,j]原创 2022-04-14 16:01:11 · 1093 阅读 · 11 评论 -
The 2021 CCPC Guilin Onsite D. Assumption is All You Need(贪心)
Assumption is All You Needhttps://codeforces.com/gym/103409/problem/D①从左往右按下标遍历,若 a[i]=b[i]a[i]=b[i]a[i]=b[i] 则无需再调整,写几个样例会发现调整会不断破坏更前面已经匹配好的位置,所以已经匹配好的就不考虑再做操作了。②若当前 a[i]<b[i]a[i]<b[i]a[i]<b[i] ,则直接没有答案,因为是操作逆序对,向后考虑操作只能换来更小值,不可能匹配上。③若 a[i]&g原创 2022-04-06 14:19:09 · 724 阅读 · 0 评论 -
CodeTON Round 1 (Div. 1 + Div. 2, Rated) E. Equal Tree Sums
E. Equal Tree Sumshttps://codeforces.com/contest/1656/problem/E一道思维题。我们首先定义树上一个点的度为 deg(v)deg(v)deg(v) ,然我们先对树 010101 染色分类后,令某一类值为 deg(v)deg(v)deg(v) ,另一类为 −deg(v)-deg(v)−deg(v) ,这样就满足了题目的条件。为什么呢,我们可以把给某个点赋值 deg(v)deg(v)deg(v) 或 −deg(v)-deg(v)−deg(v) 理解为原创 2022-03-30 19:14:19 · 433 阅读 · 0 评论 -
Codeforces Round #779 (Div. 2) E. Gojou and Matrix Game
E. Gojou and Matrix Game这里我们定义一次(先手,后手)为一轮游戏,因为进行 1010010^{100}10100 次,所以可以进行整数轮游戏。首先我们可以发现如果先手站在最大值上直接就赢了,因为后手无论走哪个点,先手又可以回来取最大点,所以每一轮先手都可以比后手优,所以必胜。然后我们考虑先手初始在非最大值的情况,我们可以发现,如果先手站在非最大值上,假设这个值是 vvv ,那么后手下一步必须走到 >v>v>v 的点,为何呢,如果后手不这么做,选了一个 <原创 2022-03-28 19:46:21 · 1133 阅读 · 0 评论 -
Codeforces Round #779 (Div. 2) D 388535
D2. 388535 (Hard Version)这里直接上 D2D2D2 的做法吧。我们可以知道 l⊕xl\oplus xl⊕x 一定在 aaa 中,所以对于 (a[i]⊕l)(a[i]\oplus l)(a[i]⊕l) (1<=i<=r-l+1) ,总有一个是 xxx 。我们现在设 b[i]=(a[i]⊕l)b[i]=(a[i]\oplus l)b[i]=(a[i]⊕l) ,那么我们怎么判断 b[i]b[i]b[i] 是不是 xxx 呢?首先我们要知道原序列是一个排列,所以不会有相同的数原创 2022-03-28 14:11:36 · 887 阅读 · 0 评论 -
文远知行杯广东工业大学第十六届程序设计竞赛 I V字钩爪
V字钩爪题目链接我们首先的想法是想把相互独立的点拆出来,把会产生影响的点放一起,那么哪些是会产生影响的点呢。这里是相隔 kkk 即可产生相互影响,那实际上就是处在 kkk 的一个同余系下的点就是会产生影响的,我们可以把处在同一同余系下的点如下代码拆出来扔进一个 vectorvectorvector 里面去,于是我们就可以独立考虑每个同余系的答案。for (int i = 1; i <= n; ++i) { g[i % k].push_back(a[i]);}那么对于同一个 i%k原创 2022-03-26 22:11:51 · 576 阅读 · 2 评论 -
牛客挑战赛58 E 大水题 (分段打表)
E 大水题原题链接G(x)G(x)G(x) 仍然可看作是一个多项式, G(1)G(1)G(1) 即是我们所求的答案,于是就可以打表,发现将 aia_iai 和 kkk 随意更改都不影响答案,答案怎样都是 n!n!n! 。所以我们现在就要求 n!%modn! \% modn!%mod ,我们发现当 n≥modn \geq modn≥mod 时答案肯定是 000 ,毕竟这个时候 n!n!n! 可以整除 modmodmod 。当 n<modn < modn<mod ,我们发现还是有很多原创 2022-03-19 16:21:59 · 495 阅读 · 0 评论 -
Codeforces Round #768 (Div. 2) C. And Matching (思维,分类讨论)
C. And Matchinghttps://codeforces.com/contest/1631/problem/C①我们首先可以想到 k=0k=0k=0 的情况,那就是对称的构造,也就是 (i,n−i−1)(i, n - i - 1)(i,n−i−1) 这么去构造。②那么若 k≠0k \neq 0k=0 时,我们就想,是否我们可以首先一个对直接值为 kkk ,其余的都为 000 呢。那么如果要让一对值直接为 kkk ,那就让 kkk 直接去 &\&& 上一个全 .原创 2022-01-28 16:16:37 · 1090 阅读 · 1 评论 -
Codeforces Round #214 (Div. 2) C. Dima and Salad(带负权的01背包)
Dima and Salad这题我们要选出 ∑mj=1aj∑mj=1bj=k\frac{\sum\limits^{j=1}_{m}a_j}{\sum\limits^{j=1}_{m}b_j}=km∑j=1bjm∑j=1aj=k ,实际上就是选出 ∑mj=1aj−k∑mj=1bj=0\sum\limits^{j=1}_{m}a_j - k\sum\limits^{j=1}_{m}b_j=0m∑j=1aj−km∑j=1bj=0 ,那么我们另 ci=ai−kbic_i=a_i-kb_ici.原创 2021-12-08 20:44:49 · 684 阅读 · 1 评论 -
AtCoder Regular Contest 131 C - Zero XOR(思维)
Zero XOR这题关键是推出一个结论:如果元素个数是奇数则先手必胜。首先,假设所有元素的异或和为 xxx ,那么其实题目中说的剩余元素异或和为 000 也就等价于选出数字异或和为 xxx 。那么假设现在所有异或和为 xxx 的选择有 (a1,a2,a3),(a1,a4),(a1,a2,a3,a4,a5)(a_1,a_2,a_3),(a_1,a_4),(a_1,a_2,a_3,a_4,a_5)(a1,a2,a3),(a1,a4),(a1,a2,a3,a4,a5) ,先手肯定不选 a.原创 2021-12-07 20:48:52 · 544 阅读 · 0 评论 -
AtCoder Beginner Contest 227 G - Divisors of Binomial Coefficient (埃筛分解较大数)
G - Divisors of Binomial CoefficientLink题目大意:计算组合数 CnkC^k_nCnk 的约数个数。 1≤k≤1e6,1≤n≤1e121≤k≤1e6,1≤n≤1e121≤k≤1e6,1≤n≤1e12,且保证 k≤nk≤nk≤n首先可见约数个数定理然后我们有: Cnk=n×(n−1)×(n−2)×...(n−k+1)1×2×3×....×kC_n^k=\frac{n×(n-1)×(n-2)×...(n-k+1)}{1×2×3×....×k}Cnk=1×2×.原创 2021-11-20 17:31:24 · 542 阅读 · 0 评论 -
KEYENCE Programming Contest 2021 (AtCoder Beginner Contest 227) D - Project Planning(二分+贪心)
Project Planning题目大意:现给出一个序列 aia_iai ,代表第 iii 种球有多少个。现在认为一个桶内只能放不同种类的球,再给出桶的容量 kkk ,现在问最多能放满几个桶。这题的答案显然有二分性,我们可以二分答案解决,本题的关键就在于 checkcheckcheck 答案。二分之后我们一定要用到我们二分出来的信息,也就是桶的个数,如果不考虑桶的个数,那么就还是会和没二分一样,不知如何快速分配。那么我们现在得到了桶的数量 xxx ,我们可以考虑一下 ai≥xa_i≥xai≥x.原创 2021-11-17 20:23:31 · 339 阅读 · 0 评论 -
The 2021 ICPC Asia Jinan Regional Contest D Arithmetic Sequence(三分+货舱选址)
Arithmetic Sequence题目大意:给出一个序列 aaa ,一步操作可以将一个数加一或减一,问将整个序列变成等差数列的最小操作数。我们发现,如果公差确定,最小值是可以 O(n)O(n)O(n) 求得的。我们设公差为已知量 xxx ,首项为未知量 c1c_1c1 。那么那么整体的代价就是∑i=1n∣ai−(c1+(i−1)×x)∣\sum\limits_{i=1}^n|a_i-(c_1+(i-1)×x)|i=1∑n∣ai−(c1+(i−1)×x)∣其实这里已经有点像货舱选址的.原创 2021-11-17 16:26:58 · 639 阅读 · 0 评论 -
The 2019 China Collegiate Programming Contest Harbin Site E. Exchanging Gifts
E. Exchanging GiftsLink我们首先考虑得到 SnS_nSn 之后如何统计答案。那么实际上也就是问最多可以组成多少数对,数对中两个数字不能相同。那么首先设数组中出现次数最多的数字的出现次数为 cntcntcnt。若 2×cnt≤n2×cnt≤n2×cnt≤n ,则每个元素都能找到配对,答案就是 nnn 。证明如下:我们让相同的元素都摆在一起:如: [7,7,7,2,2,2,6,6][7,7,7,2,2,2,6,6][7,7,7,2,2,2,6,6] ,那么我们把所有元素都向右.原创 2021-11-10 17:07:03 · 423 阅读 · 0 评论 -
2019 China Collegiate Programming Contest Qinhuangdao K. MUV LUV UNLIMITED
MUV LUV UNLIMITEDLink题目大意:给出一棵树,两人轮流任取(至少取一)当前树上的叶子,最先不能操作的人输。首先考虑一个情况,若一个叶子节点 xxx 有兄弟,则先手必胜。因为如果我取了 xxx 以后的树是先手必败态,那么我取这个叶子就必胜了。如果不是,则取完 xxx 之后到达了先手必胜态,那么此时第二个人取一次之后肯定又变为了先手必败态,假设第二个人取的点集为 sss ,也就是说取了 {x}∪S\{x\}∪S{x}∪S 之后变为了先手必败态,而我们现在得知 xxx 有兄弟,也就是说取完原创 2021-11-09 21:24:19 · 254 阅读 · 0 评论 -
Bubble Cup 14 - Finals Online Mirror (Unrated, ICPC Rules, Teams Preferred, Div. 2) E. Array Game
Array GameLink题目大意: AliceAliceAlice 与 BobBobBob ,从一个长度为 nnn 的数组中轮流从数组首部或尾部取数, AliceAliceAlice 先手。取到的数放入一个原本为空的新数组中,且要保证新数组严格单调递增,最先不能操作的人输,问谁赢。首先我们可以考虑一个情况,若此时在某种条件下,只能放首端或者只能放尾端才能维持新数组的递增,也就是别无选择的情况,那么没有被选择的另一端就被堵住了,永远也没有可能被选择了,这个时候可选择的一端的连续递增的数就是游戏的必然原创 2021-11-09 00:07:57 · 3170 阅读 · 0 评论 -
2021辽宁省大学生程序设计竞赛 H 制造游戏币(思维,背包)
H 制造游戏币https://ac.nowcoder.com/acm/contest/22842/H]我们首先根据每个限制的 bbb 和 ccc 都不相同可以得到,他们的关系一定是一条链。那么我们可以对链做一些预处理即可解决这个问题。一条链上要求拿的物品个数要递增,那么,我们首先把至少要拿的拿掉,也就是分别拿 0,1,2,3...0,1,2,3...0,1,2,3... 然后,我们可以这么想,拿一个 xxx 就至少要拿一个 xxx 的整个后缀,因为这样才能至少保持递增,那么我们可以将 xxx 的后缀当.原创 2021-10-29 16:36:08 · 324 阅读 · 2 评论 -
洛谷P1080 国王游戏(贪心)
国王游戏题目描述恰逢 HHH 国国庆,国王邀请 nnn 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 nnn 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的.原创 2021-10-29 16:19:25 · 2292 阅读 · 0 评论 -
2021 Shandong Provincial Collegiate Programming Contest F. Birthday Cake(字符串哈希)
Birthday Cakehttps://codeforces.com/gym/103118/problem/F题目大意:给出 nnn 个字符串,问有多少对无序 (i,j)(i,j)(i,j) 满足:将第 iii 个字符串与第 jjj 个首尾或尾首拼接,可以使得,从新串中间劈一刀,可以得到两个相等的串(不允许翻转)。我们发现,所有可以被统计进入答案的 pairpairpair 可以分成两类,第一,两个字符串长度相等,第二,两个字符串长度不等。相等的情况好处理,字符串哈希,然后用 mapmapmap .原创 2021-10-15 14:15:24 · 261 阅读 · 0 评论 -
The 2021 Sichuan Provincial Collegiate Programming Contest J - Ants(思维,模拟)
Antshttps://codeforces.com/gym/103117/problem/J相遇反向即可当作穿过了,这是白书上的经典题了。那么不同于那个经典题的地方就在于其两端有障碍限制。我们设总长为 xxx ,那么我们发现我们可以把 2x2x2x 作为一个周期,我们发现这个周期内左右内壁均会被碰 nnn 次,且所有蚂蚁都会回到原地。那么显然我们中途完整的周期我们都可以直接快速计算,最后左壁耐久度将由 AAA 变为 A%nA\%nA%n ,右壁耐久度由 BBB 将变为 B%nB\%nB%n 。这个.原创 2021-10-13 21:38:28 · 260 阅读 · 0 评论 -
2021 ICPC 四川省赛 L - Spicy Restaurant(多源BFS,DP)
Spicy Restauranthttps://codeforces.com/gym/103117/problem/L题目大意:给一个 nnn 个点 mmm 条边的点权图。再给出 qqq 个询问,对于每个询问给出两个变量 p,ap,ap,a ,问从 ppp 开始走,到最近的点权不超过 aaa 的点的最短路是多少。注意到这里的点权 www 十分小,我们可以从这里下手考虑。假如我们设 dp[i][j]dp[i][j]dp[i][j] 为从 iii 点出发,到点权不超过 jjj 的点的最短路长度,我们会发.原创 2021-10-12 15:53:33 · 475 阅读 · 0 评论 -
AtCoder Beginner Contest 221 E LEQ
LEQhttps://atcoder.jp/contests/abc221/tasks/abc221_e题目大意:给出一个长度为 nnn 的整数序列 aaa ,问有多少个子序列(无需连续) a1,a2...aka_1,a_2...a_ka1,a2...ak ,满足 a1≤aka_1≤a_ka1≤ak 。那么我们发现可以将问题看成对于每个正序对去算一个值最后求和。那么我们这里正序对维护的值就不再是加一了,我们设对于 aia_iai 作为正序对小的那一方而言,与其可构成正序对的元素为 {aj.原创 2021-10-04 16:30:14 · 183 阅读 · 0 评论 -
Codeforces Round #746 (Div. 2) C - Bakry and Partitioning
Bakry and Partitioninghttps://codeforces.com/contest/1592/problem/C题目大意:给出一个有 nnn 个节点的点权树和一个限制 kkk ,现在问能否删除至少一条,至多 k−1k-1k−1 条边,使得剩下的连通块里的点权异或和相等。首先,如果拆分成偶数个连通块,那么我们可以将这偶数个连通块一分为二,合并成异或和相等的两个连通块,那么对于这种情况而言,其整棵树的异或和肯定为 000 ,而且我们发现如果整颗树异或和为 000 ,那么其随便切一刀.原创 2021-10-04 14:50:28 · 141 阅读 · 0 评论 -
AtCoder Beginner Contest 221 D Online games
Online gameshttps://atcoder.jp/contests/abc221/tasks/abc221_d题目大意:给出 nnn 个人的区间,表示这人在这个区间时间内会登录游戏,现在请输出 nnn 个数 kik_iki ,表示有恰好 kik_iki 个人登录游戏的天数。这种多区间和交并有点关系的问题就可以往扫面线的思想去靠一靠。那么我们利用扫描线的思想,处理出每个变化点,也就是 aia_iai 点此时区间会加一, ai+bia_i+b_iai+bi 点此时区间会减一。那么我们原创 2021-10-03 17:04:13 · 440 阅读 · 0 评论 -
洛谷P3168 [CQOI2015]任务查询系统(扫描线+主席树)
P3168 [CQOI2015]任务查询系统 原题链接我们可以想,这题一眼看起来比较麻烦是因为其有个结束时间,如果没有的话,那就是个是求前缀第 kkk 小的前缀和,那样用主席树上维护区间数量和区间和就可以直接写。但是这里有个结束时间,我们发现我们可以用扫描线的思想,设一组任务表示为 {s,e,p}\{s,e,p\}{s,e,p} ,就以题中描述的时间为时间轴,那么我们可以在 sss 这里增加 {1,p}\{1,p\}{1,p} ( {数量权值,优先级权值}\{数量权值,优先级权值\}{数量权值,优先.原创 2021-09-12 20:13:11 · 145 阅读 · 0 评论 -
The 15th Chinese Northeast Collegiate Programming Contest D. Lowbit(快速稳定区间修改)
D. Lowbit 原题链接这题我们会想,加到一定次数以后会不会变成正常的区间操作呢,就类似于区间开根一样。然后我们发现确实如此,一个数加到一定次数之后实际上其二进制就只剩一个 111 了,后期就是不断乘 222 ,和区间开根类似处理一下就可以在一定次数之后变成区间乘的操作。那么为什么操作少量次数以后其二进制就会变成只剩下一个 111 呢?我们考虑,对于一次操作,其二进制表示中 111 的总个数的变化。我们知道,加上 lowbitlowbitlowbit 是必定进位的,那么进位的话最终进位结束的地.原创 2021-09-11 16:54:36 · 214 阅读 · 0 评论 -
洛谷P2839 [国家集训队]middle(主席树)
P2839 [国家集训队]middle我们可以考虑二分中位数 checkcheckcheck 答案,那么我们对于某个值 midmidmid ,把 [l,r][l,r][l,r] 内的所有小于 midmidmid 的数赋值为 −1-1−1 ,大于等于 midmidmid 的数赋为 111 ,若 [l,r][l,r][l,r] 的和大于等于 000 就代表这个区间内的中位数至少都是 midmidmid ,否则只可能小于 midmidmid 。答案一定是序列里面的数字,所以我们就考虑对于每个数字建出一颗线段.原创 2021-09-11 16:18:53 · 168 阅读 · 0 评论 -
EOJ Monthly 2021.9 Sponsored by TuSimple A. Amazing Discovery(分治+记忆化)
A. Amazing Discovery 原题链接这题主要是要跳出组合数学的思维去考虑其他的可行办法,我们可以考虑用分治去写。首先设 Sn=(a+b)n+(a−b)nS_n=(a+\sqrt{b})^n+(a-\sqrt{b})^nSn=(a+b)n+(a−b)n①若 nnn 为偶数,则有:(Sn2)2=Sn+(a2−b)n2(S_{\frac{n}{2}})^2 = S_n+(a^2-b)^{\frac{n}{2}}(S2n)2=Sn+(a2−b)2n②若 nnn 为奇数.原创 2021-09-11 15:26:51 · 182 阅读 · 4 评论 -
CF893F Subtree Minimum Query(主席树)
F. Subtree Minimum Query 原题链接题目大意:给出一颗有根点权树, mmm 次询问,每次问你某个点 xxx 的子树中距离其不超过 kkk 的点的权值的最小值。以深度为时间轴, dfsdfsdfs 序为下标建立主席树维护区间最小值即可。因为这样第 iii 层的所代表的主席树就存下了前 iii 层所有点,我们要找的点会完全包含在里面,且更深层的点还没有被计算进来,所以我们只要找到当前主席树上 xxx 那一颗子树上的区间最小值即可,即可以通过 dfsdfsdfs 序为下标的方式快速询.原创 2021-09-08 15:41:57 · 191 阅读 · 0 评论 -
洛谷P5629 【AFOI-19】区间与除法(思维,ST表)
P5629 【AFOI-19】区间与除法 原题链接这题首先要明确一个结论,一个 a[i]a[i]a[i] 如果对应了多个 b[k]b[k]b[k] ,那么用最小的 b[k]b[k]b[k] 一定最优。这个可以简单的证明一下,若最终答案里 a[i]a[i]a[i] 与 a[j]a[j]a[j] 对应的是同一个 b[k]b[k]b[k] ,那么让他们同时继续除 ddd ,除到最小的 b[h]b[h]b[h] 并不影响答案。如果答案中 a[i]a[i]a[i] 对应了唯一的 b[k]b[k]b[k] ,那.原创 2021-09-06 13:07:47 · 209 阅读 · 0 评论 -
2021CCPC“第一场”网络赛 GCD on Sequence(思维,线段树)
GCD on Sequence 原题链接我们可以发现,假设区间 [l,r][l,r][l,r] 内 v(l,r)=dv(l,r)=dv(l,r)=d ,那么 [l,r][l,r][l,r] 内肯定至少有两个 ddd 的倍数。我们可以通过从 nnn 到 111 去枚举 gcdgcdgcd ,设其为 ddd ,然后找到所有 ddd 的倍数的下标。我们可以假设先不考虑其它 gcdgcdgcd 对此次的计算影响,只考虑计算 ddd 的最终答案。那么假设处理出来了其倍数下标排序后为 [1,3,5,10][1.原创 2021-09-05 21:58:36 · 424 阅读 · 0 评论 -
洛谷P3431 [POI2005]AUT-The Bus
P3431 [POI2005]AUT-The Bus若是这个 nnn 和 mmm 比较小的话就是经典的 dpdpdp 了。但是这里值域比较大,没法像经典做法那么做。但是本质没有变,对于某个点 (x,y)(x,y)(x,y) 来说,实际上就是在 (1~x,1~y)(1~x,1~y)(1~x,1~y) 这个矩阵里面找到一个最大的 dpdpdp 值,再加上自己的权值,就是这个点的答案了。那么我们可以先离散化,然后以 xxx 优先, yyy 其后,遍历所有点,遇到一个点就求得其 dpdpdp 值,然后以 yyy原创 2021-09-04 00:09:18 · 114 阅读 · 0 评论 -
洛谷P5816 [CQOI2010]内部白点(扫描线/主席树)
P5816 [CQOI2010]内部白点 题目链接扫描线的做法这里不过多赘述了,挺多题解都讲的挺不辍的。这里分享一个主席树的写法。首先我们明确的是,第一步变化之后,整个图就不会变了。为什么呢,第二步才改变的点 qqq 肯定是因为第一步改变的某个点 ppp 或者好几个点变成黑点才改变的。如果 ppp 在 qqq 的水平左侧,那么 ppp 左侧肯定还有点,因为它是第一步变成黑点的点,那么在此情况下, qqq 第一步也应当变成黑点,不应该等到第二次才变化。其他几个方向或者多个点的情况是同理的。也就是说..原创 2021-09-03 15:52:56 · 137 阅读 · 0 评论 -
CF1C Ancient Berland Circus(计算几何)
CF1C Ancient Berland Circus 题目链接这题及其难控制精度。。首先三点定圆,那么所有情况的正多边形的顶点一定在这个圆上,因为其是正多边形,所以只要定下来这个圆,其多边形的点就必定在这个圆上了。那么将给出三个点命名为 A,B,CA, B, CA,B,C ,且设圆心为 OOO ,正多边形一条边对应的圆心角为 θ\thetaθ ,那么 θ\thetaθ 肯定要能整除 ∠AOC∠AOC∠AOC ,∠AOB∠AOB∠AOB , ∠BOC∠BOC∠BOC ,这样才一定可以构成正多边形,否.原创 2021-09-02 15:21:10 · 115 阅读 · 0 评论 -
洛谷P1502 窗口的星星(思维,扫描线)
P1502 窗口的星星 原题链接对于一颗星星 (x,y)(x,y)(x,y) ,考虑要包含这颗星星,窗口右端点的范围,实际上是一个矩形: ((x∼x+w),(y∼y+h))((x∼x+w),(y∼y+h))((x∼x+w),(y∼y+h)) ,因为不能在边框上,所以都是开区间。那么实际上就是每个点都给一块矩形加上了 lil_ili 的权值,然后求权值最大的点的权值是多少。一看,实际上是遍历了所有矩形的并集,那么就想到用扫描线去解决。但是这里的开区间不好处理,所以我们可以把这个矩形的范围替换成这样:.原创 2021-09-01 22:46:29 · 238 阅读 · 0 评论 -
洛谷P1197 [JSOI2008]星球大战(逆向思维,并查集)
P1197 [JSOI2008]星球大战原题链接这里要做并查集的删点操作,不太好实现,可是我们知道并查集主要用于合并操作,所以我们可以逆向想,他顺序一个个删点,就是逆序一个个建点,则我们就可以实现这个过程。#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int n, m, k, f[N], vis[N], del[N], cnt;pair<int, int> edge[N].原创 2021-08-31 17:06:14 · 149 阅读 · 0 评论 -
洛谷P4550 收集邮票(概率DP)
P4550 收集邮票原题链接https://lightoj.com/problem/dice-iii的加强版本。设 c[i]c[i]c[i] 为现已经收集了 i−1i-1i−1 种邮票,要搜集到第 iii 种邮票的花钱次数期望, sumc[i]sumc[i]sumc[i] 为 c[i]c[i]c[i] 的前缀和, E[i]E[i]E[i] 为已经收集到 i−1i-1i−1 种邮票,要收集到第 iii 种邮票需要花的钱的期望。 c[i]c[i]c[i] 与 sum[i]sum[i]sum[i] 的计算.原创 2021-08-31 15:08:16 · 327 阅读 · 0 评论