首页 > 其他分享 >2024 2月

2024 2月

时间:2024-02-28 17:22:27浏览次数:26  
标签:连通 容斥 然后 2024 枚举 考虑 dp

耳分解

qoj3301,正如算法名称,像耳朵一样分解,一个强连通分量是通过一个更小的强连通分量加入一条链形成的,反之,强连通分量也可以通过次缩成一个环,点双也相同。此题直接dp,\(f_s\)表示s集合构成强连通分量的代价,考虑枚举一条链,\(g_{s,u,v}\)表示目前所有探测到的点集合为s,目前如果将u和v连接群里就可以形成强连通分量的代价。做完了

p5776,点双版本

数据结构

p8264,首先考虑n方暴力,直接模拟即可,如何快速进行这个东西,假设我们可以预处理出每个区间进入的值和对应的值的映射,就可以O(1)做,平衡一下复杂度,考虑分块,这样一个询问是根号的,那么如何预处理呢,把映射看成函数的话,一个变换相当于整体向下移动,然后把负坐标的翻转,那么此时翻转的和某些没翻转的一样,并且没翻转的是一个区间。那就好做了,把前面的操作看做一个线,线表示目前的0,记录l,r表示目前没有被替代的区间,就可以做了

线段树处理某些经过区间,或者区间前缀后缀的问题,或者区间限制,考虑线段树单侧递归

p8518,先操作差分,以q为下标建线段树。考虑没有上界的限制咋做,我们找到最小的最右边的位置,如果小于0则以它为0,算后缀和即可。我们发现答案只和最后一次碰壁有关,而且如果极差大于c则一定碰壁,直接二分即可,细节较多

凸性(slope trick)

p3642,把dp看成点值函数,先考虑叶子节点的答案,只有(0,0),考虑叶子节点对父亲的贡献,发现是个类似v字图的东西,叶子合并上去相当于加上这个图像。考虑一般情况,即节点对父亲的贡献,记L,R为斜率为0的那一段的左右端点,len为边的长度。\(x\le L\)的地方斜率肯定\(\leq-1\)所以直接让len=0,\(L\le x\le L+len\)的地方让他到\(L\),\(L+len\leq x\leq R+len\)的地方不用变,\(R+len\leq x\)的地方让他到\(R\)。转化到图上就是最右边一段斜率全变1,权值为0的一段向右平移,再左边一段插一个-1斜率的线,再左边集体抬高len,slope trick轻松做完

数学

p3543,如果没有区间操作相当于直接exgcd,然后分类讨论最优。区间操作我们考虑差分一下,那么就是前面-a,后面+a状物,其实就是配对,最后要求全变0,我们考虑先每个都按自己取最优,然后可能不满足\(\sum{x}==0 (x=count(a))\)我们考虑调整,反悔贪心即可

cf906d,再次看这个题,发现很多地方不懂,要严格遵循欧拉公式,不要在<mod的时候还去加mod,ksm里也要遵循欧拉公式

p7325,首先有两个结论,设\(f_i\)为正常的fib序列,\(F_i\)为特殊的,那么\(F_i=bf_i+af_{i-1}\)数学归纳一下就行,然后fib循环节模m最长不超过6m。如果m和某些东西互质,那么就做完了。考虑a,b,m先都除掉gcd,然后如果我们知道gcd(a,m),gcd(b,m)就很好做,发现\(f_n\)和\(f_{n-1}\)互质,然后发现gcd(a,m)是\(f_n\)的因数也就是是gcd(\(f_n\),m)的因数,发现gcd(\(f_n\),m)是a的因数也就是是gcd(a,m)的因数,这两个gcd想到,b也同理,所以我们仍然可以查表。

构造

qoj1840,首先如果数列长度没限制可以这么填,-1,1,1...但是有限制,我们考虑如果先随便填一些小数,或者0,可以堆到很高的一个势能(暂时叫这个),值为x的方案数有这样一个性质,x越大方案数越小,所以我们瞎填一些小数,然后从小到大去贪心的填剩下的,感觉正确率很高,用while(1)保证一定正确,否则超时

长链剖分

uoj84,一种链剖分技巧。性质1,如果dfs每次遍历整个次大长链,总的复杂度是O(n)的。性质2,跳链跳根号次就能到根,这个题考虑其实是一个点不瞬移的,主体肯定到某个点停一下,那么我们枚举下一个停的点即可,长剖优化可到O(n)

串串

p6793,考虑SA,如果能够建出后缀树,那么按LCA从深到浅匹配最好,对应到SA上就是height数组从大到小,用并查集

计数中乘法等于卷积,容斥系数和方案数的乘积

p10104,花了我5天时间,单独开一篇不为过,首先m=0的话就是从高位到低位枚举,全填的话是子问题,考虑不全填怎么计数,枚举最长的全填序列,然后下一位填自由元,两个变量表示与全填的奇偶性,可以递推。接下来考虑原问题,我们一个显然的想法是容斥,边集容斥,然后发现其实有用的只有连通块怎么划分,考虑算一个连通块的容斥系数(类似于-1的几次方的和),一个方案就是所有连通块容斥系数之和,假设我们知道了连通块的容斥系数之和怎么做。考虑记录连通块的有贡献的那个点的集合和连通块们占领的集合,每次枚举一个连通块转移,发现复杂度很爆炸。发现如果a是从小到大的话,可以枚举i表示mask中<=i的位表示贡献点,>i的表示占领点,容易转移。那么接下来就是如何求连通块系数。我们的系数是关于连通块联通的一些东西,那么可以考虑随便选-一定不连通的,做完了

agc041_f,花了也将近5天,首先考虑容斥有多少点不被覆盖,称其为关键点,集合容斥是简单的,然后发现每个关键点相同的列没车,我们考虑枚举关键点列集合,去dp容斥系数和方案数乘积的和(把这个东西叫做val),那么我们只需要考虑这一行放几个关键点,如果不放对val的贡献是\((-1)^{0}*2^{len-s}\),放x个的话方案数是1,其实就是容斥系数之和,是-1(如果集合大小大于0的话,否则是0),然后这样的话无法确定集合内的每一列都是有关键点的,所以考虑再容斥,枚举一定没有关键点的(称其集合T),减去就行,这样的话发现如果t=s那么贡献是0,否则有-1的贡献,分两个数组记录s是否等于t,然后笛卡尔树上dp就行

dp

loj6069,可以不用立即算出某些东西,把他当成一个势能(系数)放在一维状态里,用到的时候可以立取

cf1603,发现排好序一定不影响,然后变成选区间,然后变成选前缀,然后暴力dp,n6方,考虑优化,枚举最小值可以根号,总和的一维可以减去最小值和个数的乘积,做完了

势能dp,用到的时候再算

at_wtf19_b,就差一点吧也许,最重要的一点,将区间转换成单点,定义\(s_i\)为前缀和\(mod 9\),那么相当于\(s_{l-1}=s_r\)发现可以给编号,离散化后,编号相同的方案数是不同的方案数+1,可以轻松算出,然后枚举新编号集合直接状压,ans算答案一开始直接算好,dp数组算系数。

计数

arc154_e,神奇题,首先考虑对于一个固定的p怎么做,树状数组?有更简单的做法,考虑算i的系数,那么就是i为r的时候+,否则-,那么其实就是下标小于i的个数减去值域小于pi的个数,然后化一下式子就是i方减去 i乘pi,考虑算pi的期望位置,然后最终乘总数就是和,发现被操作过的话,期望位置就是\(\frac{n+1}{2}\)概率是好算的。

agc056_b,首先考虑对xi计数,发现不好弄,考虑对pi计数,发现会重,考虑放最前面,区间dp即可

p10103,从n-m个人选m个人到前m个位置,再乘fac,然后后面的有n-2m个受限制的,m个自由的,考虑递推。设\(f(n,m)\)表示n个受限,m个自由,一个自由的可以待在自己位置,或者去别人位置(等于一个受限的),发现是两个加起来,类似组合数。一个受限的可以去自由的位置,或者传统错排,做完了,考虑分块

贪心

p9600,首先ci要么x能到要么y能到要么是0,那么其实就是
CF436E Cardboard Box,只不过要保证连通性,那么分类讨论一下,更好的不用堆的cbox做法是,先考虑选两个的,然后如果选一个的选两个比这个优肯定选一个(集合名字)的一个,就没了

p8860,首先如果我们让每个边的边权等于第一次被访问的时间,则边权两两不相同,此时我们要求出那个排完序后字典序最大的路径留下,可以主席树+dij,但是也可以贪心,贪心就直接看dij的堆谁先扩展,这个是对的,可以考虑证明

字符串

arc151e,分类讨论,如果有公共子串就直接输出一个可得到的答案,否则最短路求多少步得到公共子串,求公共子串可以hash

组合意义

p4921,首先考虑钦定k个配对的,选k个座椅,选k对情侣,情侣的位置2的k次方,情侣座位顺序fac[k],那么剩下的都不配对,考虑递推,容易发现是简单的

标签:连通,容斥,然后,2024,枚举,考虑,dp
From: https://www.cnblogs.com/ciuim/p/18041096

相关文章

  • 2024牛客寒假算法基础集训营6 题解 ( A,B,C,D,E,I)
    2024牛客寒假算法基础集训营6题解(A,B,C,D,E,I)A 宇宙的终结题意找到\([l,r]\)区间中有多少数恰好等于三个不同素数的乘积思路数据范围很小,可以考虑暴力,遍历\([l,r]\)区间内每个数,拿每个小于当前数的素数一直往下除,判断是否存在能被恰好3个素数整除的情况代码/********......
  • 2024-02-28:用go语言,有一个由x轴和y轴组成的坐标系, “y下“和“y上“表示一条无限延伸
    2024-02-28:用go语言,有一个由x轴和y轴组成的坐标系,"y下"和"y上"表示一条无限延伸的道路,"y下"表示这个道路的下限,"y上"表示这个道路的上限,给定一批长方形,每一个长方形有(x1,x2,y1,y2),4个坐标可以表示一个长方形,判断这条道路整体是不是可以走通的。以下为正式题目:图片在计算......
  • 2024-02-29-Linux高级网络编程(1-计算机网络概述)
    1.计算机网络概述1.1计算机发展简史最早的广域网:在通信双方或多方之间,通过电路交换建立电路连接的网络。1.1.1电路交换特点建立链接->使用链接->释放链接物理通路被通信双方独占1.1.2电路交换适用于电话网​计算机数据是突发式出现在数据链路上的,而电路交......
  • 2024.02.22
    1.原始jsp模板查看初始jsp创建模板:File---Setting---Editor---FileandCodeTemplates---Other---Jspfiles---JspFile.jsp,可在⑤处重新定义jsp模板,编写完成后,Apply,OK,下次在新建jsp文件时,即可建立所定义模板的jsp页面。 2.重新定义jsp页面模板    File---Sett......
  • 2024.2.14
    HomeView.vue<template><el-containerstyle="min-height:100vh"><el-asidewidth="sideWidth+'px'"style="background-color:rgb(255,255,255)"><!--width="sideWidth+'px'&......
  • 2024.1.25
    想要使用IDEA去连接mysql等数据库需要先IDEA里先下载驱动,一般当你去配置的IDEA连接数据库这个过程,IDEA会提示你没有安装驱动,并问你需不需要自动下载这里如果你们遇到自动下载的途中,下载到一半进度条卡住了,或者直接下载失败,可以先到maven中导入相应的包,然后再回到上图重新下载驱......
  • 『周记』2024第八周周末
    『周记』2024第八周周末  复盘周五到周日的flag:周五参加170HomeworkParty周六早上去健身房完成61B的lab5和hw2完成170的hw5完成188project3的前半部分补三门课对应的recording/notes订正所有作业和考试完成所有discussion并且对应solution整理计时完......
  • 2024年2月 杂题记录
    [ARC122E]IncreasingLCMs正序构造的话,我们是不知道前面有什么的,于是我们倒序构造。当我们考虑最后一位时,前面的位都是知道的。设\(v=\operatorname{lcm}(x_1,\dots,x_{i-1})\),则有\(v<\operatorname{lcm}(v,x_i)\),即\(\gcd(v,x_i)<x_i\),这等价于\(\operatorname{lcm}_{j\ne......
  • 2024.01.18
    然后打开IntelliJIDEA在File中找到Open双击进入之后进入OpenFileorProject中,然后一步一步按照自己要导入项目文件所在位置进行查找,然后点击ok 之后会弹出一个小的页面,让选择是在这个窗口打开(ThisWindow),还是在一个新的窗口打开(NewWindow)。(选那个都可以),我一般是选择在......
  • 2024.01.27
    idea中SQL语句经常提示SQLDialectisNotConfigured,主要是我们没有配置数据库在File---->Setting--->Languages&Frameworks--->SQLDialects中,选择对应的数据库,如MySQL,之后点击保存即可。这样的一个好处还有一个,就是idea直接可以识别你数据库中的字段了,按着ctrl然后点击代码......