bzoj2054 疯狂的馒头
来源:互联网 发布:1元cn域名注册 编辑:程序博客网 时间:2024/04/28 06:23
题目
区间操作,首选线段树,但是这道题显然不可行。
怎么办,我们考虑如果从后往前的话,一个数最多被修改一次,并查集就派上用场了。
看代码
#include<bits/stdc++.h>#define N 10000000using namespace std;int n,m,p,q;int f[N+1],a[N+1];inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}inline int read(){ int x=0,b=1; char c=nc(); for(;!(c<='9'&&c>='0');c=nc())if(c=='-')b=-1; for(;c<='9'&&c>='0';c=nc())x=x*10+c-'0'; return x*b;}inline void write(int x){ if(x==0)putchar('0'); else { char buf[15]; int len=0; if(x<0)putchar('-'),x=-x; while(x)buf[++len]=x%10+'0',x/=10; for(int i=len;i>=1;i--)putchar(buf[i]); } putchar('\n');}inline int find(int x){ int tmp,i,rt; rt=x; while(rt!=f[rt]) rt=f[rt]; i=x; while(i!=rt) { tmp=f[i]; f[i]=rt; i=tmp; } return rt;}int main(){ freopen("in.txt","r",stdin); n=read(),m=read(),p=read(),q=read(); for(int i=1;i<=n;i++)f[i]=i; for(int i=m;i>=1;i--) { int x=((long long)i*p+q)%n+1; int y=((long long)i*q+p)%n+1; if(x>y)swap(x,y); for(int j=find(x);j<=y;j=find(j)) a[j]=i,f[j]=j+1; } for(int i=1;i<=n;i++) write(a[i]); return 0;}
比较坑的是,递归写会爆栈233
还有long long 强转 int 慢bi了。
阅读全文
0 0
- bzoj2054: 疯狂的馒头
- BZOJ2054疯狂的馒头
- 【BZOJ2054】疯狂的馒头
- bzoj2054 疯狂的馒头
- BZOJ2054 疯狂的馒头
- bzoj2054 疯狂的馒头
- 【BZOJ2054】疯狂的馒头
- 【bzoj2054】疯狂的馒头
- 【bzoj2054】 疯狂的馒头 并查集
- 【bzoj2054】【疯狂的馒头】【并查集】
- BZOJ2054 疯狂的馒头 并查集
- [BZOJ2054] 疯狂的馒头/[BZOJ2375] 疯狂的涂色
- 【BZOJ2054】疯狂的馒头(并查集)
- #BZOJ2054#疯狂的馒头(并查集经典)
- 【BZOJ2054】疯狂的馒头【BZOJ2375】疯狂的涂色【并查集】
- 【BZOJ 2054】 疯狂的馒头
- bzoj 2054 疯狂的馒头
- Codevs 2054疯狂的馒头
- Memcache的分布式介绍
- CNN的一些基本知识,以后有需要可以看看
- jq代码学习1——《锋利的JQUERY》导航栏
- 手机验证
- 目标文件
- bzoj2054 疯狂的馒头
- 第6篇 符号表
- (POJ
- MySQL索引类型及创建
- “家族”“团伙”小总结 (简称"小""家""伙") +再来一波关押罪犯
- luogu1594 护卫队
- 阿里云ECS部署Docker服务
- Core Java Volume I 读书笔记---第十二章 泛型程序设计
- 【算法分析与设计】【第三周】215. Kth Largest Element in an Array