hoj2681Magic-Pen1
来源:互联网 发布:科比跟腱断裂赛季数据 编辑:程序博客网 时间:2024/06/07 20:09
//感谢模板和wawawawa大神的指导
//代码含全角空格
#include <iostream>#include <cstdio>#include <cstring>#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;const int N=10005;const int inf=0x3f3f3f3f;int sum[N<<2];int lazy[N<<2];void pushup(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void pushdown(int rt,int m){ if(lazy[rt]!=-1){//是否标记 lazy[rt<<1]=lazy[rt<<1|1]=lazy[rt]; sum[rt<<1]= (m-(m >> 1))*lazy[rt];//这样就不用判断奇偶 sum[rt<<1|1]=(m >> 1)*lazy[rt]; /* sum[rt<<1]=m >> 1; sum[rt<<1|1]=m >> 1; if (m & 1)判断奇偶 ++sum[rt << 1]; */ lazy[rt]=-1; }}void build(int l,int r,int rt){ lazy[rt]=-1;//初始,未标记 sum[rt]=0; if(l==r)return ; int m=(l+r)>>1; build(lson); build(rson); pushup(rt); }void update(int L,int R,int c,int l,int r,int rt){ if(L<=l&&R>=r){//为区间长,包含在所查询的区间时就标记(operate); lazy[rt]=c;//标记 sum[rt]=(r-l+1)*c;//此区间内颜色c的总数 return; } pushdown(rt,r-l+1);//后者区间长 int m=(l+r)>>1; if(L <= m)update(L,R,c,lson); if(R > m) update(L,R,c,rson); pushup(rt);}int main(){ int n,m,x,y,c; while(scanf("%d%d",&n,&m)==2){ build(1,n,1); while(m--){ scanf("%d%d%d",&x,&y,&c); if(x>y){ int tmp=y;y=x;x=tmp; } update(x,y,c,1,n,1); } printf("%d\n",n-sum[1]); } return 0;}
0 0
- hoj2681Magic-Pen1
- Magic-Pen1 hoj
- HOJ 2681 Magic-Pen1
- ios --- 动态获取键盘高度
- java 泛型的内部原理:类型擦除以及类型擦除带来的问题
- NSString类的常用方法
- java 简单爬虫
- 新浪微博API OAuth2 python客户端改进
- hoj2681Magic-Pen1
- qt /usr/bin/ld: cannot find -lGL
- java 去除或者替换字符串里面的数字或者字母
- HDU3371 - Connect the Cities(最小生成树 合并费用为0的点)
- hdu1159 LCS模板题
- linux下TCP通讯相关问题:select控制数据收发 对网络异常情况(如拔网线)的处理 停止程序后如何能快速再次bind
- 杭电 1846(巴什博弈)
- Android Tween动画之RotateAnimation实现图片不停旋转
- Ten Useful Techniques in Go