随笔分类 -  题解

摘要:略带一点思维吧。 个人认为比 B 难想。 先来考虑弱化版的题面: Case 1 如果 X 串和 Y 串都没有字母 C,如何判断是否有解? 观察操作,我们能发现这个操作的本质实际上是让一个位于前面的字母 A 挪到其后面的任意的位置,并且前后两个 A 的相对位置不会发生改变。 所以,如果 阅读全文
posted @ 2023-10-19 10:52 osfly 阅读(8) 评论(0) 推荐(0) 编辑
摘要:发现还没有和我一样的做法。 觉得 B 比 A 好想的多。 令 Aiai 变成 A 的倍数最少次数,Bi,Ci,ABi,ACi,BCi,ABCi 同理。 那么我们就有 Ai=(AAmodai)modA,其他同理。 这一 阅读全文
posted @ 2023-10-19 10:51 osfly 阅读(6) 评论(0) 推荐(0) 编辑
摘要:见到有单调性、有限制的区间问题,很自然地就会想到用尺取去做。 先按工资升序排序,然后套上尺取就行了。 不会尺取的可以根据这道题去学。 时间复杂度 O(nlogn)。 #include<cstdio> #include<algorithm> #define ll long long usi 阅读全文
posted @ 2023-10-19 10:51 osfly 阅读(5) 评论(0) 推荐(0) 编辑
摘要:简单题。CF 评分才 *1600。 可以直接先把 Q 拆成两部分。 \[\begin{aligned} \large a&=\oplus^n_{i=1}p_i\ \large b&=\oplus^n_{i=1}\oplus^n_{j=1}\ \ \ (i\bmod j)\ \large 阅读全文
posted @ 2023-10-19 10:50 osfly 阅读(7) 评论(0) 推荐(0) 编辑
摘要:设 checki1n 中满足题意的数的数量。 显然答案为 checkjchecki1。 注意到 check 能直接暴力求出来。 那么就可以先把 106 范围内的所有质数求出来,然后所有数跑一遍,每个数都去旋转得出所有数后判断是否均为质数,记录下来。 阅读全文
posted @ 2023-08-29 20:26 osfly 阅读(10) 评论(0) 推荐(0) 编辑
摘要:简单解析几何。 做这道题之前,你需要知道: 1. 根据两点求直线一般式。 2. 根据两条直线求交点坐标。 这里直接丢公式了,百度上也有证明过程,自己推导难度也不大。 1. 若两点坐标为 (x1,y1),(x2,y2),则直线方程为:Ax+By+C=0,其中 $A=y_2-y_1,B= 阅读全文
posted @ 2023-08-25 21:16 osfly 阅读(5) 评论(0) 推荐(0) 编辑
摘要:为了尽可能满足父母亲的要求,我们应该取两个字符串的最长公共子序列。 [洛谷模板题](https://www.luogu.com.cn/problem/P1439) 设 dpi,ja 串匹配到第 i 位,b 串匹配到第 j 位时的最长公共子序列长度。 则易知 $dp_{ 阅读全文
posted @ 2023-08-25 21:15 osfly 阅读(11) 评论(0) 推荐(0) 编辑
摘要:根据题意,发现我们要维护一个身高递减的序列。 因此,我们可以直接使用单调栈维护第 i 个人能看到的人数即可。 答案就是当前栈内的元素数量。 注意应先输出答案再将当前高度入栈。 ```cpp #include int n; int h[100010]; int st[100010]; int to 阅读全文
posted @ 2023-08-25 21:15 osfly 阅读(5) 评论(0) 推荐(0) 编辑
摘要:本题二分 + 搜索。 我们可以先二分出 x 可能的值,再用搜索检验这个答案是否满足要求。若满足,左端点右移,否则右端点左移。 至于搜索可以用记搜加速。 注意输出要换行,否则会 WA。 ```cpp #include #include int n,m,t; char map[20][20]; in 阅读全文
posted @ 2023-08-25 21:15 osfly 阅读(12) 评论(0) 推荐(0) 编辑
摘要:简单题,但是我考场写炸了。10070。 我们读入的时候,先开两个数组 ls,rs 来记录当前这个点是否为某条线段左端点或右端点。 我们发现,每一条线段都是连续的,因此可以直接差分记录当前这个点能否走到。 然后你提交上去发现你能过。 实际上这种做法是假的。 为什么呢? 如 阅读全文
posted @ 2023-08-25 21:12 osfly 阅读(15) 评论(0) 推荐(0) 编辑
摘要:简单题。 考虑 `-1` 的情况,即为 $n^2 #include #define ll unsigned long long ll n,m; ll ans=1llm) ans=min(ans,a*b); } printf("%llu",ans); } return 0; } ``` 阅读全文
posted @ 2023-08-25 21:11 osfly 阅读(20) 评论(0) 推荐(0) 编辑
摘要:## 前言 这个东西还是 lsz 提醒我的() cj 开了2G,,, ### day -114514 班主任叫我去找 cj,cj 说她发现 GDKOI 的时候报名时间过了() 最后好像还是有了名额。 ### day -2 被政治老师抽背政治,不会,当场寄掉,喜提罚抄提纲+重背。 ### day -1 阅读全文
posted @ 2023-08-25 21:11 osfly 阅读(19) 评论(0) 推荐(0) 编辑
摘要:对于 n=1,答案显然为 0。 我们能很清楚一点,因为 ai>0,所以当 ax 需要改为 0 时, a1ax1 也都必须改 0,这样才能使前面的满足 ai1ai 那我们首先得先记录每一个数出现的最后一个位置 `last[a[i 阅读全文
posted @ 2023-08-25 21:05 osfly 阅读(18) 评论(0) 推荐(0) 编辑
摘要:挺简单的一道题。 要想使 i=1kpi 最小,很明显的,前 k 个数必须为 1k。设 ciip 里出现的位置,则答案为 i=1k[ci>k]。 ```cpp #include in 阅读全文
posted @ 2023-08-25 21:05 osfly 阅读(5) 评论(0) 推荐(0) 编辑
摘要:这道题是一对兄弟在几个夜晚里想出来的idea: 【哥:[KoSaking](https://www.luogu.com.cn/user/531275),弟:[osfly](https://www.luogu.com.cn/user/339299)】 弟:哥,这是什么?(指着哥哥远古小本子上的一行字) 阅读全文
posted @ 2023-08-25 21:04 osfly 阅读(22) 评论(0) 推荐(0) 编辑
摘要:典型到不能再典型的区间 dp 了。 观察四种操作,考虑到加一个数和删一个数的情况相同,所以无非就是: 1. 删一个数。 2. 改一个数。 设 dp[l][r] 为让区间 lr 对称(变成回文串)的最少次数。 可以很快地得出状态转移方程: 情况 1:如果 al=ar,则 阅读全文
posted @ 2023-08-25 21:04 osfly 阅读(35) 评论(0) 推荐(0) 编辑
摘要:注意到 n 实在是小到不行,我们可以直接采用比较暴力的做法。 ~~(嗯,可能算比较暴力吧~~ 很简单,找环,然后把环里的所有点全部压进 `dijkstra` 的优先队列就行了。 找环最坏 n 遍跑满的 `dfs`,最短路是 O(nlogn) 的,最坏时间复杂度为 O(n2),稳 阅读全文
posted @ 2023-08-25 21:03 osfly 阅读(14) 评论(0) 推荐(0) 编辑
摘要:算是对 [Leap_Frog大佬的补充吧qwq](https://www.luogu.com.cn/blog/daniu/solution-cf605b)。 %%% Leap_Frog. 我们来看一下大佬的这段话: 考虑倒着思考 Kruskal 算法。 按边权从小到大排序。 每次插入一条边。 如果是 阅读全文
posted @ 2023-08-25 21:03 osfly 阅读(19) 评论(0) 推荐(0) 编辑
摘要:前置芝士:二维偏序。 二维偏序的板子题。 怎么看出是二维偏序的呢? 考虑点对 (i,j),令 xivj,则两点会越来越近,易知最短距离为 0,所以我们不需要考虑这种情况。 所以问题转化成:$x_i #include using namespace std; #define int l 阅读全文
posted @ 2023-08-25 21:02 osfly 阅读(7) 评论(0) 推荐(0) 编辑
摘要:简单构造题。 很明显的,当 d=2 的时候代价最大。 证明: pid=pi+1d 减小时,pid 也在减小,pi+1 也在减小, 那么 pi+1 减小时,pi+1 可供选择的数就越多,代价也随即越 阅读全文
posted @ 2023-08-25 21:01 osfly 阅读(8) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示