数学模型:

维持一个01序列,支持2种操作:

1、将给定区间内的数取反;

2、查询给定区间内1的个数。

这题就是“暑假集训每日一题0712”的简化版

View Code

#include <stdio.h>
#define N 100001
int n,m,ans;
int sum[4*N],rev[4*N];
void update(int cur)
{int ls=cur<<1,rs=cur<<1|1;sum[cur]=sum[ls]+sum[rs];
}
void pushdown(int cur,int x,int y)
{int mid=(x+y)>>1,ls=cur<<1,rs=cur<<1|1;if(rev[cur]){sum[ls]=mid-x+1-sum[ls];sum[rs]=y-mid-sum[rs];rev[ls]^=1;rev[rs]^=1;rev[cur]=0;}
}
void build(int cur,int x,int y)
{int mid=(x+y)>>1,ls=cur<<1,rs=cur<<1|1;sum[cur]=rev[cur]=0;if(x==y)    return;build(ls,x,mid);build(rs,mid+1,y);
}
void reverse(int cur,int x,int y,int s,int t)
{int mid=(x+y)>>1,ls=cur<<1,rs=cur<<1|1;if(x>=s && y<=t){rev[cur]^=1;sum[cur]=y-x+1-sum[cur];return;}pushdown(cur,x,y);if(mid>=s)  reverse(ls,x,mid,s,t);if(mid+1<=t)    reverse(rs,mid+1,y,s,t);update(cur);
}
void query(int cur,int x,int y,int s,int t)
{int mid=(x+y)>>1,ls=cur<<1,rs=cur<<1|1;if(x>=s && y<=t){ans+=sum[cur];return;}pushdown(cur,x,y);if(mid>=s)  query(ls,x,mid,s,t);if(mid+1<=t)    query(rs,mid+1,y,s,t);
}
int main()
{int i,opt,x,y;while(~scanf("%d%d",&n,&m)){build(1,1,n);for(i=0;i<m;i++){scanf("%d%d%d",&opt,&x,&y);if(opt){ans=0;query(1,1,n,x,y);printf("%d\n",ans);}else    reverse(1,1,n,x,y);}}return 0;
}

转载于:https://www.cnblogs.com/algorithms/archive/2012/07/12/2588020.html

SPOJ7259(Light Switching)相关推荐

  1. 洛谷P2826 [USACO08NOV]光开关Light Switching [2017年6月计划 线段树02]

    P2826 [USACO08NOV]光开关Light Switching 题目描述 Farmer John tries to keep the cows sharp by letting them p ...

  2. POJ 3553 Light Switching Game 博弈论 nim积 sg函数

    http://poj.org/problem?id=3533 变成三维的nim积..前面hdu那个算二维nim积的题的函数都不用改,多nim积一次就过了...longlong似乎不必要但是还是加上了 ...

  3. SPOJ 7259 Light Switching (水题,区间01取反)

    #include <iostream> #include <stdio.h> #include <algorithm> #define lson rt<< ...

  4. 博弈论探讨及题目总结

    转载自爱神博客:http://blog.csdn.net/acm_cxlove/article/details/7854526 首先当然要献上一些非常好的学习资料: 基础博弈的小结:http://bl ...

  5. (转载)--SG函数和SG定理【详解】

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...

  6. 组合博弈游戏 - SG函数和SG定理

    转载来自:http://blog.csdn.net/luomingjun12315/article/details/45555495 在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜 ...

  7. 组合游戏 - SG函数和SG定理

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...

  8. 语法入门*算法入门题单

    作者:王清楚 链接:https://ac.nowcoder.com/discuss/817596?type=101&order=0&pos=1&page=4&chann ...

  9. 【新手上路】语法入门算法入门题单

    作者:王清楚 链接:[新手上路]语法入门&算法入门题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 来源:牛客网 介绍:本题单分为语法入门和算法 ...

  10. SG函数和SG定理【详解】

    在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...

最新文章

  1. 2014/08/13 – Backbonejs
  2. 科来数据包生成器找不到网卡_CPU:网卡老哥,你到底怎么工作的?
  3. Qt|C++工作笔记-QVector与Vector去重复的值
  4. 杭电2078复习时间
  5. 保密作战--在网络上隐藏自己
  6. Java 8 时间日期库的20个使用演示样例
  7. pdf expert使用教程:如何在mac上给PDF怎么调整页面顺序
  8. linux队列运行任务查看,Linux work queue工作队列小结与使用
  9. 飞机订票系统- c语言课程设,C语言课程设计飞机订票系统设计
  10. E680I使用上的常见问题小结
  11. 数据分析的价值是什么?如何做好数据分析?
  12. Unity3D中如何制作身临其境的3d音效
  13. androidnbsp;网络联接nbsp;CMWAPnbsp;CTWAP
  14. 圣帕特里克 VoxEdit 大赛
  15. 网线 绿灯长亮 黄灯不亮
  16. 在天堂与地狱之间——清华浪子梦断中关村 (转)
  17. SAP vf11发票冲销
  18. BOS金蝶云星空开发简单账表
  19. HCL Nomad 1.0.9中的新功能
  20. 手机token登入软件_app开发调试工具_app开发token使用

热门文章

  1. Django之forms组件使用
  2. JSP-Runoob:JSP 自定义标签
  3. owncloud个人私有云 一键安装包操作指南
  4. 最近新明白的SQL小知识
  5. 【转】飞鸽端口号被占用时的解决方法
  6. vlookup 公式使用及常见问题
  7. 最近公共祖先 解题报告
  8. npm创建react项目
  9. vs配置opencv
  10. 使用Spring的Property文件存储测试数据 - 初始化