打板子机器启动!

快读
#include<bits/stdc++.h>
using namespace std;

const int N=1000005;

int n;
int ans;

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int main(){
	n=read();
	
	printf("%d",ans);
	return 0;
}
快读快输
#include<bits/stdc++.h>
using namespace std;

const int N=1000005;

int n;
int ans;

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

void write(int x){
	if(x<0)x=-x,putchar('-');
	if(x>9)write(x/10);
	putchar(x%10+'0');
	return;
}

int main(){
	n=read();
	
	printf("%d",ans);
	//write(n);
	return 0;
}
P1226 【模板】快速幂
#include<bits/stdc++.h>
using namespace std;

int a,b,p;

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int qpower(int x,int y){
	int ans=1;
	while(y){
		if(y&1)ans=1ll*ans*x%p;
		x=1ll*x*x%p;
		y>>=1;
	}
	return ans;
}

int main(){
	a=read();b=read();p=read();
	printf("%d^%d mod %d=%d",a,b,p,qpower(a,b));
	return 0;
}
P3383 【模板】线性筛素数
#include<bits/stdc++.h>
using namespace std;

const int N=100000005,M=5770000;

int n,q;
int a[M],cnt;
bool pri[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

void prime(){
	for(int i(2);i<=n;++i){
		if(!pri[i])a[++cnt]=i;
		for(int j(1);j<=cnt&&1ll*i*a[j]<=n;++j){
			pri[i*a[j]]=1;
			if(i%a[j]==0)break;
		}
	}
	return;
}

int main(){
	n=read();q=read();
	prime();//cout<<cnt<<'\n';
	while(q--)printf("%d\n",a[read()]);
	return 0;
}
P10815 【模板】快速读入
#include<bits/stdc++.h>
using namespace std;

int n,ans;

int read(){
	int ff=1,kk=0;
	char cc=getchar_unlocked();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar_unlocked();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar_unlocked();
	}
	return ff*kk;
}

int main(){
	n=read();
	while(n--)ans+=read();
	printf("%d",ans);
	return 0;
}

注意 getchar_unlocked() 只能在 Linux 上使用,在 Windows 环境下会 CE。

P3370 【模板】字符串哈希
#include<bits/stdc++.h>
using namespace std;

const int N=1000005;

int n;
unordered_map<string,bool> mp;
int ans;

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int main(){
	n=read();
	while(n--){
		string str;
		cin>>str;
		if(mp[str]==0)++ans,mp[str]=1;
		//cout<<str<<" "<<ans<<'\n';
	}
	printf("%d",ans);
	return 0;
}

注意:unordered_map,unordered_set,tuple,array

B3647 【模板】Floyd
#include<bits/stdc++.h>
using namespace std;

const int N=105;

int n,m;
int dis[N][N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int main(){
	n=read();m=read();
	memset(dis,0x3f,sizeof dis);
	for(int i(1);i<=n;++i)dis[i][i]=0;
	while(m--){
		int u=read(),v=read(),w=read();
		dis[u][v]=min(dis[u][v],w);
		dis[v][u]=min(dis[v][u],w);
	}
	for(int k(1);k<=n;++k)
		for(int i(1);i<=n;++i)
			for(int j(1);j<=n;++j)
				dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
	for(int i(1);i<=n;++i){
		for(int j(1);j<=n;++j)
			printf("%d ",dis[i][j]);
		puts("");
	}
	return 0;
}
B3644 【模板】拓扑排序 / 家谱树
#include<bits/stdc++.h>
using namespace std;

const int N=105;

int n;
vector<int> g[N];
int f[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

queue<int> q;

int main(){
	n=read();
	for(int i(1);i<=n;++i){
		int j=read();
		while(j){
			g[i].push_back(j);
			++f[j];
			j=read();
		}
	}
	for(int i(1);i<=n;++i)if(!f[i])q.push(i);
	while(q.size()){
		int x=q.front();
		q.pop();
		printf("%d ",x);
		for(int v:g[x]){
			--f[v];
			if(!f[v])q.push(v);
		}
	}
	return 0;
}
P1886 滑动窗口 /【模板】单调队列
#include<bits/stdc++.h>
using namespace std;

const int N=1000005;

int n,k,a[N];
int h[N],l,r;

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

void min_que(){
	l=1;r=0;
	for(int i(1);i<=n;++i){
		while(l<=r&&h[l]+k<=i)++l;
		while(l<=r&&a[h[r]]>=a[i])--r;
		h[++r]=i;
		if(i>=k)printf("%d ",a[h[l]]);
	}
	puts("");
	return;
}

void max_que(){
	l=1;r=0;
	for(int i(1);i<=n;++i){
		while(l<=r&&h[l]+k<=i)++l;
		while(l<=r&&a[h[r]]<=a[i])--r;
		h[++r]=i;
		if(i>=k)printf("%d ",a[h[l]]);
	}
	return;
}

int main(){
	n=read();k=read();
	for(int i(1);i<=n;++i)a[i]=read();
	min_que();
	max_que();
	return 0;
}
P3811 【模板】模意义下的乘法逆元
#include<bits/stdc++.h>
using namespace std;

const int N=3000005;

int n,p;
int inv[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int main(){
	n=read(),p=read();
	inv[1]=1;puts("1");
	for(int i(2);i<=n;++i){
		inv[i]=1ll*(p-p/i)*inv[p%i]%p;
		printf("%d\n",inv[i]);
	}
	return 0;
}

注意:a,p 互质才有逆元,4 种求逆元方式

P4549 【模板】裴蜀定理
#include<bits/stdc++.h>
using namespace std;

const int N=1000005;

int n;
int ans;

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int gcd(int x,int y){
	if(!y)return x;
	return gcd(y,x%y);
}

int main(){
	n=read();ans=read();
	for(int i(2);i<=n;++i)ans=gcd(ans,read());
	if(ans>=0)printf("%d",ans);
	else printf("%d",-ans);
	return 0;
}
P5788 【模板】单调栈
#include<bits/stdc++.h>
using namespace std;

const int N=3000005;

int n,a[N];
int s[N],tp;
int res[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int main(){
	n=read();
	for(int i(1);i<=n;++i)a[i]=read();
	for(int i(n);i;--i){
		while(tp&&a[s[tp]]<=a[i])--tp;
		res[i]=s[tp];
		s[++tp]=i;
	}
	for(int i(1);i<=n;++i)printf("%d ",res[i]);
	return 0;
}
P1883 【模板】三分 | 函数
#include<bits/stdc++.h>
using namespace std;

const int N=10005;
const double eps=1e-10;

int T,n;
int a[N],b[N],c[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

double check(double x){
	double ans=a[1]*x*x+b[1]*x+c[1];
	for(int i(2);i<=n;++i)ans=max(ans,a[i]*x*x+b[i]*x+c[i]);
	return ans;
}

int main(){
	T=read();
	while(T--){
		n=read();
		for(int i(1);i<=n;++i)a[i]=read(),b[i]=read(),c[i]=read();
		double l=0,r=1000;
		while(l+eps<r){
			//cout<<l<<" "<<r<<'\n';
			double mid1=l+(r-l)/3.0,mid2=r-(r-l)/3.0;
			if(check(mid1)>check(mid2))l=mid1;
			else r=mid2;
		}
		printf("%.4f\n",check(l));
	}
	return 0;
}

注意:数据类型,数组大小。

B3611 【模板】传递闭包
#include<bits/stdc++.h>
using namespace std;

const int N=105;

int n,a[N][N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int main(){
	n=read();
	for(int i(1);i<=n;++i)
		for(int j(1);j<=n;++j)a[i][j]=read();
	for(int k(1);k<=n;++k)
		for(int i(1);i<=n;++i)
			for(int j(1);j<=n;++j)a[i][j]|=a[i][k]&a[k][j];
	for(int i(1);i<=n;++i){
		for(int j(1);j<=n;++j)printf("%d ",a[i][j]);
		puts("");
	}
	return 0;
}
P8306 【模板】字典树
#include<bits/stdc++.h>
using namespace std;

const int N=3000005,M=65;

int T,n,q;
char c[N];
int len;
int a[N][M],num[N],cnt;

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

void dfs(int x){
	num[x]=0;
	for(int i(0);i<62;++i)if(a[x][i]){
		dfs(a[x][i]);
		a[x][i]=0;
	}
	return;
}

void cl(){
	cnt=0;
	dfs(0);
	return;
}

void build(){
	int qwq,nw=0;
	for(int i(0);i<len;++i){
		if(c[i]>='a'&&c[i]<='z')qwq=c[i]-'a';
		else if(c[i]>='A'&&c[i]<='Z')qwq=c[i]-'A'+26;
		else qwq=c[i]-'0'+52;
		if(!a[nw][qwq])a[nw][qwq]=++cnt;
		nw=a[nw][qwq];
		++num[nw];
	}
	return;
}

int find(){
	int qwq,nw=0;
	for(int i(0);i<len;++i){
		if(c[i]>='a'&&c[i]<='z')qwq=c[i]-'a';
		else if(c[i]>='A'&&c[i]<='Z')qwq=c[i]-'A'+26;
		else qwq=c[i]-'0'+52;
		if(!a[nw][qwq])return 0;
		nw=a[nw][qwq];
	}
	return num[nw];
}

int main(){
	T=read();
	while(T--){
		cl();
		n=read();q=read();
		for(int i(1);i<=n;++i){
			scanf(" %s",c);
			len=strlen(c);
			build();
		}
		while(q--){
			scanf(" %s",c);
			len=strlen(c);
			printf("%d\n",find());
		}
	}
	return 0;
}
P3367 【模板】并查集
#include<bits/stdc++.h>
using namespace std;

const int N=10005;

int n,m,fa[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int find(int x){
	if(fa[x]==x)return x;
	return fa[x]=find(fa[x]);
}

int main(){
	n=read();m=read();
	for(int i(1);i<=n;++i)fa[i]=i;
	while(m--){
		int z=read(),x=read(),y=read();
		if(z==1)fa[find(x)]=find(y);
		else{
			if(find(x)==find(y))puts("Y");
			else puts("N");
		}
	}
	return 0;
}
P3374 【模板】树状数组 1
#include<bits/stdc++.h>
using namespace std;

const int N=500005;

int n,m;
int c[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int lowbit(int i){
	return i&(-i);
}

void add(int x,int i){
	for(;i<=n;i+=lowbit(i))c[i]+=x;
	return;
}

int find(int i){
	int ans=0;
	for(;i;i-=lowbit(i))ans+=c[i];
	return ans;
}

int main(){
	n=read();m=read();
	for(int i(1);i<=n;++i)add(read(),i);
	while(m--){
		int op=read(),x=read(),y=read();
		if(op==1)add(y,x);
		else printf("%d\n",find(y)-find(x-1));
	}
	return 0;
}
P3371 【模板】单源最短路径(弱化版)
#include<bits/stdc++.h>
using namespace std;

const int N=10005;

int n,m,s;
vector<pair<int,int> > g[N];
bool vis[N];
unsigned int dis[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

queue<int> q;

int main(){
	//2147483647
	//cout<<0x7f7f7f7f;
	n=read();m=read();s=read();
	while(m--){
		int u=read(),v=read(),w=read();
		g[u].emplace_back(make_pair(v,w));
	}
	for(int i(1);i<=n;++i)dis[i]=2147483647;
	dis[s]=0;
	vis[s]=1;
	q.push(s);
	while(q.size()){
		int x=q.front();q.pop();
		vis[x]=0;
		for(pair<int,int> v:g[x])if(dis[v.first]>dis[x]+v.second){
			dis[v.first]=dis[x]+v.second;
			if(!vis[v.first]){
				vis[v.first]=1;
				q.push(v.first);
			}
		}
	}
	for(int i(1);i<=n;++i)printf("%d ",dis[i]);
	return 0;
}
P3368 【模板】树状数组 2
#include<bits/stdc++.h>
using namespace std;

const int N=500005;

int n,m;
int c[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int lowbit(int i){
	return i&(-i);
}

void add(int x,int i){
	for(;i<=n;i+=lowbit(i))c[i]+=x;
	return;
}

int find(int i){
	int ans=0;
	for(;i;i-=lowbit(i))ans+=c[i];
	return ans;
}

int main(){
	n=read();m=read();
	int lst=0,nw;
	for(int i(1);i<=n;++i){
		nw=read();
		add(nw-lst,i);
		lst=nw;
	}
	while(m--){
		int op=read(),x=read();
		if(op==1){
			int y=read(),k=read();
			add(k,x);add(-k,y+1);
		}
		else printf("%d\n",find(x));
	}
	return 0;
}
P3379 【模板】最近公共祖先(LCA) tarjan
#include<bits/stdc++.h>
using namespace std;

const int N=500005;

int n,m,s;
vector<int> g[N];
vector<pair<int,int> > ques[N];
int ans[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

bool vis[N];
int fa[N];

int find(int x){
	if(fa[x]==x)return x;
	return fa[x]=find(fa[x]);
}

void tarjan(int x){
	vis[x]=1;
	for(int v:g[x])if(!vis[v]){
		tarjan(v);
		fa[v]=x;
	}
	for(pair<int,int> v:ques[x])if(vis[v.first])
		ans[v.second]=find(v.first);
	return;
}

int main(){
	n=read();m=read();s=read();
	for(int i(1);i<n;++i){
		int x=read(),y=read();
		g[x].emplace_back(y);
		g[y].emplace_back(x);
	}
	for(int i(1);i<=m;++i){
		int x=read(),y=read();
		ques[x].emplace_back(make_pair(y,i));
		ques[y].emplace_back(make_pair(x,i));
	}
	for(int i(1);i<=n;++i)fa[i]=i;
	tarjan(s);
	for(int i(1);i<=m;++i)printf("%d\n",ans[i]);
	return 0;
}
P3379 【模板】最近公共祖先(LCA) 倍增
#include<bits/stdc++.h>
using namespace std;

const int N=500005,M=20;

int n,m,s;
vector<int> g[N];
int fa[N][M],dep[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

void dfs(int x){
	for(int i(1);i<=18;++i)fa[x][i]=fa[fa[x][i-1]][i-1];
	for(int v:g[x])if(v!=s&&!fa[v][0]){
		fa[v][0]=x;
		dep[v]=dep[x]+1;
		dfs(v);
	}
	return;
}

int find(int x,int y){
	if(dep[x]<dep[y])swap(x,y);
	if(dep[x]>dep[y])
		for(int i(18);i>=0;--i)
			if(dep[fa[x][i]]>=dep[y])x=fa[x][i];
	if(x==y)return x;
	for(int i(18);i>=0;--i)if(fa[x][i]!=fa[y][i])x=fa[x][i],y=fa[y][i];
	return fa[x][0];
}

int main(){
	//cout<<log2(N);18...
	n=read();m=read();s=read();
	for(int i(1);i<n;++i){
		int x=read(),y=read();
		g[x].emplace_back(y);
		g[y].emplace_back(x);
	}
	dep[s]=1;
	dfs(s);
	for(int i(1);i<=m;++i)printf("%d\n",find(read(),read()));
	return 0;
}
P3366 【模板】最小生成树
#include<bits/stdc++.h>
using namespace std;

const int N=5005,M=200005;

int n,m;
int fa[N];
tuple<int,int,int> t[M];
int ans,cnt;

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int find(int x){
	if(x==fa[x])return x;
	return fa[x]=find(fa[x]);
}

int main(){
	n=read();m=read();
	for(int i(1);i<=n;++i)fa[i]=i;
	for(int i(1);i<=m;++i)t[i]=make_tuple(read(),read(),read());
	sort(t+1,t+1+m);
	for(int i(1);i<=m;++i){
		int x=get<1>(t[i]),y=get<2>(t[i]);
		if(find(x)==find(y))continue;
		fa[fa[x]]=fa[y];
		ans+=get<0>(t[i]);++cnt;
	}
	if(cnt<n-1)puts("orz");
	else printf("%d",ans);
	return 0;
}
P3385 【模板】负环
#include<bits/stdc++.h>
using namespace std;

const int N=2005;

int T,n,m;
vector<pair<int,int> > g[N]; 
long long dis[N];
int ti[N];
bool vis[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

queue<int> q;
bool spfa(){
	while(q.size())q.pop();
	memset(ti,0,sizeof ti);
	memset(vis,0,sizeof vis);
	memset(dis,0x3f,sizeof dis);
	dis[1]=0;vis[1]=1;ti[1]=1;
	q.push(1);
	while(q.size()){
		int x=q.front();q.pop();
		vis[x]=0;
		for(pair<int,int> v:g[x])if(dis[v.first]>dis[x]+v.second){
			dis[v.first]=dis[x]+v.second;
			++ti[v.first];
			if(ti[v.first]>n)return 1;
			if(!vis[v.first]){
				vis[v.first]=1;
				q.push(v.first);
			}
		}
	}	
	return 0;
}

int main(){
	T=read();
	while(T--){
		n=read(),m=read();
		while(m--){
			int u=read(),v=read(),w=read();
			g[u].push_back({v,w});
			if(w>=0)g[v].push_back({u,w});
		}
		if(spfa())puts("YES");
		else puts("NO");
		for(int i(1);i<=n;++i)g[i].clear();
	}
	return 0;
}

注意:审题,初始化。

P3865 【模板】ST 表 && RMQ 问题
#include<bits/stdc++.h>
using namespace std;

const int N=100005;

int n,m,st[N][20];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int find(int l,int r){
	int qwq=(int)(log(r-l+1)/log(2));
	return max(st[l][qwq],st[r-(1<<qwq)+1][qwq]);
}

int main(){
	//cout<<log2(N);16....
	n=read();m=read();
	for(int i(1);i<=n;++i)st[i][0]=read();
	for(int j(1);(1<<j)<=n;++j)
		for(int i(1);i+(1<<j)-1<=n;++i)
		st[i][j]=max(st[i][j-1],st[i+(1<<j-1)][j-1]);
	while(m--){
		int l=read(),r=read();
		printf("%d\n",find(l,r));
	}
	return 0;
}
P4779 【模板】单源最短路径(标准版)
#include<bits/stdc++.h>
using namespace std;

const int N=100005;

int n,m,s;
vector<pair<int,int> > g[N];
bool vis[N];
int dis[N];

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

priority_queue<pair<int,int> > pq;
void dij(){
	memset(dis,0x3f,sizeof dis);
	dis[s]=0;pq.push({0,s});
	while(pq.size()){
		int x=pq.top().second;pq.pop();
		if(vis[x])continue;
		vis[x]=1;
		for(pair<int,int> v:g[x])if(dis[v.first]>dis[x]+v.second){
			dis[v.first]=dis[x]+v.second;
			pq.push({-dis[v.first],v.first});
		}
	}
	return;
}

int main(){
	n=read();m=read();s=read();
	while(m--){
		int u=read(),v=read(),w=read();
		g[u].push_back({v,w});
	}
	dij();
	for(int i(1);i<=n;++i)printf("%d ",dis[i]);
	return 0;
}
P5431 【模板】模意义下的乘法逆元 2
#include<bits/stdc++.h>
using namespace std;

const int N=5000005;

int n,k,p;
int a[N],qz[N],hz[N],ans;

int read(){
	int ff=1,kk=0;
	char cc=getchar();
	while(cc>'9'||cc<'0'){
		if(cc=='-')ff=-1;
		cc=getchar();
	}
	while(cc<='9'&&cc>='0'){
		kk=kk*10+cc-'0';
		cc=getchar();
	}
	return ff*kk;
}

int qp(int x,int y){
	int ans=1;
	while(y){
		if(y&1)ans=1ll*ans*x%p;
		x=1ll*x*x%p;
		y>>=1;
	}
	return ans;
}

int main(){
	n=read();p=read();k=read();
	qz[0]=1;hz[n+1]=1;
	for(int i(1);i<=n;++i){
		a[i]=read();
		qz[i]=1ll*qz[i-1]*a[i]%p;
	}
	for(int i(n);i;--i)hz[i]=1ll*hz[i+1]*a[i]%p;
	int kk=1;
	for(int i(1);i<=n;++i){
		kk=1ll*kk*k%p;
		ans=(ans+1ll*hz[i+1]*qz[i-1]%p*kk%p)%p;
	}
	printf("%d",1ll*ans*qp(qz[n],p-2)%p);
	return 0;
}
posted @   MX_muxi  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
Title
点击右上角即可分享
微信分享提示