首页 > 其他分享 >NOIP GRAPH

NOIP GRAPH

时间:2024-07-12 20:08:34浏览次数:16  
标签:存储 mathbf NOIP GRAPH 餐巾 最小 干净 SAT

NOIP GRAPH

1. 可持久化并查集

直接用可持久化线段树维护可持久化数组

2. 基环树

一种出题人经常拿来强行增大题目难度的工具。

可以通过断边或者分讨的方式处理。

3. 2-SAT

2-SAT 使用拆点表示 bool 取值,用有向边代表变量之间推导的关系。

图中强连通分量就代表了一套等于关系,里面所有变量取值都相等,对应里面所有包含的点所代表的赋值方式都同时成立或者不成立。这样,我们缩点之后用逆 Topo 序。

P6378 Riddle

每个点有选和不选两种选择,题目给出的限制信息就是一种推出其他状态的方式,可以用 2-SAT 建模。但是我们发现我们需要给集合其他部分连边,这样就太多了,我们有一种优化:

Trick 前缀和优化:做一个前后缀和,直接朝上面连。

P3825 游戏

这个是笔者刚刚胡的

观察到原题目等价于有很少点是 3-SAT 的 2-SAT。这种点非常少,可以考虑暴力枚举所有这种点不能取哪一个,然后跑 2-SAT \(\mathcal O(3^d(n+m)) = 6.5\times 10^8\)


与之相近的,还有差分约束,是借助 \(x_i\le x_j+\mathbf{edge}(j\to i)\) 来计算一系列不等式组的方法。其实跑最短路算法的过程,就是不断地进行松弛使得所有边都满足上述条件的过程(除非有负环,否则肯定可以全部满足)。

4.网络流

重点不在于打板子,反正又不可能卡 Dinic。 重点在于建图。

P2766 最长不下降子序列问题

建图,我们要秉持一种算贡献的思路,就是一点流量要流到终点成功贡献出去的话,就必须借助一些桥梁,就是要满足一些限制条件。所以对于统计方案的题目,我们建图的思路也应该是一点流量通过的路径就应该是一种合法方案。

先考虑我们应该把每一个元素作为桥梁,表达只能选择一个,可以用常见技巧:拆点

以下,设序列的最长不下降子序列长度 \(len=\max_{i=l}^r{f_i}\)

所以,以第二问为例:令 \(f_i\) 为以 \(i\) 结尾的最长不下降子序列长度,如果:

  • \(f_i\) 满足 \(f_i=len\) ,那么,这个点是一个合法方案的终点,应该连边 \(\mathbf{out}(i)\to \bf T\)

  • \(f_i\) 满足 \(f_i=1\) ,那么,这个点是起点,应该有 \(\mathbf{S}\to \mathbf{in}(i)\)

  • 如果 \(a_i\le a_j,i<j,f_i+1=f_j\) ,那么,从 \(i\) 就可以一步转移到 \(j\) ,连边 \(\mathbf{out}(i)\to \mathbf{in}(j)\)

UVA1660 电视网络

点连通度可以通过拆点转化成求最小割。

所以,怎么求最小割???


Theorem 最大流最小割定理

一个网络的最大流等于最小割。


这个结论可以通过跑网络流算法的过程来理解。因为一条增广路的流量其实是由最小流量边限制的,当跑完之后最小流量的边就全部满流了,相当于全部被割掉了,当全部增广路都没有的时候,说明 \(S\) 和 \(T\) 已经被分成两部分了。

P2598 狼和羊的故事

就是要把原图上两个颜色块分开,所以考虑用最小割,把狼全连到 \(T\) ,羊全连到 \(S\),狼羊直接交互的地方边权为 1,其余部分为 \(+\infty\)

P1251 餐巾计划问题 [!]

遇到这种限制,我们可以用最大流的最大性进行满足。

那么,在网络中流动的东西,也就是餐巾,他其实是有状态的,要么是干净的要么是脏的,然而”脏的“流,我们是不允许他产生贡献的,他必须通过快洗或慢洗转换成干净的流,然后才能贡献。

我们为了分别满足每一天的要求,每一天都要收集贡献,但是每一天可能同时存在干净的流和脏的流,但是我们是没办法在流上打标记的,所以为了区分,我们把每一天的餐巾存储库拆成干净存储库和脏餐巾存储库,我们有以下连边:

  • 从 S 向 每一天的干净餐巾存储库连 INF,p 的边,表示可以购买来填充干净餐巾存储库

  • 从 每一天的干净餐巾存储 向 T 连 \(r_i\) ,0 的边,表示使用了这些餐巾

  • 从 S 向 脏餐巾存储连 \(r_i,0\) 的边,表示今天产生了 \(r_i\) 脏餐巾(前面的已经贡献给 T 了)

  • 从 脏餐巾存储向 m 天之后的干净餐巾存储连 INF,f 表示快洗

  • 从 脏餐巾存储向 n 天之后的干净餐巾存储连 INF,s 表示慢洗

  • 从 脏餐巾存储 向 明天的脏餐巾存储连 INF,0 表示不洗

显然根据最大流的最大性,每一天会且仅会产生 \(r_i\) 脏餐巾,上面的方法显然正确。

标签:存储,mathbf,NOIP,GRAPH,餐巾,最小,干净,SAT
From: https://www.cnblogs.com/haozexu/p/18299315

相关文章

  • NOIP DP
    NOIPDP本章选用题目重做的方法进行复习会选择有价值的题目重做1.数位DPP2602数字计数Trick典型转换:前缀和转换通过从高到第枚举数字的方法进行统计。这是很常见的限制数字范围的方法。P4127同态分布所以数位DP开始推导的时候通常是从暴力开始的,开始的时候就是枚举......
  • noip ds
    Summaryscoi/noipds1.吉司机线段树平常我们的线段树处理问题的时候,其实已经有体现这样的思想:如果当前区间是全部都被影响的,那么打上tag返回,如果是全都没有被影响的,那么直接返回,如果是一部分被影响的,直接暴力向下递归直到前两个条件满足。但是这种处理方式适用于影响的数一定......
  • P1065 [NOIP2006 提高组] 作业调度方案
     首先纠正一下题目错误,红色框应当为3-1,蓝色框应当为3-2 简单概括一下上述题意,首先看输入案例和输出案例代表哪些东西:另外注意以下约束条件对同一个工件,每道工序必须在它前面的工序完成后才能开始;同一时刻每一台机器至多只能加工一个工件。在保证约束条件 (1.)(2.)......
  • Graphrag: Hello World !
    这两天抽空玩了一把 Graphrag, 记录一下测试步骤。 先决条件:    Python3.10-3.12  备注: 以下所有脚本都在PowerShell环境下运行1.首先安装一下 graphragpython包 pipinstall--trusted-hosthttps://mirrors.huaweicloud.com-ihttps://mirrors.h......
  • C# winform e.Graphics.DrawString 旋转打印一例
    前段时间的合格证标签打印老是卡纸,车间将纸竖过来放卡纸少很多,程序也要做修改,在原程序上加了以下两行代码;e.Graphics.TranslateTransform(285,685);e.Graphics.RotateTransform(-90.0F);第一行的两个坐标,要一点一点调试,没有找到什么科学的......
  • [NOIP2014] 解方程
    思路首先我们可以观察到\(n\)和\(m\)与\(a_i\)相比小的很多,所以我们可以考虑直接暴力求解但是\(a_i\)太大了,所以如果需要直接计算的话需要全程使用高精度算法。因为高精度算法代码量有大速度又慢我们可依考虑将\(a_i\)转化为一个极大的指数取模的结果,因为只有是模数的......
  • 关于cartographer在github中的文件分配
    Cartographer是一个开源的库,用于2D和3D的SLAM。在Cartographer项目中,地图构建的数据传入和处理通常分布在几个不同的组件和文件夹中。以下是一些可能包含相关代码的文件夹和组件:1.**传感器驱动**(`cartographer/sensor`):这个目录包含用于处理不同类型传感器输入的代码,例如......
  • NOIP2024模拟2
    NOIP2024模拟2都不会,哈哈哈我在此发表暴论,在\(T4\)放签到题的都是SB。做不出来的更SB。T1:酸碱度中和签到题。排序,二分答案,记录一下这一组的最小的,最小的和最多的差大于二倍答案就新开一组。T2:聪明的小明状压。50pts是显然状压,考虑延续其思路。压出状态发现只有......
  • P1039[NOIP2003提高组]侦探推理
    暂时未完成qwq[NOIP2003提高组]侦探推理(这道题思路很简单,但是细节一大堆qwq,调吐了QAQ这个题一共就20个人,星期一共就有7种可能,100句证词,所以可以直接暴力枚举,看一看假设第$i$个人是罪犯(guilty),今天是星期$j$,那么一共有几个人说了谎话。然后就好了awa…………了吗……这......
  • P1081[NOIP2012提高组]开车旅行
    前两天老师还让我们狂做紫题,为什么今天就要求我们对这一道蓝题打暴力qwqupdata:今天突然看到,这道题也是紫题了qwqP1081开车旅行这道题一看就是dp一类的题,然后就会很顺畅的想到倍增awa首先,看一下暴力怎么打。这道题是当年的T4,然后有整整70分的暴力分,这是十分可观的awa。所......