摘要: ```cpp #include<bits/stdc++.h> using namespace std; long long t; const long long N = 2e5 + 10; long long l,r; void solve() { cin >> l >> r; for(long l 阅读全文
posted @ 2025-03-06 21:14 孤枕 阅读(0) 评论(0) 推荐(0) 编辑
摘要: ```cpp #include<bits/stdc++.h> using namespace std; long long t; const long long N = 2e5 + 10; long long n,m,q,tot; long long s[N],c[N],p[N]; struct n 阅读全文
posted @ 2025-03-01 10:44 孤枕 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 传送门 容易想到同时维护ai+iaii,但是我一开始的做法是更新后再扫一遍才能更新出答案,这样不仅时间上爆炸,答案还更新不全。其实完全可以push_up的时候更新答案,这样不仅不会浪费复杂度,还不会漏情况 ```cpp #include<bits/stdc++ 阅读全文
posted @ 2025-02-28 18:49 孤枕 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 传送门 一开始想法是对的,但是写的丑了导致大数据一直没过去 由于我们只关心所选的区间长度和剩余的点的数量,并不关心具体选了哪些点,所以按照反悔贪心一贯的,用优先队列来储存选了哪些区间和哪些区间未选,剩余点的数量用n,m表示即可。用l,r双指针的方式从首尾选区间固然可以,但是这样就维护了额外的多余的量 阅读全文
posted @ 2025-02-28 15:17 孤枕 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 记录解决这道题过程中先后的疏忽 #include<bits/stdc++.h> using namespace std; long long t; const long long N = 2e5 + 10; long long n,a[N],ans; long long Prime[N],tot,p 阅读全文
posted @ 2025-02-28 11:23 孤枕 阅读(2) 评论(0) 推荐(0) 编辑
摘要: int quickMul(int x,int k,int mod) { //用来求逆元 if(k == 0) return 1; int tmp = quickMul(x,k / 2); tmp = (tmp * tmp) % mod; if(k & 1) tmp = (tmp * x) % mod 阅读全文
posted @ 2025-02-27 19:54 孤枕 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 传送门 数位DP都长这样吗(bushi 记忆化的维数一定得是能完全确定当前所在状态的,如果当前所在状态不能够由记忆化的各个维度共同确定的,即同一各个维度的值可能对应多个对答案有着不同贡献的状态的话,这个记忆化就会出问题(就相当于DP的维数并不能完整反应转移过程的各个状态一样 就拿这道题举例,在我的写 阅读全文
posted @ 2025-02-27 11:00 孤枕 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目大意:给定n个点和m条已有的边,并指定每个点的度数,问能否构建出满足条件的树 思路:首先所有度数之和应该是2(n1) (因为每条边会被算两次)。对于输入的每条边,我们让其对应所需的度数减一,得到的就是我们所构建出的树中,每个点需要我们人为额外加上的度数。此时如果有某个 阅读全文
posted @ 2025-02-18 21:18 孤枕 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目大意:给定一棵树和q个询问,每个询问给定v,p,表示一开始有p枚硬币,需要从顶点v走到顶点1,假设当前走第i步,如果i是奇数,那么会朝着顶点1的方向走一步,如果是偶数,可以花费一枚硬币向顶点1方向走一步,否则会等概率地随机向任一当前 阅读全文
posted @ 2025-02-14 19:20 孤枕 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 传送门 首先需要用到一个trick:单点正向加入操作变成倒序删除操作。 即我们假定现在有序列1,2,...,n,倒序遍历所给序列,对于当前遍历到的ia[i],我们发现,如果在现有序列(即前面说的1,2,...,n)中找到最后一个为a[i]的位置ji 阅读全文
posted @ 2025-02-11 13:12 孤枕 阅读(10) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示
我命令你,喜欢我!