模板2
来源:互联网 发布:詹姆斯2017总决赛数据 编辑:程序博客网 时间:2024/05/16 03:34
#include<cstdio>#include<cmath>#include<ctime>#include<cstring>#include<queue>#include<set> #include<algorithm>using namespace std;int x,y,a,b;int gcd(int &x,int &y,int a,int b){ if(!b){ x=1,y=0; return a; } int ret=gcd(x,y,b,a%b); int tmp=x; x=y; y=tmp-a/b*y; return ret;}int main(){ scanf("%d%d",&a,&b); gcd(x,y,a,b); printf("%d",(x%b+b)%b);}
#include<cstdio>#include<cmath>#include<ctime>#include<cstring>#include<queue>#include<set> #include<algorithm>using namespace std;multiset<int> q,p; int n,m;int main(){ scanf("%d",&n); while(n--){ int opt,x,j; scanf("%d%d",&opt,&x); multiset<int>::iterator it; if(opt==1) q.insert(x),p.insert(-x); if(opt==2) q.erase(x),p.erase(-x); if(opt==3) { j=1;it=q.begin(); for(;it!=q.find(x);it++,j++) ;printf("%d\n",j); } if(opt==4) for(it=q.begin(),j=1;it!=q.end()&&j<=x;it++,j++) if(j==x) printf("%d\n",*it); if(opt==5) printf("%d\n",-*upper_bound(p.begin(),p.end(),-x)); if(opt==6) printf("%d\n",*upper_bound(q.begin(),q.end(),x)); } }
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>using namespace std;int n,m;int s;int vis[510000],x,y,head[510000],nex[1110000],to[1110000],tot;int net[1110000],h[510000],t[1100000],tot2,f[510000],lca[1100000];void add(int x,int y){ //邻接链表 nex[++tot]=head[x]; to[tot]=y; head[x]=tot;}void add2(int x,int y){ //邻接链表 net[++tot2]=h[x]; t[tot2]=y; h[x]=tot2;}int read(){ char ret;int ans=0;ret=getchar(); while(ret>'9'||ret<'0') ret=getchar(); while(ret<='9'&&ret>='0') ans=(ans<<1)+(ans<<3)+ret-'0',ret=getchar(); return ans;}int find(int x){ return f[x]=f[x]==x?x:find(f[x]);}void dfs(int x){ vis[x]=1;f[x]=x; for(int i=head[x];i;i=nex[i]){ int tmp=to[i]; if(vis[tmp]) continue; dfs(tmp); f[tmp]=x; } for(int i=h[x];i;i=net[i]){ int tmp=t[i]; if(vis[tmp]){ lca[i]=find(tmp); if(i&1) lca[i+1]=lca[i]; else lca[i-1]=lca[i]; } }}int main(){ scanf("%d%d%d",&n,&m,&s); for(int i=1;i<n;i++) scanf("%d%d",&x,&y),add(x,y),add(y,x); for(int i=1;i<=m;i++) scanf("%d%d",&x,&y),add2(x,y),add2(y,x); dfs(s); for(int i=1;i<=m;i++) printf("%d\n",lca[i*2]);}
#include<cstdio>#include<cmath>#include<ctime>#include<cstring>#include<queue>#include<algorithm>using namespace std;int vis[510000],x,y,head[510000],nex[1110000],to[1110000],dep[510000],tot;void add(int x,int y){ //邻接链表 nex[++tot]=head[x]; to[tot]=y; head[x]=tot;}int st[510000][23],n,q,s;int read(){ char ret;int ans=0;ret=getchar(); while(ret>'9'||ret<'0') ret=getchar(); while(ret<='9'&&ret>='0') ans=(ans<<1)+(ans<<3)+ret-'0',ret=getchar(); return ans;}void dfs(int x){ vis[x]=1; for(int i=head[x];i;i=nex[i]){ int tmp=to[i]; if(vis[tmp]) continue; dep[tmp]=dep[x]+1;st[tmp][0]=x; dfs(tmp); }}int lca(int x,int y){ if(x==y) return x; if(dep[x]<dep[y]) swap(x,y); for(int i=20;i>=0;i--){ if(st[x][i]&&dep[st[x][i]]>=dep[y]) x=st[x][i]; } if(x==y) return x; for(int i=20;i>=0;i--){ if(st[x][i]&&st[y][i]&&st[x][i]!=st[y][i]) x=st[x][i],y=st[y][i]; } return st[x][0];}int main(){ n=read(),q=read(),s=read(); for(int i=1;i<n;i++) x=read(),y=read(),add(x,y),add(y,x); dfs(s); for(int i=1;(1<<i)<=n;i++) for(int j=1;j<=n;j++) if(st[j][i-1]&&st[st[j][i-1]][i-1]) st[j][i]=st[st[j][i-1]][i-1]; while(q--){ x=read(),y=read(); printf("%d\n",lca(x,y)); }}
#include<iostream>#include<cstdio>#include<cstring>#define LL long long using namespace std;const int N=200007;inline int read(){ int x=0,p=1;char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-') p=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-'0',ch=getchar(); return x*p;}int Q,n,m;int head[N],nxt[2*N],to[2*N],cos[2*N],tot;int dis[N];bool vis[N];void add(int x,int y,int z){ to[++tot]=y; nxt[tot]=head[x]; head[x]=tot; cos[tot]=z;}bool DFS_spfa(int x){ vis[x]=1; for(int i=head[x];i;i=nxt[i]) { int tmp=to[i]; if(dis[tmp]>dis[x]+cos[i]) { if(vis[tmp]) return 1; dis[tmp]=dis[x]+cos[i]; int w=DFS_spfa(tmp); if(w==1) return 1; } } vis[x]=0; return 0;}int main(){ Q=read(); while(Q--) { memset(head,0,sizeof(head)); memset(vis,0,sizeof(vis)); memset(dis,0,sizeof(dis)); tot=0;int flag=0; n=read(),m=read(); for(int i=1,x,y,z;i<=m;i++){ x=read(),y=read(),z=read(); add(x,y,z); if(z>0) add(y,x,z); } for(int i=1;i<=n;i++) if(DFS_spfa(i)) { printf("YE5\n");flag=1;break; } if(!flag) printf("N0\n"); } return 0;}
#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<set>#include<map>#include<queue>#include<vector>#include<ctime>#include<cstdlib>#include<algorithm>using namespace std;const int M=1100000;int n,m,e,x,y,vis[M],ans,nex[M],to[M],head[M],tot,matc[M];void add(int x,int y){ //邻接链表 nex[++tot]=head[x]; to[tot]=y; head[x]=tot;}int match(int x){ for(int i=head[x];i;i=nex[i]){ int tmp=to[i]; if(!vis[tmp]){ vis[tmp]=1; if(!matc[tmp]||match(matc[tmp])){ matc[x]=tmp; matc[tmp]=x; return 1; } } } return 0;}int main(){ scanf("%d%d%d",&n,&m,&e); while(e--){ scanf("%d%d",&x,&y); if(y>m) continue; add(x,y+n); add(y+n,x); } for(int i=1;i<=n;i++){ memset(vis,0,sizeof vis); ans+=match(i); } printf("%d",ans); }
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<cstdlib>#include<algorithm>using namespace std;const int M=1100000;int n,m,opt,x[M],y[M],dfn[M],low[M],vis[M],cnt,ans,nex[M],to[M],head[M],tot,dp[M],strak[M],top,color_num,col[M],sum[M],v[M];void add(int x,int y){ //邻接链表 nex[++tot]=head[x]; to[tot]=y; head[x]=tot;}void tarjan(int x){ dfn[x]=++cnt; low[x]=cnt; strak[++top]=x; vis[x]=1; for(int i=head[x];i;i=nex[i]){ int tmp=to[i]; if(!dfn[tmp]) tarjan(tmp),low[x]=min(low[x],low[tmp]); else if(vis[tmp]) low[x]=min(low[x],dfn[tmp]); } if(dfn[x]==low[x]){ color_num++; while(strak[top+1]!=x){ int tmp=strak[top--]; vis[tmp]=0; col[tmp]=color_num; sum[color_num]+=v[tmp]; } }}void dfs(int x){ if(dp[x]) return ; dp[x]=sum[x];int maxn=0; for(int i=head[x],tmp;i;i=nex[i]){ if(!dp[to[i]]) dfs(to[i]); maxn=max(dp[to[i]],maxn); } dp[x]+=maxn;}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&v[i]); for(int i=1;i<=m;i++){ scanf("%d%d",&x[i],&y[i]); add(x[i],y[i]); } for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i); memset(head,0,sizeof head); memset(nex,0,sizeof nex); memset(to,0,sizeof to);tot=0; for(int i=1;i<=m;i++) if(col[x[i]]!=col[y[i]]) add(col[x[i]],col[y[i]]); memset(vis,0,sizeof vis); for(int i=1;i<=color_num;i++) if(!dp[i]) dfs(i),ans=max(dp[i],ans); printf("%d",ans);}
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<cstdlib>#include<algorithm>int n,m,p,t,jc[110000];using namespace std;int fastpow(int a,int k,int p){//快速幂 int ans=1; while(k){ if(k&1) ans=1ll*ans*a%p; a=1ll*a*a%p; k>>=1; } return ans;}int c(int n,int m,int p){ if(n<m) return 0; return 1ll*jc[n]*fastpow(jc[m],p-2,p)%p*fastpow(jc[n-m],p-2,p)%p;}int lucas(int n,int m,int p){ return m==0?1:1ll*c(n%p,m%p,p)*lucas(n/p,m/p,p)%p;}int main(){ scanf("%d",&t); while(t--){ scanf("%d%d%d",&n,&m,&p); jc[0]=1; for(int i=1;i<=p;i++) jc[i]=1ll*jc[i-1]*i%p; printf("%d\n",lucas(n+m,m,p)%p); }}
矩阵快速幂
#include<cstdio>#include<iostream>#include<cstring>#include<set>#include<map>#include<queue>#include<vector>#include<cstdlib>#include<algorithm>#define p 1000000007using namespace std;int n,k,t;struct st{ int a[5][5]; inline st operator *(const st &b)const{ st ans; for(int i=0;i<3;i++) for(int j=0;j<3;j++) { ans.a[i][j]=0; for(int k=0;k<3;k++) ans.a[i][j]=(1ll*ans.a[i][j]+1ll*a[i][k]*b.a[k][j]%p)%p; } return ans; }}q;st fastpow(st a,int k){ st ans=a;k--; while(k){ if(k&1) ans=ans*a; a=a*a; k>>=1; } return ans;}int main(){ scanf("%d",&t); q.a[0][0]=1;q.a[0][1]=1;q.a[0][2]=0;q.a[1][0]=0;q.a[1][1]=0; q.a[1][2]=1;q.a[2][0]=1;q.a[2][1]=0;q.a[2][2]=0; while(t--){ scanf("%d",&n); if(n==1||n==2||n==3) { printf("1\n"); continue; } st ans=fastpow(q,n-3); printf("%d\n",(1ll*ans.a[0][0]+1ll*ans.a[1][0]+1ll*ans.a[2][0])%1000000007); }}
阅读全文
0 0
- 模板2
- 模板2
- 模板2
- 模板2
- C++模板实战2:模板类
- C++模板(2) - 模板和静态变量
- 模板初学者指南2
- 读书笔记--模板(2)
- 计算几何模板2
- 2维数组模板
- 表达式模板(2)
- 模板函数2
- 完整版2-sat模板
- 2-SAT模板
- play 模板引擎 2
- MapReduce模板2
- 大数模板2
- 2-sat 问题 模板
- Lost in the City hihoCoder1094
- 工业物联网、智能交通、农业物联网等,物联网已渗透到各行各业!
- HUD 1224 Free DIY Tour(最短路spfa)
- mui初级入门教程(二)— html5+ webview 底部栏用法详解
- 拦截器
- 模板2
- nginx: [emerg] duplicate listen options for [::]:80
- 关于iPhoneX适配以及面容ID(FaceID)使用
- JN项目-演出活动管理,时间没值就不显示中括号
- 林轩田--机器学习技法--SVM笔记6--支持向量回归(Support+Vector+Regression)
- Java——反射基础
- git 基本命令
- 类的加载顺序
- centOS7 安装配置 lnmp参考博客整理