- 博客(79)
- 收藏
- 关注
原创 奇怪的小定理/转化
1、有一个长度为nnn的数组aaa,每次询问给一个kkk,求∑i=1nmin(ai,k)\sum_{i=1}^{n}min(a_i,k)∑i=1nmin(ai,k)的值。将aaa数组降序排序。设ckc_kck表示大于等于kkk的aia_iai的个数,即∑i=1n[k≤ai]\sum_{i=1}^{n}[k \leq a_i]∑i=1n[k≤ai]。那么:∑i=1nmin(ai,k)=∑i=1kci\sum_{i=1}^{n}min(a_i,k)=\sum_{i=1}^{k}c_i∑i=1n
2021-10-08 16:40:25
161
原创 知识点学习
学了一些比较好的博客,在这边记录一下。不定期更新,学了新的知识点就来这边更新一下。1、吉司机线段树学习博客1 搭配里面的练习题+模板题洛谷线段树3练习更好。学习博客2 两篇博客结合食用,两边的例题在对于lazy标记的操作上是不同的,可以学习一下。2、博弈论一些如何使用SG函数以及一些经典博弈的证明。学习博客1 这篇讲了如何学会使用SG函数。学习博客2 讲解并证明了一些石子的博弈3、莫比乌斯反演学习博客1 通俗易懂的讲了一下,其中涉及到的链接有杜教筛,里面可以学习迪利克雷卷积的知识再回过头来
2021-09-02 22:33:26
211
原创 HDU多校第三场1010/HDU-6982 Road Discount【包含恰好k条黑边的最小生成树】
题目链接思路官方题解写的很清楚,将原边看成白边,折扣边看成黑边,求恰好黑边数为kkk的最小生成树。这边有道一模一样的子问题BZOJ2654-tree.我们需要设定一个xxx值,对每条黑边的长度算上+x+x+x的贡献,然后进行一次最小生成树,假如最小生成树的最终值为sumsumsum,选择了cntcntcnt条黑边,那么最小生成树的值就是sum−cnt∗xsum-cnt*xsum−cnt∗x。因为题目所给的边的范围为[0,1000][0,1000][0,1000],所以xxx的范围为[−1000,10
2021-07-30 16:39:21
353
原创 2021杭电多校1 HDU6956-Pass!【特征方程求解数列通向式+BSGS】
题目链接赛中知道了f(i)=(n−2)∗f(i−1)+(n−1)∗f(i−2)f(i)=(n-2)*f(i-1)+(n-1)*f(i-2)f(i)=(n−2)∗f(i−1)+(n−1)∗f(i−2),然后考虑到矩阵上去了,然后歪了。思路看了题解才知道,可以将上式通过特征方程求解数列的通项公式求得f(t)=((n−1)t+(n−1)∗(−1)t)n=x(mod 998244353)f(t)=\frac{((n-1)^t+(n-1)*(-1)^t)}{n}=x (\mod 998244353)f(t
2021-07-21 16:18:38
259
原创 2021美团杯A.数据结构
补题:2021美团杯A.数据结构比赛一开始看到不同数个数,张口主席树求区间不同数个数瞬间带歪队友,自己也在错误的道路上越走越远。在中后期重新阅读题面发现每次询问的是全局不同数的个数,想到了最多只有n+1n+1n+1个数,对于每一次询问,我去计算有多少数会被删除,有多少数会被增加。无奈题刷少了,没想到统计不出现数的个数。思路彩蛋:学习了邓老师的代码,结果在看他代码的时候发现了一个手误情况,直接手造hack数据给了jls,成为了热心网友hack了邓老师,邓老师AK IOI,那么我hack邓老师,四舍五入
2021-07-14 00:53:07
471
原创 CF-11D.A Simple Task【思维+状压dp】
思路dp[i][j]:dp[i][j]:dp[i][j]:表示状态为iii,111表示已走到这个点,000表示未走到这个点,此时站在jjj点上的所有方案数。发现我们在计算的时候可能会出现重复的情况,例如在计算1,2,31,2,31,2,3这个环时先按照顺序计算了1,2,31,2,31,2,3,又计算了2,3,12,3,12,3,1,这样可以发现是重复的情况。所以需要dp的限制就变成了:状态为iii,此时站在点jjj上,且这种状态的起点为状态iii中的第一个为1的值。接下来考虑转移,先考虑不合法的状态,
2021-07-09 16:14:53
178
原创 CF-5E.Bindian Signalizing(单调栈)
思路对于每一对答案贡献(i,j)(i,j)(i,j),假定a[i]≤a[j]a[i] \leq a[j]a[i]≤a[j],那么我们考虑枚举每一位iii去计算其贡献。对于每一个iii,令l[i]l[i]l[i]为左边第一个大于a[i]a[i]a[i]的下标,r[i]r[i]r[i]为右边第一个大于a[i]a[i]a[i]的下标,cnt[i]cnt[i]cnt[i]表示从a[j]=a[i](i+1≤j≤r[i])a[j]=a[i](i+1 \leq j \leq r[i])a[j]=a[i](i+1≤j≤
2021-07-08 14:26:07
172
原创 CF1513E-Cost Equilibrium(思维+多重集全排列)
题目链接思路所有数之和sum除以n就是所求的平均值。如果summod n≠0sum \mod n \neq 0summodn=0那么无解,假设x=sum/n.x=sum/n.x=sum/n.那么小于x的值就是汇点,大于x的值就是源点。令小于x的数有cnt1个,大于x的数有cnt2个,那么等于x的数就有n−cnt1−cnt2n-cnt1-cnt2n−cnt1−cnt2个。因为等于x的数无影响,所以可以随便放,那么就是在n个位置中找x个位置的方案数,即是cnt=Cnn−cnt1−cnt2cnt = C
2021-07-06 10:44:57
279
原创 CF1540B-Tree Array
题目链接思路对于这种期望题第一反应就是把每一对逆序对独立出来计算他们的贡献,那么对于一对逆序对(j,i),j>i(j,i),j>i(j,i),j>i就需要考虑在每一种根下面的情况。将逆序对(j,i)(j,i)(j,i)在每一种根下面所有的情况加起来除以nnn,就是逆序对(j,i)(j,i)(j,i)对总期望的贡献值。要让逆序对有贡献,那么就必须要让jjj出现在iii的前面,就是求jjj出现在iii前面的概率。假设现在i,ji,ji,j的LCALCALCA为ppp,那么就有p−ip-i
2021-07-03 17:25:39
225
原创 Atcoder abc110D.Factorization【隔板法】
题目链接思路隔板法:将nnn个球放入mmm个盒子中,盒子可以为空,那么方案数为Cn+m−1m−1C_{n+m-1}^{m-1}Cn+m−1m−1证明:用隔板法相当于在n个球中间插入m−1m-1m−1块板子,但是有可能会出现连续空着的盒子出现,例如“xx|xx|||xx”的情况(用x代表球,|代表插入的隔板)。那么最好的办法就是增加mmm个球,假装每个盒子内至少有一个球。假设某个盒子内球的数量为xxx个,那么盒子内实际的球数为x−1x-1x−1个。相当于将n+mn+mn+m个球分割为mmm个空间,每个
2021-05-07 19:11:45
325
原创 CF 2B. The least round way【dp】
题目链接思路求所经过路径乘积结果为0的最少数目的路径。假设已知所经过的路径以及每一个格子内的值,那么答案可以表示为ans=x1∗x2∗x3∗x4...∗xnans = x_1*x_2*x_3*x_4...*x_nans=x1∗x2∗x3∗x4...∗xn,对每一个值进行质因子分解,那么答案数字对0的贡献仅有一种情况,即2∗5=102*5=102∗5=10这种情况。所以只要考虑从(1,1)(1,1)(1,1)走到(n,n)(n,n)(n,n)的路径上质因子222或555数量更少的路径即可。代
2021-05-06 18:01:33
122
原创 Arcoder abc162E.Sum of gcd of Tuples (Hard)
题目链接思路考虑对于从111到kkk每一个值对答案的贡献。那么就要记录对于111到kkk,每一个gcdgcdgcd值为最终答案的方案数。f[i]:gcd(a1,a2,...,an)=if[i]:gcd(a_1,a_2,...,a_n)=if[i]:gcd(a1,a2,...,an)=i时的方案数。考虑到这个数至少是iii,那么在kkk个数中可以是i的倍数的数只有k/ik/ik/i个,所以最多是kin\frac{k}{i}^nikn种方案。那么这样计算过程中会把iii的倍数的那些方案也会算进去
2021-05-04 23:13:57
216
原创 CF 5C Longest Regular Bracket Sequence
题目链接思路关键在于想到括号匹配用栈维护的一个过程。求最长的子串,所以每一个右括号尽可能匹配能匹配的最近的左括号。dp[i]dp[i]dp[i]:第i位向左匹配能匹配到的最长距离。若当前位置s[i]=)s[i]=)s[i]=)且stack.size()>0stack.size()>0stack.size()>0,那么就说明当前位置的右括号可以匹配到左括号,到这一位的最长距离即是dp[i]=i−stack.top()+1+dp[stack.top()−1]dp[i]=i-stack
2021-05-02 20:31:00
175
原创 CF 380C. Sereja and Brackets【线段树】
题目链接思路对于每一个线段树维护以下三个值:a:结点内没有匹配的左括号数量b:结点内没有匹配的右括号数量c:结点内完成“()”匹配的数量对于每一个结点u维护:tr[u].c=tr[u∗2].c+tr[u∗2+1].c+min(tr[u∗2].a,tr[u∗2+1].b)tr[u].c=tr[u*2].c+tr[u*2+1].c+min(tr[u*2].a,tr[u*2+1].b)tr[u].c=tr[u∗2].c+tr[u∗2+1].c+min(tr[u∗2].a,tr[u∗2+1].b)表
2021-04-29 14:38:51
151
原创 CF 1416 C.XOR Inverse【字典树求逆序对】
XOR Inverse思路将一个数二进制拆位,考虑x和y谁大谁小即看第一个不相同的二进制位上两个数的大小即可。因此贪心的从高位到低位考虑,比较每一位剩余所有数<0,1>对或者<1,0>对的数量的多少判断这一位是否要对所有的数进行更改。主要是讲述字典树求逆序对的方法:1、将所有数插入到字典树中,并将每个数的下标插入到其所对应的每一个0,1路径上。2、最关键的一部分:抓住性质,比较两个数大小是比较两个数第一个不相同的二进制位。那么对于一个结点来说,其左节点的数一定都是小于右节点
2021-04-28 20:53:36
237
转载 CF 1408 D. Searchlights
题目链接思路已经被大佬Pecco整理出来了一个套路.知乎文章链接:https://zhuanlan.zhihu.com/p/268630329代码#include<bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int, int> PII;const int N = 2e3 + 10;const int inf = 0x3f3f3f3f;const int mod = 99
2021-04-28 15:09:13
156
原创 CF 1408 E. Avoid Rainbow Cycles
题目链接思路一个集合内的点都能互相到达,因此对于每个集合建立一个虚拟点,将其余点都与这个点相连那么就可表达集合内的点都能互相到达。简化一下模型就变成了一个二分图,左边有m个点,右边有n个点的二分图。因此只要把左边的每个点和其对应的集合内部那几个点全部相连即可。可以证明这个二分图只要有环就一定是彩虹环。证明:对于一个环v1−e1−v2−e2−v3−e3−...−ek−v1v_1-e_1-v_2-e_2-v_3-e_3-...-e_k-v_1v1−e1−v2−e2−v3−e3−...−ek
2021-04-28 15:00:39
132
原创 Codeforces1498 E. Two Houses
题目链接思路因为这是一张竞赛图,由题目中也可知任意一对点之间有一条有向边。结论:入度少的点一定能走向入度多的点。证明:对图上的强连通分量缩点,变成一个有向拓扑图。考虑两个强连通分量A,B。假设是由A指向B,A中的一个点为a,B中的一个点为b。a的最大入度即为A.size()−1A.size()-1A.size()−1,最小入度也是A.size()/2A.size()/2A.size()/2,考虑b的入度,因为A指向B,那么A中所有点和b的边都是从A指向b,所以b的入度大于等于A.size()A.s
2021-04-07 21:14:46
127
原创 Gym102576 H.Lighthouses
H.Lighthouses假设我们从点x走到点y再走到点z,假设点z在x-y这条线的右侧,那么显然我们再也不会走到x-y这条线的左侧。那么拿区间dp求最大值即可。dp[i][j][0]:dp[i][j][0]:dp[i][j][0]:上一步走到iii,且剩下走的区间范围为[i+1,j][i+1,j][i+1,j]中的任意一点的最大值。dp[i][j][1]:dp[i][j][1]:dp[i][j][1]:上一步走到jjj,且剩下走的区间范围为[i,j−1][i,j-1][i,j−1]中的任意一点的最大
2021-03-26 23:13:52
223
原创 Gym 102576B.Binomial
B.Binomial先通过卢卡斯定理可推出CnmC_{n}^{m}Cnm满足n&m=m时才为奇数。卢卡斯定理Cab=Ca/pb/p∗Camod pbmod p(mod p)C_{a}^{b}=C_{a/p}^{b/p}*C_{a\mod p}^{b \mod p}(\mod p)Cab=Ca/pb/p∗Camodpbmodp(modp)。由题意已知p=2p=2p=2,那么就相当于把a,b按2进制拆位,要想最后的结果是奇数,那么对于每一个Camod pbmod pC_{a\mod
2021-03-26 22:58:01
193
1
原创 Gym - 102956C. Brave Seekers of Unicorns
题目链接思路dp[i]:dp[i]:dp[i]:表示以iii为结尾的所有方案数。假设前一位数是jjj,再前一位数是kkk,连续的三个数满足条件k<j<ik<j<ik<j<i,那么当k=i⨁jk=i \bigoplus jk=i⨁j时便是不合法的方案,需要减去。所以可以列出这样的dpdpdp方程:dp[i]=∑j=1i−1(dp[j]−dp[j⨁i])dp[i]=\sum_{j=1}^{i-1}(dp[j]-dp[j \bigoplus i])dp[i]=∑j=1i−
2021-03-07 23:50:56
295
原创 Codeforces1485F - Copy or Prefix Sum
题目链接参考题解链接思路最基本的dpdpdp状态转移方程都能推。dp[i][j]:dp[i][j]:dp[i][j]:到第iii个数,前缀和为jjj的所有方案数。考虑第aia_iai的两种选择方式:1、当ai=bia_i=b_iai=bi时,前缀和为jjj时:dp[i][j]=dp[i−1][j−bi](−inf≤j≤inf)dp[i][j]=dp[i-1][j-b_i](-inf \leq j \leq inf)dp[i][j]=dp[i−1][j−bi](−inf≤j≤inf).
2021-03-04 19:42:42
255
2
原创 Codeforces 1015 F- Bracket Substring (DP+kmp预处理)
题目链接思路定义题目给定的字符串叫s,长度为2n的字符串叫str。"(“表示+1,“)”表示-1,那么可以通过数字大小来表示括号匹配的数量,0为恰好匹配。dp[i][j][k]dp[i][j][k]dp[i][j][k]:匹配到字符串str第i位,括号匹配正负值为j,对应匹配到字符串s第k位的所有方案数。f[i][0]f[i][0]f[i][0]:在字符串s匹配到第i位,第i+1位填”)“时,在字符串s中所对应的位置。f[i][1]:f[i][1]:f[i][1]:在字符串s匹配到第i位,第i+1
2021-02-10 20:35:33
205
原创 萌新的ACM三月训练总结
整个寒假差不多过去了,寒假的训练也结束了,的确是有一定的进步,但是其中还是有着不少水分的,有部分题目查看了题解啊什么的,现在回过头来再看看,发现什么都没懂,而且新学期的开始课程压力更大了,所以在这边打算制定一个训练计划我发现我买的书蛮多的,所以我想好好攻克一方面的知识点是比较麻烦的,经常学了这本丢了那本的一个状态,这导致我学的过程及其差,今天是3.1,一个新的开始,所以说我打算列出训练计划,从头...
2021-01-28 18:14:08
704
原创 Gym 102900C. Sum of Log(2020上海C)
题目链接思路因为前提条件iii&j==0j==0j==0,所以i和j的任意一位最高位一定不同,那么log2i+jlog_2^{i+j}log2i+j就相当于看i或者j最高位为1在第几位,然后计算贡献。转化为二进制考虑每一位的情况,数据范围只到1e9,考虑通过数位dp来得到所有方案数。如果没有两个位数不一样的其实可以当作默认把小的那个数前面补齐了前导0.dp[i][1/0][1/0]:dp[i][1/0][1/0]:dp[i][1/0][1/0]:在数字n,m的二进制表示下第i位,数字n在这
2020-12-27 14:31:55
192
原创 CF 1459D-Glass Half Spilled(01背包)
题目链接:https://codeforces.com/contest/1459/problem/D思路根据数据范围想到了背包。dp[i,j,k]dp[i,j,k]dp[i,j,k]:到第i个物品,已经选择j个,选择杯子的容量之和为k时,所有杯子中已有水量的最大值。考虑选或者不选:dp[i,j,k]=max(dp[i−1,j,k],dp[i−1,j−1,k−a[i]]+b[i])dp[i,j,k]=max(dp[i-1,j,k],dp[i-1,j-1,k-a[i]]+b[i])dp[i,j,k]=
2020-12-23 17:22:22
280
原创 【kuangbin带你飞】专题十七AC自动机
文章目录hdu3247 - Resource Archiver思路代码hdu3247 - Resource Archiver思路n的数据范围只有10,一开始想的是设置状态dp[i][j]dp[i][j]dp[i][j]表示第一维当前选择好字符串的状态为i,那么第一维最对为(1<<10),此时AC自动机上的状态为j。转移方程即为dp[i∣vis[p]][p]=min(dp[i][j]+1)dp[i|vis[p]][p]=min(dp[i][j]+1)dp[i∣vis[p]][p]=min(d
2020-11-25 23:57:49
249
原创 CF 1446C-Xor Tree
题目链接:https://codeforces.com/contest/1446/problem/C参考博客链接思路一个数字选择异或最小的,对于当前位,一定选择数字相同的,例如3的第一位为000000000000000011,那么第一位尽可能地选择0,就可以注意到从高位到低位,同位相同地一定在一个联通块内,特殊情况就是当前位只有一个0或者一个1,必须选择这一位不同的,所以可以保留只有一个0或一个1的情况。那么就把所有的数先插入到字典树上,然后暴力考虑对于第i位是保留1还是保留0,dfs一下即可。代
2020-11-19 17:00:00
312
原创 牛客练习赛72 C-brz的序列【凸包】
题目链接:https://ac.nowcoder.com/acm/contest/8282/C参考题解:https://blog.nowcoder.net/n/dacb055853684f28ae0ef69a0dbe5ca4思路赛中通过小样例的模拟程序,可以确定最后的数会变成一段到一段之间的平均数之和。例如10 1 8 2 1 7 4 3 8 410 1 1 1 1 1.6 2.2 2.8 3.4 428.0000000000可以发现是第2个数字到底5个数字中间所有的数字变成头尾的平均数,第
2020-11-07 09:32:10
182
原创 2020CCPC绵阳 L-Lottery
CCPC2020-绵阳-重现赛邀请码dce06e265b24ad49题目链接:https://pintia.cn/problem-sets/1322796904464203776/problems/1322798545527595019参考题解:链接思路对于一个连续的段,例如样例 1 1 2 1 3 1,那么全部移到首位能够进位的地方,那么这一段的方案数就是该段首位的数字数+1。光这样做不行,对于有的段,表面上是断开的,实际上是连续的。例如这个样例32 54 25 1表面上这里是断开
2020-11-05 15:22:46
597
原创 ARC 107 D - Number of Multisets
题目链接https://atcoder.jp/contests/arc107/tasks/arc107_d题目描述用N个数使得其总和等于K,这些数必须是12i(i=0,1,2,...,n)\frac{1}{2^i}(i=0,1,2,...,n)2i1(i=0,1,2,...,n)的其中一个。思路dp[i][j]dp[i][j]dp[i][j]:取i个数,和为k的所有方案数。对于取1,那么dp[i][j]+=dp[i−1][j−1]dp[i][j]+=dp[i-1][j-1]dp[i][j]+=d
2020-11-04 08:58:28
417
原创 CF1428F-Fruit Sequences
题目链接https://codeforces.com/contest/1428/problem/F参考题解https://www.cnblogs.com/zkyJuruo/p/13833960.htmlOI爷,永远滴神!思路对于01字符串从右向左遍历,如果当前s[i]=0s[i]=0s[i]=0,那么对序列没有任何贡献,如果s[i]=1s[i]=1s[i]=1,如果出现连续的1,设在第i位该值为h[i]h[i]h[i],那么从当前位到上一次出现h[i]h[i]h[i]之间的值,需要全部加上1 。例举
2020-10-30 20:24:34
220
原创 AtCoder Regular Contest 105 C - Camels and Bridge
题目链接题目描述有n只骆驼过m桥,第i只骆驼负重wiw_iwi,第i座桥的长度为lil_ili,最大负重为viv_ivi,问骆驼队伍长度最短为多少可以通过所有的桥。思路n的数据范围很小,可以暴力解决。根据桥的长度从大到小预处理一下其能承受的重量。dp[i]dp[i]dp[i]表示从第一只骆驼到第i只骆驼的最短距离。dp[i]=max(dp[j]+len,dp[i])dp[i] = max(dp[j] + len, dp[i])dp[i]=max(dp[j]+len,dp[i]),len表示
2020-10-13 17:26:39
343
原创 AtCoder Regular Contest 105 D - Let‘s Play Nim【博弈】
题目链接题目描述有N个书包,每书包内部有aia_iai个石子。两人轮流操作,先要把所有书包内的石子放到盘子里,每次一定要把书包内的石子拿光,可以把石头放到已经有石头的盘子里,然后再对剩余的石子堆数做一遍尼姆博弈,问先手胜还是后手胜。思路1、n为偶数,拿完所有石子之后是一个先手先开始的NIM,那么只要使得所有的值异或为0即可。如果出现背包内的石子数可以两两成对,那么后手一定可以使得任意两个盘子有相同的石子数,这样异或一下是0,后手可以胜利。如果不满足这样的情况一定先手胜利,先手每次挑选当前有石子的背
2020-10-13 12:41:01
327
原创 Atcoder HHKB Programming Contest 2020 D - Squares 思维
题目链接题目描述在二维平面给定一个长度为n的正方形大小区域,需要将边长为a,b的正方形不相交的放入这个区域,求所有的方案数。思路如果两个正方形相交,即可发现其投影在x轴和y轴上的边全部重合,因此就是求边长为a,b的线段在长度为n的线段上不重合的所有摆法的方案数。而且只要这个投影在x轴上不重合或者在y轴上不重合即可。边长为a的边左端点放在0位置上,那么b线段左端点能放的位置就是[a,n−b][a, n - b][a,n−b]上的任意一点,方案数即为n−a−b+1n-a-b+1n−a−b+1。同理可
2020-10-12 11:27:00
164
原创 CF1407E-Egor in the Republic of Dagestan【思维+最短路】
@洛谷的链接题目描述给定一张nnn个点,mmm条边的有向图,每条为白色或者黑色,只有出发点和边为相同颜色时才能通行。求一种对点的标色方案,使得最短路的最大,也可以选择被困在这张图中出不去(-1)。思路考虑反向建边,这样就可以使得边的颜色和点的颜色一致。如果能够有一种方案被困在图中,那么就尽可能的困在图中。所以对于一个点有以下情况:w[x]w[x]w[x]:该点为白色时到该点的最短距离,w[x]=min(w[x],f[x]+1)w[x] = min(w[x], f[x] + 1)w[x]=min(w
2020-09-13 21:38:53
179
原创 CF 1169E. And Reachability 【DP】
题目链接题目描述给定n个数字,m次询问。对于每次询问,给 lll 和 rrr 问是否存在l=p1<p2<...<pk=r(1≤k≤r−l+1),l=p_1<p_2<...<p_k=r(1\leq k\leq r-l+1),l=p1<p2<...<pk=r(1≤k≤r−l+1),对于任意的i(1≤i<k)i(1\leq i < k)i(1≤i<k), 满足apia_{p_i}api&api+1>0a_{p_
2020-09-11 15:13:16
140
原创 HDU6880 Permutation Counting 【思维+dp】
题目链接题目描述存在长度为n的排列,给定一个长度n−1n - 1n−1的排列满足以下两种情况1、ai>ai−1,b[i]=1a_i>a_{i-1}, b[i] = 1ai>ai−1,b[i]=12、ai<ai1,b[i]=0a_i < a_{i_1}, b[i] = 0ai<ai1,b[i]=0现在给一个长度为n−1n-1n−1的b序列,问有多少种排列满足条件思路比赛时没有想到,赛后看了题解。构造方法:初始状态下存在一个1,若b[i]==1,那
2020-09-11 15:12:45
277
原创 Codeforces 1041E. Divide Square 【扫描线】
题目链接题目描述在一个10610^6106x10610^6106的正方形中,给你n条垂直于y中的线和m条垂直于x轴的线,每一条线至少有一个端点和正方形相连。问最后这些组成的线构成了多少个新的小矩阵。思路考虑扫描线的思想,从左到右对平行于y轴的线的每个x进行扫描。每个交点,必定形成一个新的矩形,对于范围为0~1000000的线来说,会额外增加一个区域,那么可以看成在矩形的初始状态就进行了额外的划分。答案就变成了初始所划分好的区域+所有交点数量。先将所有水平的线段读入,根据扫描线的思想差分处理l和r
2020-09-11 15:11:50
242
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人