随笔分类 -  题解

1 2 3 4 5 ··· 7 下一页
摘要:思路 其实我们可以把这个平面看成一个圆,然后需要切除一部分并使所有点不被切除,此时显然我们只能切掉任意相邻的两个点之间的夹角才能不伤及无辜。注意因为是平面,所以头尾间的夹角也要考虑。 这题的难点在于如何计算夹角。但是好在 c++ 提供了一个很好用的函数:atan2。atan2(y,x) 可以自动求出 阅读全文
posted @ 2024-06-05 14:23 sz_jinzikai 阅读(13) 评论(0) 推荐(1) 编辑
摘要:吐槽:恶心题,赛后才调出来一发过/tuu。 友情提示:这场比赛 CF 有中文官方题解哦!这题使用中文版官方题解 LCA 做也是很好的一种方法。 思路 首先不难发现,一个数先乘 222 后除 222 会得到原数。若 aaa 和 bbb 间有 ccc 个 −1-1−1,则我们可以对 aaa 先除后乘得到 阅读全文
posted @ 2024-06-02 14:52 sz_jinzikai 阅读(12) 评论(0) 推荐(1) 编辑
摘要:思路 容易发现每一秒每个格子的或区间会左右各延伸一格(最多到 000),例如 333 号点在 555 秒后变成了 0∣1∣2∣3∣4∣5∣6∣7∣80|1|2|3|4|5|6|7|80∣1∣2∣3∣4∣5∣6∣7∣8,nnn 号节点在 mmm 秒后会变成 max⁡(n−m,0)∼n+m\max(n- 阅读全文
posted @ 2024-06-02 13:57 sz_jinzikai 阅读(4) 评论(0) 推荐(1) 编辑
摘要:思路 不难发现,对于一个 lv>2lv>2lv>2 的树而言,左右儿子是 lv−2lv-2lv−2 的,中间儿子是 lv−1lv-1lv−1 的,这里就放一个 lv=4lv=4lv=4 的图(手绘,不喜勿喷 qwq): 然后每隔三层,就会在根节点形成一个与子树的爪不重合的爪,所以状态转移方程如下: 阅读全文
posted @ 2024-05-30 15:40 sz_jinzikai 阅读(3) 评论(0) 推荐(0) 编辑
摘要:思路 根据等差数列求和公式,1+3+5+⋯+(2n−1)=(2n−1+1)×n2=n2,2+4+6+⋯+2n=(2n+2)×n2=n×(n+1)1+3+5+\dots+(2n-1)=\frac{(2n-1+1)\times n}2=n^2,2+4+6+\dots+2n=\frac{(2n+2)\ti 阅读全文
posted @ 2024-05-30 14:06 sz_jinzikai 阅读(8) 评论(0) 推荐(0) 编辑
摘要:思路 对矩阵进行 (i+j) mod 3(i+j)\bmod3(i+j)mod3 编号,只要改变其中一种颜色的所有 X 棋子就不会出现连续 333 个行列同色。 记得选最小的,最小的那个肯定 ≤⌊k3⌋\le\lfloor\frac k3\rfloor≤⌊3k​⌋。 代码 # include <bi 阅读全文
posted @ 2024-05-29 13:27 sz_jinzikai 阅读(2) 评论(0) 推荐(0) 编辑
摘要:提示 正难则反,可以总数减去无交集的部分; iii 与 jjj 无交集的条件是 rj<lir_j<l_irj​<li​ 或 lj>ril_j>r_ilj​>ri​ 二分是个好东西。 思路 上面基本已经说了大致思路。我们设 l,rl,rl,r 为原数组,L,RL,RL,R 也是原数组,但是单独排序了。 阅读全文
posted @ 2024-05-26 16:22 sz_jinzikai 阅读(2) 评论(0) 推荐(0) 编辑
摘要:思路 首先 aia_iai​ 是第 ⌊ai−1n⌋\lfloor\frac{a_i-1}{n}\rfloor⌊nai​−1​⌋ 行第 (ai−1) mod n(a_i-1)\bmod n(ai​−1)modn 列的(此处均为 000 开始),然后每次添加点肯定不用整个都判断,只需要判断更改的部分即可 阅读全文
posted @ 2024-05-26 16:13 sz_jinzikai 阅读(1) 评论(0) 推荐(0) 编辑
摘要:思路 按照题目说的做就行。 对于每一个新进来的请求,先把完成时间比任务开始时间靠前的任务从队列里弹掉,然后判断队列里任务个数是否 ≤ti\le t_i≤ti​(是 ≤\le≤ 不是 <<<,因为我们已经把正在工作的任务也放在队列里了),如果是,那就把结束时间累加上 did_idi​ 并塞进队列。注意 阅读全文
posted @ 2024-05-24 15:35 sz_jinzikai 阅读(0) 评论(0) 推荐(0) 编辑
摘要:思路 首先这题要用最短路是显然的,但是边权不固定(但对 dijkstra 过程没影响,因为边权没有负数)。在做 dijkstra 的时候,我们的边权取决于不固定的当前高度和固定的增长高度,然后类似 P1516 用 exgcd 把边权算出来松弛即可。 注意事项 请及时取模,否则在乘法和 exgcd 时 阅读全文
posted @ 2024-05-22 13:18 sz_jinzikai 阅读(3) 评论(0) 推荐(0) 编辑
摘要:思路 若 aia_iai​ 的与结果中第 iii 位是 111,则必须每个 aia_iai​ 的第 iii 位都是 111。然后我们只需要从高位开始枚举 iii,如果次数足够那就操作,否则就不操作。 代码 # include <bits/stdc++.h> using namespace std; 阅读全文
posted @ 2024-05-20 16:07 sz_jinzikai 阅读(1) 评论(0) 推荐(0) 编辑
摘要:思路 aaa 名志愿者,每名 111 份,共 aaa 份;bbb 支单挑队,每支 111 份,共 bbb 份;ccc 支双打队,每支 222 份,共 2c2c2c 份;ddd 支三人队,每支 333 份,共 3d3d3d 份。总共 a+b+2c+3da+b+2c+3da+b+2c+3d 份。 代码 阅读全文
posted @ 2024-05-20 10:08 sz_jinzikai 阅读(0) 评论(0) 推荐(0) 编辑
摘要:思路 首先考虑朴素 dfs。若 A 必胜,则说明至少有一种情况能使得 B 必败;若 A 必败,则说明无论他取什么(或者不取),B 都必胜。 当然,那样会 TLE:例如当 A 取了 a,ba,ba,b 后 B 取了 c,dc,dc,d 与 A 取了 c,dc,dc,d 后 B 取 a,ba,ba,b 阅读全文
posted @ 2024-05-19 20:21 sz_jinzikai 阅读(3) 评论(0) 推荐(0) 编辑
摘要:思路 我们可以先以 ccc 为第一关键字从小到大排序,aaa 为第二关键字从小到大排序,此时我们就只要删去 ai<aja_i<a_jai​<aj​ 且 i<ji<ji<j 的元素即可,剩下的数下标从小到大排序输出就行。 代码 # include <bits/stdc++.h> using names 阅读全文
posted @ 2024-05-19 16:11 sz_jinzikai 阅读(3) 评论(0) 推荐(0) 编辑
摘要:dfs 练手题。 思路 我们可以把每一辆车上的目前总重量记录下来,然后对于每一只猫枚举每一辆车,要么蹭上一辆车继续 dfs,要么自己新开一辆车 dfs。也可以再加一个最优性剪枝(即如果当前车数大于已知最优解就直接结束)。我这里还用了一个从大到小排序的优化,因为越小的越容易蹭车,不用开新车嘛。 代码 阅读全文
posted @ 2024-05-19 13:59 sz_jinzikai 阅读(6) 评论(0) 推荐(0) 编辑
摘要:提速偷懒小技巧 使用 bitset 自带的位运算配上 01 背包,真是又快速又省代码长度! 思路 首先设 s=∑ais=\sum a_is=∑ai​,若 s mod 2=1s\bmod2=1smod2=1,显然最开始就是好的,不用删;否则可以先用 01 背包判断是否存在子序列之和为 s2\frac 阅读全文
posted @ 2024-05-17 19:49 sz_jinzikai 阅读(7) 评论(0) 推荐(0) 编辑
摘要:思路 字典树板子题。如果你不会字典树,请右转其它题解。 我们用 tri,jtr_{i,j}tri,j​ 表示从 iii 号节点转移过来且以字母 jjj 结尾的节点编号,si,js_{i,j}si,j​ 表示这种前缀字符串(从 iii 号节点转移过来且以字母 jjj 结尾)的个数,我们不管前缀有多长, 阅读全文
posted @ 2024-05-16 19:49 sz_jinzikai 阅读(2) 评论(0) 推荐(0) 编辑
摘要:思路 首先我们设 sis_isi​ 是 aia_iai​ 的位数,则 f(ai,aj)=ai×10sj+ajf(a_i,a_j)=a_i\times10^{s_j}+a_jf(ai​,aj​)=ai​×10sj​+aj​。首先先看放在地位的情况,aia_iai​ 会被放在低位 i−1i-1i−1 次 阅读全文
posted @ 2024-05-16 19:38 sz_jinzikai 阅读(3) 评论(0) 推荐(0) 编辑
摘要:思路 题目中有一点对本题而言非常重要:mod=108,ai<108mod=10^8,a_i<10^8mod=108,ai​<108,所以 ai<moda_i<modai​<mod,这也就说明 ai+aj<2×moda_i+a_j<2\times modai​+aj​<2×mod。首先只有当 ai+a 阅读全文
posted @ 2024-05-16 19:16 sz_jinzikai 阅读(4) 评论(0) 推荐(0) 编辑
摘要:思路 首先按照位置从小到大排序。 设 dpi,jdp_{i,j}dpi,j​ 表示对于前 iii 个弹珠,最后一个停止的弹珠。当 j<ij<ij<i 时,那么 iii 号弹珠要滚到 jjj 号弹珠的位置,耗费 xi−xjx_i-x_jxi​−xj​,dpi,j=dpi−1,j+xi−xjdp_{i, 阅读全文
posted @ 2024-05-15 14:57 sz_jinzikai 阅读(2) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 7 下一页
点击右上角即可分享
微信分享提示