首页 > 其他分享 >BJOI 2018 解题报告

BJOI 2018 解题报告

时间:2023-12-31 22:01:22浏览次数:35  
标签:BJOI2018 要么 BJOI 个数 解题 2018 区间 考虑 deg

P4427 [BJOI2018] 求和

谔谔题。这个问题看上去很不可维护,而且让我想到了 P5305 旧词。结果发现怎么 \(k\le50\),那我直接跑 \(50\) 遍不就好了?

P4429 [BJOI2018] 染色

神仙题。考虑先用一些比较简单的情况搞到一些性质继续研究。那我们不妨只对原图黑白染色,得到性质“原图必为二分图”;然后显然每个连通块分开研究是完全可以的,因此只考虑一个连通块即可。

接下来可以从每个点本身开始考虑。笔者最开始考虑的是递推,去探究“假设”删去一个点以后的图和原图的关系。然后我们发现以下几个小性质:

  • 所有的 \(\deg{u}\le1\) 的点均可忽略不计。
  • 一条链或一个偶环必然有解(前者为后者引理)。

想到把图拆成若干个极小的偶环,然后考虑两个偶环相交时的情况。

1.交集为一个点。这个容易证明必不可能,构造一个诱导链就可以了。
2.交集为一条路径。这个情况下会产生一些 \(\deg\ge3\) 的点,而这样的个数万万不能超过两个,否则,任取两个 \(\deg\ge3\)(不妨设就是 \(3\) 吧)的点 \(u, v\),它们的所有路径的交点一旦在除了 \(u, v\) 以外的点相交,会出现两个环相交的尴尬情况。因此 \(\deg\ge3\) 的点不会超过两个。

然后考虑 \(\deg\ge4\) 的点,有了上面的引理,可以发现绝不存在 \(\deg\ge4\) 的点。因此只要满足:

  • 要么不存在 \(\deg\ge3\) 的点;
  • 要么不存在 \(\deg\ge4\) 的点,仅存在两个 \(\deg=3\) 的点,且存在两个同时与他们两个相邻的二度点。

容易在合理的时间复杂度内判定这两个性质。

P4457 [BJOI2018] 治疗之雨

神秘题。预处理出每一轮的所有可能是显然的,然后我们考虑怎么递推求解原式,容易想到的是 \(f[i]\) 从所有 \(i\) 一轮操作可以到的数所转移而来,即 \(1\sim i+1\)。这样我们获得了一个 \(O(n^3)\) 的高消做法。

但是高消太慢了,考虑加速高消。发现 \(f[i]\) 可以用 \(f[i]\) 表示出来,这意味着我们这样表示一遍 \(f[i]\) 以后代入,仅求出 \(f[1]\) 然后再回代。

这样是 \(O(n^2)\) 的。

P4428 [BJOI2018] 二进制

好玩题。题目看上去十分神秘,考虑考察一下他要求的东西,看看有没有什么性质。

首先因为 \(2,3\) 很接近,所以我们打表观察一下 \(2^k\bmod 3\) 的值,经验丰富的人可以直接发现,\(2^k\equiv 1+(k\bmod 2)(\mod 3)\)。那么我就想要知道,能否分配这个段内所有的 \(1\) 让他们对 \(\mod 3\) 有“正确的贡献”。

令 \(x,y\) 分别为 \(1\) 放在权值为 \(1,-1\) 的位置的个数,容易发现总可以让 \(x=y\) 或 \(x=y+3\),取决于 \(1\) 个数的奇偶性。因此我们可以迅速地求出某个区间是否合法——要么 \(1\) 个数是偶数,要么个数是奇数个,但是 \(x+y=\operatorname{len}-(\operatorname{len} + 1\bmod 2)\)。

现在可以快速判定了,怎么快速统计呢?用线段树可以轻易做到,反过来统计 \(0\) 的个数和区间长度的奇偶性即可。

P4458 [BJOI2018] 链上二次求和

傻逼题。出题人,你是不会好好说话吗?

原题其实就是区间加,全局查所有长度在 \([l,r]\) 内的区间,区间内元素和的和。对序列做二阶前缀和,就可以快速询问了。

如何快速修改?朴素的改肯定要炸,但是我们考虑区间加对一阶前缀和相当于加等差数列和区间加,对于二阶前缀和也有式子可推。然后随便线段树维护一下。

P4459 [BJOI2018] 双人猜数游戏

奇妙题。本来以为这个题会有什么比较厉害的结论,结果其实没有。令 \(dp[i][j][k]\) 为说了 \(i-1\) 次不知道后,说话人知不知道 \((j,k)\) 是正确答案。

那么我该怎么确定呢?要么之前就已经确定(\(dp[i-2][j][k]=\operatorname{true}\)),要么上一次可能的区间内只有这一个不知道了(,然后前一个人还不知道),要么上两次可能的区间内只有这一个不知道了,最后就是对方的新增“确定”只有一个数。

这四种分别转移,因为是提交答案(而且数据范围极小),我们可以发现这样做是合理的。按照这样 dp 即可。

标签:BJOI2018,要么,BJOI,个数,解题,2018,区间,考虑,deg
From: https://www.cnblogs.com/Piggy424008/p/17938097/bjoi2018-report

相关文章

  • BJOI 2019 解题报告
    P5319[BJOI2019]奥术神杖数学题。搞掉几何平均数的方法是左右取对数,然后变成一个经典的\(0/1\)分数规划问题。解决方法是二分答案后AC自动机+DP。P5322[BJOI2019]排兵布阵简单题。随便DP即可,五分钟之内没想出这道题的赶快去加训。P5320[BJOI2019]勘破神机科技......
  • 铁人三项(第五赛区)_2018_rop
    铁人三项(第五赛区)_2018_rop函数参数劫持32位泄露libcfrompwnimport*context.log_level='debug'#io=gdb.debug('./2018_rop','break*0x8048474')io=process('./2018_rop')elf=ELF('./2018_rop')Lib=ELF('......
  • PicoCTF_2018_rop_chain
    PicoCTF_2018_rop_chain函数参数劫持整数型绕过\x00绕过len()函数vuln中存在栈溢出flag是后门函数,只要满足win1&&win2和a1=0xDEADBAAD就可以得到flag3.win1&win2存在于.bss段上,但是可以利用win_function1&win_function2两个函数构造win1win2fro......
  • 2018 考研English英语二
    SectionIIITranslation46.【真题译文】:一个五年级的学生收到一份家庭作业:即从一系列职业中选择自己未来的职业道路。他勾划了“宇航员”,但很快由将“科学家”添加到列表中,并也将其选中。这个男孩相信,如果他读得足够多,他就可以探索尽可能多的他喜欢的职业道路。所以他读书广......
  • [WC2018] 通道题解
    先考虑只有两颗树要咋做,柿子先变成\(dep_x+dep_y-2\timesdep_{lca}+dist_2(x,y)\)我们可以新建节点\(x'\rightarrowx\),边权为\(dep_x\),这样上面的式子可以看作枚举\(lca\)后,选出一个端点在不同子树中的直径,可以直接\(DP\)合并直径再考虑多了一颗树,我们可以进行边分治,枚......
  • 【数据结构】P4338 [ZJOI2018] 历史 题解
    P4338先考虑怎么安排崛起的先后顺序最优。但是发现好像没有一个很好的顺序去进行崛起,并且由于\(a_i\)的值域会很大,所以即使知道顺序应该也会难以进行维护。转换一下方向,正难则反。考虑每个点的贡献,但是颜色不同时只会算一次,所以要钦定是哪一个点造成的贡献。令当前考虑的点为......
  • [CTSC2018]暴力写挂题解
    我们先将柿子变成\(\frac{1}{2}(dis_{x,y}+dep_{x}+dep_{y})-dep'_{lca'}\)考虑边分治,枚举断边,我们将一个点在第二棵树上的点权看成是\(v_x=d_x+dep_x\),答案就为\(v_x+v_y+dep'_{lca'}\)对于每次边分治将分治联通块内所有点在第二棵树上的建出虚树,同时将分治联通块以分治中心......
  • 三道初三数学模拟几何综合题的解题思路解析
     ......
  • P4630 [APIO2018] 铁人两项 题解
    今天学习了圆方树,并且做了一道和这道题很像的题,于是就又来做了一下这道题。题意给定一张不保证连通的无向图。求有多少个点对\((a,b,c)\)满足\(a\)到\(c\)的简单路径上经过了点\(b\)。思路显然圆方树。点双缩点过后构造一颗圆方树,然后考虑如何计算答案。圆方树有一个实......
  • P4786 [BalkanOI2018] Election 题解
    题意给定一个长度为\(n\)的字符串\(s\),有\(m\)个询问,每次询问最少需要删掉多少个字符才能使\(l\)到\(r\)组成的字符串当中的每一个前缀和后缀都满足C的数量不小于T的数量。思路因为要满足C的数量不小于T的数量,我们不妨设字符C的位置的值为\(1\),字符S的位......