首页 > 其他分享 >传奇团子师傅题解

传奇团子师傅题解

时间:2023-10-04 14:11:08浏览次数:38  
标签:传奇 题解 独立 建图 模拟退火 团子 最大

传奇团子师傅题解(模拟退火)

申明:

本篇题解借鉴了:

https://www.luogu.com.cn/blog/SDNetFriend/solution-p7218

这篇博客(主要在bitset部分)。

题意:

给你个矩阵,包含三种颜色,一个美丽串要求你横着或者竖着或者斜着串成一串的三个颜色有特定的顺序,求拿取最多美丽串的方案是什么。

题目分析:

  1. 先考虑不同的较为优秀的方案区别在哪里。显然的是,他们不同在于至少存在一个颜色会被同时占有。否则的话我肯定可以两个都选择使得答案更优秀,不符合上述假设。
  2. 有了情况一的结论,于是我们就可以想到“有你没我,有我没你”的一种抽象转化。然后我就开始往二分图方向去想,却发现一种颜色会用多次(反正就是很难受),最终又想到了一般图的最大独立集。
  3. 再次转化,思考怎么建图。显然的是我们不能让共同占有同一个位置的美丽串放在一种方案中,所以建图大方向肯定是向着这边的。因为是以“串”为单位建图,又考虑到每个串是规定了顺序的,以及存在着“反转也成立”的情况,最简单的建图应该是考虑一定在一个串正好中间的 $w$。然后呢,对于能够结成一个串的三个位置上打上这个串的 $id$ 做标记以便于连边,这个过程可以使用 vector 来解决。
  4. 现在转化为求最大独立集了,在这个图上求最大独立集就是在他的补图上求最大团。直接硬做的话,可能会达到一次求解 $n^{n/3}$ 这个复杂度,而这个 $n$ 看样子有点大(当然我没学过Bron-Kerbosch也不会做)。于是用模拟退火(听说爬山也可以)来考虑。(但其实反正是提交答案题,不会有太大关系吧)
  5. 现在开始考虑模拟退火怎么做了。首先肯定要随便跑出来一个东西作为最初的解吧。然后每一次随机一个点,要求这个点在目前做出的最大独立集中没有出现过。然后把他选进最大独立集中,把和他有矛盾的点退掉就好了。
  6. 优化:首先就是参数的问题(调参太痛苦了,所以我嫖的其他题解相对较好的参数)。其次,可以用数据结构来维护没选到的这个点的集合。最后,也像我觉得写得较好的那偏题解一样,可以用一个参数k来放大概率。

代码:

其实我觉得我代码真的不行,会卡很久很久(大概一个午休),建议要用要抄的话可以看看别人的代码,真的不如爬山写得好(蒟蒻的眼泪)。

标签:传奇,题解,独立,建图,模拟退火,团子,最大
From: https://www.cnblogs.com/linghusama/p/17742208.html

相关文章

  • 【UVA 442】Matrix Chain Multiplication 题解(栈)
    假设您必须计算一个表达式,如ABCDE,其中A、B、C、D和E是矩阵。由于矩阵乘法是关联的,所以执行乘法的顺序是任意的。然而,所需的初等乘法的数量很大程度上取决于求值顺序您可以选择。例如,设A为5010矩阵,B为1020矩阵,C为205矩阵。有两个计算ABC的不同策略,即(AB)C和A(B*C)。第一个需要1500......
  • Hadoop问题解决记(2)
     1.发现问题在对HBase集群进行压力测试过程中发现,当实际写入HBase和从HBase查询的量是平时的若干倍时(集群规模10~20台,每秒读写数据量在几十万条记录的量级),导致集群的读写出现一定程度的波动。具体如下:1)写端抛出以下异常信息:org.apache.hadoop.hbase.client.RetriesExha......
  • Hadoop问题解决记(1)
    最近在测试HBase时遇到一个非常奇怪的问题:集群有7台机器,其中1台Master,6台RegionServer。但是Master只能控制其中1台RegionServer,而无法控制其他5台RegionServer。打开master的日志文件,发现以下错误信息:2011-04-2216:37:21,242WARNorg.apache.hadoop.hbase.master.Assignment......
  • 『题解』P9688
    题目传送门思路:设有两个颜色\(x_1x_2\),两端分别为\(l_1\)\(r_1\),\(l_2\)\(r_2\)。通过观察可以发现,若满足\(x_1<x_2\)且\(r_1>l_2\)则\(x_1x_2\)一定是单调不下降的。那么我们可以先预处理出一个颜色可以与前面的哪些颜色构成单调不下降,然后用dp求出最终答案......
  • 题解 Coloring Brackets
    题目链接对于括号问题,考虑区间\(dp\)。这道题的括号序列是固定的,所以直接找出每个括号对应的括号在进行转化即可。设\(f_{l,r,0/1/2,0/1/2}\)表示\(l\simr\),左括号不染色/染红色/染蓝色,右括号不染色/染红色/染蓝色的方案数。若\(l,r\)是一对匹配括号,那么f_{l,r}便可以......
  • CF1661D Progressions Covering 题解
    最详细的题解题目传送门:ProgressionsCovering阅读前人题解时,限于个人能力有限,有一些地方想了好一会儿才懂。发现很多题解都是在@SDLTF_凌亭风等作者基础上延伸,但详细程度依旧有限,尽管这篇题解亦是站在他们基础上延伸的,这篇题解更为详细的点明了很多地方。本人第一次写题解,......
  • 洛谷 Power Tree 题解
    题目链接PowerTree分析将叶子节点按dfs序重标号后,每次控制操作可以转化为将子树内叶子节点所在区间加(或减)一个数不难可以想到将叶子区间进行差分每次对\(l\)到\(r\)的操作可以转化为将\(l\)上的数转移到\(r+1\)上每次操作后差分数组的和不变将所有点权变为\(0\)......
  • [题解] CF632F - Swimmers in the Pool
    CF632F-SwimmersinthePool题目传送门题意给定一个大小为\(n\timesn\)的矩阵\(A\)。假设\(A\)满足以下条件,那么称该矩阵为MAGIC,否则为NOTMAGIC,并输出对应的属性(即\(A\)是MAGIC还是NOTMAGIC)。$A_{i,j}=A_{j,i}$;$A_{i,i}=0$;$A_{i,j}\le......
  • GDCPC2023 B , D , F , K 题解
    和队友一起打的2023年广东省大学生程序设计竞赛重现赛,写了B,D,K,胡了一个F。D题目大意随着广东的建设与发展,越来越多人选择来到广东开始新生活。在一片新建的小区,有\(n\)个人要搬进\(m\)栋排成一行的房子,房子的编号从\(1\)到\(m\)(含两端)。房子\(u\)和\(v\)相邻......
  • 题解 [CSP-S 2021] 括号序列
    题目链接对于括号题,基本是栈匹配没有匹配的左括号和区间\(dp\)两个方向。这道题括号序列并不确定,只能用区间\(dp\)搞。如果直接设\(f_{l,r}\)表示\(l\simr\)的合法括号序列,那么由区间\(dp\)的套路可知,需要枚举中间点进行合并,那么\(()()()\)的情况就会出问题,原因是......