随笔分类 -  洛谷题解转移

摘要:题目 题外话 首先这道题目,我并不会写,我是看题解的,这道题目给我的感觉是一道模板,并没有很新颖的点,就是这个排序的操作是此题的核心.(我笔记本键盘找不到句号,姑且用这个‘.’吧). 题目思路 这道题目为什么要排序呢?这是一个所有题解都在讨论的问题 我给出我的见解,红色的字是"权" 还有这题目并不是 阅读全文
posted @ 2025-04-16 20:31 LteShuai 阅读(33) 评论(0) 推荐(0)
摘要:题目 做题思路 一开始 我想到了数图中的分叉,因为每次缩点,,题外话这里让我想起了缩 点用tarjan不过这没什么用,都只能走树杈的一边,另一边只能等下一次了 ,于是我开始想是不是跟树杈数有关,结果发现可能是吧 ,比如说上图树杈是2-9-1,6-7-8和最大的4-11-2,刚好3个,然后思维就错 了 阅读全文
posted @ 2025-04-16 20:30 LteShuai 阅读(21) 评论(0) 推荐(0)
摘要:题目 这题需要交代的细节都在这里写了,由于字多我怕审核改很多次,就直接写在云剪了。 题意 给一个长度为 \(n\) 的序列,每次都要选出一个当前字符串中字典序最大的子序列以供你下一步操作,然后把这个子序列最尾部的那个字母移动到这个子序列的头部,这是一次操作,问你最少操作次数是多少? 题目思路 首先需 阅读全文
posted @ 2025-04-16 20:30 LteShuai 阅读(26) 评论(0) 推荐(0)
摘要:题目 首先明白&,<<,>>这几个符号, 先讲下& 比如 a=5,0101,b=3,0011 &下 就得到了0001,即1,在二进制数中,按位与运算是指对两个二进制数的对 应位执行与操作。只有两个对应位都为1时,结果位才为1,否则为0。 再是>>符号,比如x=16,10000,x>>2,右移两位,成 阅读全文
posted @ 2025-04-16 20:29 LteShuai 阅读(27) 评论(0) 推荐(0)
摘要:题目 做题思路 我一开始错误的使用了结构体存某一天三个活动,导致做起来很麻烦,后面分开了三个数组,但是我从开始就没想到其实只要枚举9次,最多这种情况,所以用什么存都没问题,做题还是不会动脑子,没有想到最差情况,至于从大到小排序这肯定知道的。太笨了,可能跟昨天太困了有关,昨天做这道题太困了思路乱了吧。 阅读全文
posted @ 2025-04-16 20:29 LteShuai 阅读(15) 评论(0) 推荐(0)
摘要:题目 题目思路 这道题需要证明,因为数据大了,就不能正常搜索解决问题了,然后这里也不是简单的贪心,我一开始就是贪心做,导致出错, 证明: x u y v first circumstance:x-1-(v-1)=x-v second circumstance:u-1-(y-1)=u-y 假设我们给了 阅读全文
posted @ 2025-04-16 20:28 LteShuai 阅读(34) 评论(0) 推荐(0)
摘要:题目 所需知识 \(裴蜀定理\)::若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。 它的一个重要推论是:a,b互质的充分必要条件是存在整数x,y使ax+by=1. 也就是说 如果p是质数,则他们的最大公 阅读全文
posted @ 2025-04-16 20:27 LteShuai 阅读(28) 评论(0) 推荐(0)
摘要:题目 这道题打暴力会超时 #include<iostream> #include<algorithm> using namespace std; int sum; void solve() { int n; int f=0; int st=1; cin>>n; sum=0; sum=__gcd(st 阅读全文
posted @ 2025-04-16 20:26 LteShuai 阅读(24) 评论(0) 推荐(0)
摘要:题目 不会写 前言 这道题 题目就需要好好读几遍,要明白 v数组中的每一个值都是小于n的 然后就是v的大小是k,并且k<=1e5, 其次就是d很大,题目给的是压缩循环数组,所以在遍历 的过程中想到要用%k去解决这个问题 然后这道题目 我个人认为蛮难的,我是真的写不来。哎,一看到这种玩意就头疼。不过c 阅读全文
posted @ 2025-04-16 20:26 LteShuai 阅读(26) 评论(0) 推荐(0)
摘要:题目 题目思路 我以为总长度不变的情况下 怎么换都没关系,所以只需要让Cmax...Cmin*每个区间短-长即可,事实上不行, 虽然[2,5]与[3,8] 100 1与[2,8],[3,5] 100 1 就不一样,所得答案也不同,但是你可以注意到这两个交换了答案确实最优解,这其实就是这题的规律。 就 阅读全文
posted @ 2025-04-16 20:25 LteShuai 阅读(35) 评论(0) 推荐(0)
摘要:题目 题目不可能情况思考 对x+k=y+z这个式字分析,你会分析如果x<k,那么所得总和必然小于2*k,大于则相反,有了这个知识,就可以知道输出-1的情况是哪些了 其实再加k然后分摊出去,就是一个稀释的过程。 最终必然会导致x趋向于一个中间值,即k与aMAX的中间某条红线那。 如果说存在一头一尾在k 阅读全文
posted @ 2025-04-16 20:25 LteShuai 阅读(22) 评论(0) 推荐(0)
摘要:题目 前言 首先着重讲下我的思路先: 8 2 3 1 1 7 4 3 我是定义一个now=a[i-1],每次进来就对其比较从而找出一个下降的序列,然后认为(很理想)这个序列是贡献为0,但是会出意外,这样比较是肯定会出错的,贡献怎么可能为0,然后又改成比较队尾元素了,这样做就没意义了 8 7 6 5 阅读全文
posted @ 2025-04-16 20:25 LteShuai 阅读(16) 评论(0) 推荐(0)
摘要:题目 前言 如果按照左右逼近的话 是一定会多算的,造成代价更大 ,所以不行。 题目思路 注意审题 对于1-n的每一个i都有pi=i 所以在遍历的时候 发现不符合的就可以定一个指针卡住,另一个指针往后走,找到正确的位置,区间就是代价。 但是这个左指针在往后寻找的过程中必须时刻更新区间最大的值,而不是最 阅读全文
posted @ 2025-04-16 20:22 LteShuai 阅读(53) 评论(0) 推荐(0)
摘要:题目 题目 对于 &这个操作符不是相同就是1 而是只有两个都是1 才算1 两个0是0 要表示-3的二进制,通常使用补码表示法。首先,我们需要找到3的二进制表示,然后取其补码。 1+1=0 0+1=1 3的二进制表示为: 0000 0011 接下来,我们需要取其补码,即反码加1: 反码:1111 11 阅读全文
posted @ 2025-04-16 20:02 LteShuai 阅读(20) 评论(0) 推荐(0)
摘要:题目 题目思路 分别求一个最大不下降子序列和最大上升子序列 为什么第二问是最大不上升子序列是因为 : 103 99 83 102 70 89 70 99 71 一个系统能解决83 就不能解决89 99 同理能解决89 就不能83 因为这个是有顺序的 所以是3个 然后在写的过程中 if(c1[mid] 阅读全文
posted @ 2025-04-16 20:02 LteShuai 阅读(48) 评论(0) 推荐(0)
摘要:题目 树有三种方式遍历 先序 根左右 中序 左根右 后续 左右根 所以 我们可以从样例 求出每次dfs的根 还有每次左右分的字数 如此不断遍历下去。 代码借鉴于题解 #include<iostream> using namespace std; string s1,s2; int len1,len2 阅读全文
posted @ 2025-04-16 20:01 LteShuai 阅读(52) 评论(0) 推荐(0)
摘要:当遇到处理子树询问,并且无修改时。可以考虑树上启发式合并。 算法流程: step1:处理出每个点的 以及重儿子 。 void dfs(int x, int fa) { siz[x] = 1; int Maxson = 0; for(int i = 0; i < p[x].size(); i++) { 阅读全文
posted @ 2025-04-16 20:01 LteShuai 阅读(26) 评论(0) 推荐(0)
摘要:为什么要学逆元 我也不知道,比如(a/b)%p要是里面是个分数就g了 逆元说白了就是倒数 逆元的概念 在 (a / b) % p 中,我们可以使用逆元的概念将其表示为 (a * b') % p,其中 b' 是 b 在模 p 意义下的逆元。注意是是b在%p的逆元是b‘ 心得 ax ≡ 1 (mod b 阅读全文
posted @ 2025-04-16 20:01 LteShuai 阅读(52) 评论(0) 推荐(0)
摘要:题目 题意简述 给定一个序列 \(a_1, a_2,\ldots, a_n\)。 A 先选择至多 \(k\) 个数删除,B 在剩下的数中选择至多 \(x\) 个数乘上 \(-1\),双方都做出最优选择,问最终序列和最大是多少。 题目思路 对于 B 来说肯定是尽量让最大的那几个数乘上 \(-1\),对 阅读全文
posted @ 2025-04-16 20:00 LteShuai 阅读(18) 评论(0) 推荐(0)
摘要:题目 所需知识 必须要明白一个知识: 如果a%p=b%p=c,(a-b)%p=c。 证明: 首先,由于a % p = c,说明a可以表示为a = kp + c(其中k是一个整数)。同样,由于b % p = c,说明b可以表示为b = mp + c(其中m是一个整数)。 现在,我们来计算(a - b) 阅读全文
posted @ 2025-04-16 20:00 LteShuai 阅读(27) 评论(0) 推荐(0)