[线段树]CodeForces 356A
2015-08-23 11:47
309 查看
题意:
有n个人,进行m场比赛,每次给出l,r,w(区间和最后赢得人),问最后谁赢,输的人输出打败他的人的id,最后赢的人输出0.
分析:
线段树成段更新,已经更新过的就不用更新了。另外赢的人还要比赛,所以不能更新。更新区间为(l,w-1),(w+1,r)。 那么最终没有更新的就是赢家。
有n个人,进行m场比赛,每次给出l,r,w(区间和最后赢得人),问最后谁赢,输的人输出打败他的人的id,最后赢的人输出0.
分析:
线段树成段更新,已经更新过的就不用更新了。另外赢的人还要比赛,所以不能更新。更新区间为(l,w-1),(w+1,r)。 那么最终没有更新的就是赢家。
[code]#include<iostream> #include<stdio.h> #include<math.h> #include <map> #include<cstring> #include<vector> #include<algorithm> #include<stdlib.h> #define read freopen("q.txt","r",stdin) using namespace std; const int maxn = 10000007; int c[maxn]; int n,m; void pushdown(int rt) { if(!c[rt<<1])c[rt<<1]=c[rt]; if(!c[rt<<1|1])c[rt<<1|1]=c[rt]; c[rt]=0; } void build(int l,int r,int rt) { if(l==r)return ; int mid=(l+r)/2; build(l,mid,rt<<1); build(mid+1,r,rt<<1|1); } void update(int L,int R,int l,int r,int val,int rt) { if(L<=l && r<=R) { if(!c[rt])c[rt]=val; return ; } int mid=(l+r)/2; if(c[rt])return ; // pushdown(rt); if(L<=mid)update(L,R,l,mid,val,rt<<1); if(R>mid)update(L,R,mid+1,r,val,rt<<1|1); } void query(int l,int r,int rt) { if(l==r) { if(c[rt]==0)printf("0 "); else printf("%d ",c[rt]); return ; } int mid=(l+r)/2; pushdown(rt); query(l,mid,rt<<1); query(mid+1,r,rt<<1|1); } int main() { //read; int i,j; while(~scanf("%d%d",&n,&m)) { memset(c,0,sizeof(c)); int l,r,w; build(1,n,1); for(i=0;i<m;i++) { scanf("%d%d%d",&l,&r,&w); if(w-1>=l)update(l,w-1,1,n,w,1); if(w+1<=r)update(w+1,r,1,n,w,1); //for(j=l;j<=r;j++)cout<<c[a[j]]<<" ** "<<j<<endl; } query(1,n,1); printf("\n"); } }
相关文章推荐
- css画三角形
- jQuery中focusin()和focus()、find()和children()的区别
- 微博登录过程分析
- java下载网络图片
- 微信自定义回复文本信息
- jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
- 微博登录过程分析
- 在SharePoint列表中使用动态筛选条件[今日][Today]
- PAT 1018. Public Bike Management (30)
- codeforces 571 A Lengthening Sticks
- 淘宝网采用什么技术架构来实现网站高负载分析
- 树状数组
- 欧几里得算法与扩展欧几里得算法
- AngularJS中文入门教程
- 问答题
- 分布式全文检索系统SolrCloud简介
- hdu5418Victor and World(floyd算法+状压dp)
- Codeforces Round #270(利用prim算法)
- VS2015环境配置: VS2015 未能正确加载“ResourceManagerPackage”包的问题
- Scala学习笔记(五):类和对象