ACM:2020CCPC线段树 J
2020CCPC线段树 J
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118#pragma GCC optimize(3,"Ofast","inline")#pragma comment(linker, "/STACK:1024000000,1024000000")#include<bits/stdc++.h>using namespace std;#define endl '\n'//typedef __int128 LL;//2的128typedef lo ...
ACM:莫队基础 H的项链
莫队基础+ H的项链
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include<bits/stdc++.h>using namespace std;const int N=1e6+10;int cnt[N],a[N],ans=0;struct node{ int l,r,id;};node que[N];int T,ANS[N];//离线int n,m;bool cmp(node a,node b){ if(a.l/T!=b.l/T) return a.l/T<b.l/T; if((a.l/T)&1) return a.r<b.r;//奇偶性优化//如果l在奇数块,就按照r顺序排序,否则按照r逆序排序。 return a.r>b.r;}void add(int x){ //拓展一个数 if(!cnt ...
ACM:矩阵快速幂
矩阵快速幂求菲波那切数列第N项
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include<bits/stdc++.h>using namespace std;#define int long longtypedef long long ll;const int m=1e9+7;int n;ll A[2][2] = { // 用于快速幂的矩阵 {0, 1}, {1, 1}};ll res[2] = {2, 3}; // 用于存答案的矩阵(转置)// 计算列矩阵 A 乘方阵 B 的乘积,并存储在 A 中// 1 * 2矩阵与 2 * 2 矩阵相乘void _multi(ll A[], ll B[][2]){ ll ans[2] = {0}; for (int i = 0; i < 2; ...
ACM:几何思维
几何思维判断( 迎风一刀斩)
#pragma GCC optimize(3,"Ofast","inline")
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long ll;
#define int long long
#define ld long double
int flag;
#define pb(x) push_back(x);
vector<int>v[2],n,len;
void deal(vector<int>a,vector<int>b,int id){
int sz=a.size();//顶点数量
set<int>st;
for(int i=0;i<sz;i++)
...
ACM:武汉邀请赛2024. 动态 lca求树的直径
武汉邀请赛2024. 动态 lca求树的直径
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117#pragma GCC optimize(3,"Ofast","inline")#pragma comment(linker, "/STACK:1024000000,1024000000")#include<bits/stdc++.h>using namespace std;const int N=200010;#define int long long#define endl ...
ACM:多重线段树
多重线段树
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 /*一个线段树代表一个颜色,统计全部颜色的线段树即可线段树开l,r空间使用较高,可能卡内存*/#include<bits/stdc++.h>using namespace std;#define endl '\n'const int N=100010;int n,m,q;struct node{ int l,r,sum,lazy;//懒标记,判断后面是否需要更新}tr[31][N*4];void pushup(int u,int s){ tr[s][u].sum=tr[s][u*2].sum|tr[s][u*2+1].su ...
ACM:扫描线权值线段树
扫描线权值线段树
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889#pragma GCC optimize(3,"Ofast","inline")#pragma comment(linker, "/STACK:1024000000,1024000000")#include<bits/stdc++.h>using namespace std;#define endl '\n'#define int long longconst int N=100010;int n;vector<double>ys;struct node{ double x,y1,y2; int d; bo ...
ACM:最优多重二分匹配
最优多重二分匹配
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586题解:n < = 1 e 3 , m < = 2 e 3 n <=1e3,m<=2e3n<=1e3,m<=2e3题 目 要 求 转 化 一 下 , 就 是 从 一 个 点 出 入 的 所 有 边 , 颜 色 必 须 不 同 题目要求转化一下,就是从一个点出入的所有边,颜色必须不同题目要求转化一下,就是从一个点出入的所有边,颜色必须不同但 是 从 另 一 个 点 出 入 的 边 , 可 能 与 这 些 颜 色 相 同 , 可 能 不 同 但是从另一个点出入的边,可能与这些颜色相同,可能不同但是从另一个点出入的边,可能与这些颜色相同,可能不同使 用 最 少 颜 色 , 就 是 使 得 这 些 颜 色 尽 量 相 同 ...
ACM:tarjan
最优贸易
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 tarjan..图是一个有环图,因为是单向边,缩点,成有向无环图后,每一个强连通分量记录,内部最大值,最小值.题目必须从1点出发,缩点后,建立新图,为拓扑图,无法从1到达的点全部删除;从一点出发,进行拓扑操作,若a->b则,a的值可以更新b输出终点值即可;#include<bits/s ...
ACM:网络流最大流EK
网络流 最大流EK
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include <bits/stdc++.h>using namespace std;const int N=5100;const long long INF=1e17;int n,m,s,t,u,v;long long w,ans,dis[N];int cnt=0,vis[N],pre[N];int head[N];int flag[N][N];//重边struct node { int to,nx; long long w;} ed[N*2];inline void add(int u,int v,long long w) { ed[++cnt].to=v; ed[cnt].w=w; ed[cnt].nx=head[u]; h ...