摘要:
A - A to Z String 2 代码: void solve(int Case) { int n; string s = " "; cin >> n; int k; cin >> k; for (int i = 'A'; i <= 'Z'; i++) { for (int j = 1; j 阅读全文
摘要:
1067. [SCOI2007]降雨量 思路: 只有a[l]>=a[r] && a[x]>a[r] {x,l<x<r}满足为true,使用st表或者线段树维护最大值即可, 其他情况分类讨论 代码: #include <bits/stdc++.h> #define int long long int 阅读全文
摘要:
3245. 最快路线 思路: 最短路,d[i][j],表示在i号点,速度为j的最短距离,记录每次转移的状态即可 代码: #include <bits/stdc++.h> #define int long long int _ = 0, Case = 1; using namespace std; # 阅读全文
摘要:
[HAOI2008]移动玩具 思路: 把矩阵压缩,然后bfs即可 代码: #include <bits/stdc++.h> #define int long long int _ = 0, Case = 1; using namespace std; #define all(v) begin(v), 阅读全文
摘要:
E - Distance Sequence 思路: 考虑动态规划,前i项以j结尾的个数,第i-1项一定是上一项结尾小于等于j-k的个数+上一项结尾大于等于j+k的个数 代码: #include <bits/stdc++.h> #define int long long int _ = 0, Case 阅读全文
摘要:
A - You should output ARC, though this is ABC. 代码: #include <bits/stdc++.h> #define int long long int _ = 0, Case = 1; using namespace std; #define al 阅读全文
摘要:
D. Max GEQ Sum 要求所有的区间都满足最大值大于区间和 思路: 考虑每一个数字在他的区间里面的贡献,假设x在L到R中是最大值,那么要求l到r的最大子段和小于等于x就可以满足条件,x左右第一个大于x的数可以使用单调栈求解,区间最大子段和使用线段树 代码: #include <bits/st 阅读全文
摘要:
###P4145 上帝造题的七分钟 2 / 花神游历各国 代码 每个数字最多进行6次操作会变成1 假如区间内的数字都是1,即可停止操作 const int N = 100010; int a[N]; struct T { int l, r, val, tag; } tr[N << 2]; void 阅读全文
摘要:
仓鼠的鸡蛋 思路: 把线段树权值全部置为m,维护区间最大值,每次优先找满足条件的左边的区间 const int N = 500010; int cnt[N]; int a[N]; int n, m, k; int tr[N << 2]; int M = 1; void pushup(int p) { 阅读全文
摘要:
HH的项链 思路: 离线按照r排序,然后把小于r的数字加到线段树中,同时把出现过的a[j]的位置在线段树中删掉 代码: #define read() FastIO::read() #define clean() FastIO::flush() const int N = 1000010; int a 阅读全文