摘要:
```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 阅读全文
摘要:
```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 阅读全文
摘要:
传送门 容易想到同时维护 和 ,但是我一开始的做法是更新后再扫一遍才能更新出答案,这样不仅时间上爆炸,答案还更新不全。其实完全可以push_up的时候更新答案,这样不仅不会浪费复杂度,还不会漏情况 ```cpp #include<bits/stdc++ 阅读全文
摘要:
传送门 一开始想法是对的,但是写的丑了导致大数据一直没过去 由于我们只关心所选的区间长度和剩余的点的数量,并不关心具体选了哪些点,所以按照反悔贪心一贯的,用优先队列来储存选了哪些区间和哪些区间未选,剩余点的数量用n,m表示即可。用l,r双指针的方式从首尾选区间固然可以,但是这样就维护了额外的多余的量 阅读全文
摘要:
记录解决这道题过程中先后的疏忽 #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 阅读全文
摘要:
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 阅读全文
摘要:
传送门 数位DP都长这样吗(bushi 记忆化的维数一定得是能完全确定当前所在状态的,如果当前所在状态不能够由记忆化的各个维度共同确定的,即同一各个维度的值可能对应多个对答案有着不同贡献的状态的话,这个记忆化就会出问题(就相当于DP的维数并不能完整反应转移过程的各个状态一样 就拿这道题举例,在我的写 阅读全文
摘要:
传送门 题目大意:给定n个点和m条已有的边,并指定每个点的度数,问能否构建出满足条件的树 思路:首先所有度数之和应该是 (因为每条边会被算两次)。对于输入的每条边,我们让其对应所需的度数减一,得到的就是我们所构建出的树中,每个点需要我们人为额外加上的度数。此时如果有某个 阅读全文
摘要:
传送门 题目大意:给定一棵树和q个询问,每个询问给定 ,表示一开始有p枚硬币,需要从顶点 走到顶点 ,假设当前走第 步,如果 是奇数,那么会朝着顶点 的方向走一步,如果是偶数,可以花费一枚硬币向顶点 方向走一步,否则会等概率地随机向任一当前 阅读全文
摘要:
传送门 首先需要用到一个trick:单点正向加入操作变成倒序删除操作。 即我们假定现在有序列 ,倒序遍历所给序列,对于当前遍历到的 和 ,我们发现,如果在现有序列(即前面说的 )中找到最后一个为a[i]的位置 , 阅读全文