首页 > 其他分享 >2024.1 做题记录

2024.1 做题记录

时间:2024-01-12 23:24:09浏览次数:28  
标签:2024.1 10 插值 记录 贡献 考虑 我们 从小到大

P2423 [HEOI2012] 朋友圈

考虑 \(a \oplus b \bmod 2 = 1\) 的限制实际上转化为不同左侧点最多选择两个,因为奇偶性需要不同。

暴力枚举左侧的点集,考虑 B 侧的点,首先需要跟左侧点集任意有边,之后内部还需要是完全图。

B 侧选定点的最大团这个东西是不好做的,但是我们可以借助边的性质。

我们如果按照 B 的奇偶性来分成两类,因为 \(a \oplus b \bmod 2 = 0\),所以集合内部点两两有边,而第二类又在两个集合中做出了连边。

不难发现如果除去团内的边,实际上这是一张二分图,我们将二分图取补图,这仍然是一张二分图。我们发现,如果在这张图上求 最大独立集,那么在原图上即为最大团。

团要求两两有边,而独立集要求两两没边,将补图还原后两两间必然有边,即为团。

  • 引理:最大独立集 = $n \ - $ 最小点覆盖。

最大独立集事实上想要从全集中去掉一些点(尽量少),使得两两间没边,也就是想找最少的点破坏掉所有边(如果有边存在必然有点相连)。正好对应了最小点覆盖。

而最小点覆盖又等于最大匹配。所以我们对补图求最大匹配然后计算即可。

时间复杂度 \(O(|A|^2|B|^2)\)。

code

BZOJ #4664

考虑方案数从前到后并不好表示,因为如果想保证混乱度 \(\le L\),那么需要记录前一项是什么,还需要记录选了什么,这样的话状态数也许是 \(O(2^nn)\) 的,显然无法接受。

考虑一个插块 dp,设 \(f_{i, j}\) 表示从小到大插入到第 \(i\) 个数,分成了 \(j\) 段的方案数。

转移经典,但是我们发现无法保证混乱度,考虑再设 \(f_{i, j, k}\) 表示从小到大插入到第 \(i\) 个数,分成了 \(j\) 段,总混乱度为 \(k\) 的方案数。

看起来到这就结束了,不过我们发现我们很难考虑一次插值的贡献。事实上,贡献是与邻项强相关的,然而我们的状态并没有记录邻项的值。

考虑一边插值一边计算全局的贡献。具体来说,从小到大给了我们很好的性质,考虑这样一个式子:

\[(a1 - 0) + (a_2 - a_1) + (a_3 - a_2) + .. + (a_k - a_{k - 1}) = a_k \]

事实上这就是差分的前缀和。因为我们从小到大插值,那么未插的地方数字一定比当前值大,为了构造出它,我们给所有连通块的边界位置插上 \(a_i - a_{i - 1}\) 的贡献,一边插值一边算出了整体的贡献。

实现细节上,因为边界只有一边可以产生贡献所以需要再开一维表示边界。

code

accnoi5709 k 大值

事实上也许跟基数排序没什么关系。

考虑值域大概是 \(10^{18}\),空间正好容得下 \(10^6\),按照 \(10^{12}\) 确定答案在哪个块里,再按照 \(10^6\) 分块,确定在哪个 \(10^6\) 块里,下一次内部开桶即可。

ps: 事实上值域不是 \(10^{18}\),而是稍大一些,实现上可以适当调大块长。

P1640 [SCOI2010] 连续攻击游戏

纯题。原本以为是 2-sat 类状物。

将每个阶段设出点,然后每个武器练两条边,只能用一次正好满足匹配的意思,直接匈牙利即可。

标签:2024.1,10,插值,记录,贡献,考虑,我们,从小到大
From: https://www.cnblogs.com/Rainsheep/p/17961771

相关文章

  • openwrt编译记录
    最近在做openwrt的开发,因此这里记录一下过程:这里我用的编译环境是wsl2,虚拟机时ubuntu20.04,因为wsl可以更充分的使用电脑性能,这样编译的快点,实测我编译rk3568的openwrt固件大概就花了三个小时的样子。下面记录下步骤:1、配置上网环境这个步骤是必须的,不然会极大概率失败,我之前失......
  • 2024.1.12 闲话
    第一次写闲话,写得不好请见谅。最近总算是从一个深渊中脱离出来了。我意识到,现在自己无论是喜欢些什么,还是想要些什么,一些并不是现在所必需,也并不是现在该去关注的东西本就不应该占据我太多的时间。有句话说,其实一个人需要的东西很少,但是想要的东西很多。我觉得这话能够解释许许......
  • 2024.1.12做题纪要
    2-SAT考场的时候直接不考试去学了,板子还挺简单的。SOV#include<bits/stdc++.h>intN,M;intcnt,head[2100000],next[4100000],to[4100000];voidAddEdge(intu,intv){++cnt;next[cnt]=head[u];head[u]=cnt;to[cnt]=v;}boolvisi......
  • 2024.1.12-学习进度笔记
    今天,我尝试安装了git并尝试安装了PaddleOCR。 参考:https://blog.csdn.net/mukes/article/details/115693833参考:https://gitee.com/paddlepaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/quickstart.md参考:https://gitee.com/paddlepaddle/PaddleOCR/blob/release/2.6/doc/do......
  • Spring学习记录之GoF之代理模式
    Spring学习记录之GoF之代理模式前言这篇文章是我第二次学习b站老杜的spring相关课程所进行的学习记录,算是对课程内容及笔记的二次整理,以自己的理解方式进行二次记录,其中理解可能存在错误,欢迎且接受各位大佬们的批评指正;关于本笔记,只是我对于相关知识遗忘时快速查阅了解使用,至......
  • MySQL记录锁、间隙锁、临键锁(Next-Key Locks)加锁过程
    innodb一定存在聚簇索引,默认以主键作为聚簇索引有几个索引,就有几棵B+树(不考虑hash索引的情形)聚簇索引的叶子节点为磁盘上的真实数据。非聚簇索引的叶子节点还是索引(id主键值),指向聚簇索引B+树。锁类型:共享锁(S锁):假设事务T1对数据A加上共享锁,那么事务T2可以读数据A,不能修......
  • 随笔记录-mysql 导入
     mysql-hlocalhost-utest-P3306-p 459 mysql-h192.168.1.12-utest_user2312-P3306-pLOADDATALOCALINFILE'/home/hctest/load_41_10.txt'INTOTABLEt15fieldsterminatedby',';[root@localhosthctest]#catuid_mysql.sh#!/bi......
  • pyside2 一些记录
    QComboBox是一种常见的Qt控件,用于显示一个下拉列表,并提供用户选择。QComboBox提供了多个信号选项,用于在用户与下拉列表交互时触发。下面是一些常用的QComboBox信号选项以及它们的区别:currentIndexChanged(int):当当前选项的索引改变时触发。参数是新的索引值。这个信号在任何情况......
  • java实体类中给引用类型对象直接赋值报错记录
    实体类TestModel,Attachment类也是一个实体类packagecom.sinochem.it.model;importcom.alibaba.fastjson.JSONObject;publicclassTestModel{intage;Stringname;JSONObjectobj;Attachmentattachment;publicAttachmentgetAttachment(){......
  • 一次生产 KubeSphere 日志无法正常采集事件解决记录
    作者:宇轩辞白,运维研发工程师,目前专注于云原生、Kubernetes、容器、Linux、运维自动化等领域。前言2023年11月7号下午,研发同事反馈,项目线上日志平台某个服务无法查看近期的日志。我登上KubeSphere平台进行查看,发现日志收集展示停留在10月15号那天,而其它的服务是正常......