usaco2008 nov 区间异或求和
Problem 11: Switching Lights [LongFan, 2008]
Farmer John tries to keep the cows sharp by letting them play with
intellectual toys. One of the larger toys is the lights in the barn.
Each of the N (2 <= N <= 500) cow stalls conveniently numbered
1..N has a colorful light above it.
At the beginning of the evening, all the lights are off. The cows
control the lights with a set of N pushbutton switches that toggle
the lights; pushing switch i changes the state of light i from off
to on or from on to off.
The cows read and execute a list of M (1 <= M <= 2,000) operations
expressed as one of two integers (0 <= operation <= 1).
The first operation (denoted by a 0 command) includes two subsequent
integers S_i and E_i (1 <= S_i <= E_i <= N) that indicate a starting
switch and ending switch. They execute the operation by pushing
each pushbutton from S_i through E_i inclusive exactly once.
The second operation (denoted by a 1 command) asks the cows to count
how many lights are on in the range given by two integers S_i and
E_i (1 <= S_i <= E_i <= N) which specify the inclusive range in
which the cows should count the number of lights that are on.
Help FJ ensure the cows are getting the correct answer by processing
the list and producing the proper counts.
PROBLEM NAME: swtch
INPUT FORMAT:
* Line 1: Two space-separated integers: N and M
* Lines 2..M+1: Each line represents an operation with three
space-separated integers: operation, S_i, and E_i
SAMPLE INPUT (file swtch.in):
4 5
0 1 2
0 2 4
1 2 3
0 2 4
1 1 4
INPUT DETAILS:
Four lights; five commands. Here is the sequence that should
be processed:
Lights
1 2 3 4
Init: O O O O O = off * = on
0 1 2 -> * * O O toggle lights 1 and 2
0 2 4 -> * O * *
1 2 3 -> 1 count the number of lit lights in range 2..3
0 2 4 -> * * O O toggle lights 2, 3, and 4
1 1 4 -> 2 count the number of lit lights in the range 1..4
OUTPUT FORMAT:
* Lines 1..number of queries: For each output query, print the count
as an integer by itself on a single line.
SAMPLE OUTPUT (file swtch.out):
1
2
就是一开始所有的灯是灭着的,然后....
可以用线段树解决
/* ***********************************************
Author :guanjun
Created Time :2015/10/4 15:30:49
File Name :1.cpp
************************************************ */
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <iomanip>
#include <list>
#include <deque>
#include <stack>
#define ull unsigned long long
#define ll long long
#define mod 90001
#define INF 0x3f3f3f3f
#define maxn 100000+10
#define cle(a) memset(a,0,sizeof(a))
#define ls i<<1
#define rs i<<1|1
const ull inf = 1LL << ;
const double eps=1e-;
using namespace std;
struct node{
int l,r,c;
int sum;
int dist(){
return r-l+;
}
}nod[maxn*];
void push_up(int i){
nod[i].sum=nod[ls].sum+nod[rs].sum;
}
void push_down(int i){
if(nod[i].c){
nod[ls].c^=;
nod[rs].c^=;
nod[ls].sum=nod[ls].dist()-nod[ls].sum;
nod[rs].sum=nod[rs].dist()-nod[rs].sum;
nod[i].c=;
}
}
void build(int i,int l,int r){
nod[i].l=l;
nod[i].r=r;
nod[i].c=nod[i].sum=;
if(l==r){
return ;
}
int mid=(l+r)/;
build(ls,l,mid);
build(rs,mid+,r);
push_up(i);
}
void update(int i,int l,int r){
if(nod[i].l==l&&nod[i].r==r){
nod[i].c^=;
nod[i].sum=nod[i].dist()-nod[i].sum;
return ;
}
push_down(i);
int mid=(nod[i].l+nod[i].r)/;
if(r<=mid)update(ls,l,r);
else if(l>mid)update(rs,l,r);
else {
update(ls,l,mid);
update(rs,mid+,r);
}
push_up(i);
}
int query(int i,int l,int r){
if(nod[i].l==l&&nod[i].r==r){
return nod[i].sum;
}
push_down(i);
int mid=(nod[i].l+nod[i].r)/;
//int sum=0;
if(r<=mid)return query(ls,l,r);
else if(l>mid)return query(rs,l,r);
else return query(ls,l,mid)+query(rs,mid+,r);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
//freopen("out.txt","w",stdout);
int n,m,po,x,y;
while(cin>>n>>m){
build(,,n);
for(int j=;j<=m;j++){
scanf("%d%d%d",&po,&x,&y);
if(po==)update(,x,y);
else printf("%d\n",query(,x,y));
}
}
return ;
}
数据 http://contest.usaco.org/TESTDATA/NOV08_1.htm
usaco2008 nov 区间异或求和的更多相关文章
- BZOJ 1230 [Usaco2008 Nov]lites 开关灯:线段树异或
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1230 题意: 有n盏灯,一开始全是关着的. 有m次操作(p,a,b).p为0,则将区间[a ...
- 1230: [Usaco2008 Nov]lites 开关灯
1230: [Usaco2008 Nov]lites 开关灯 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1162 Solved: 589[Sub ...
- NOJ——1669xor的难题(详细的树状数组扩展—异或求和)
[1669] xor的难题 时间限制: 1000 ms 内存限制: 65535 K 问题描述 最近Alex学长有个问题被困扰了很久,就是有同学给他n个数,然后给你m个查询,然后每个查询给你l和r(左下 ...
- bzoj 2819 Nim dfn序+树状数组维护区间异或值
题目大意 著名游戏设计师vfleaking,最近迷上了Nim.普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任意多个,可以取完,但不可以不取.谁不能取谁输.这个游戏是有必胜策略 ...
- BZOJ 4017 小 Q 的无敌异或 ( 树状数组、区间异或和、区间异或和之和、按位计贡献思想 )
题目链接 题意 : 中文题 分析 : 首先引入两篇写的很好的题解 题解一.题解二 听说这种和异或相关区间求和的问题都尽量按位考虑 首先第一问.按二进制位计贡献的话.那么对于第 k 位而言 其贡献 = ...
- [Usaco2008 Nov]mixup2 混乱的奶牛 简单状压DP
1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 685 Solved: 383[S ...
- [BZOJ1618][Usaco2008 Nov]Buying Hay 购买干草
[BZOJ1618][Usaco2008 Nov]Buying Hay 购买干草 试题描述 约翰的干草库存已经告罄,他打算为奶牛们采购H(1≤H≤50000)磅干草. 他知道N(1≤N≤100)个干草 ...
- BZOJ 1620: [Usaco2008 Nov]Time Management 时间管理( 二分答案 )
二分一下答案就好了... --------------------------------------------------------------------------------------- ...
- BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛( dp )
状压dp dp( x , S ) 表示最后一个是 x , 当前选的奶牛集合为 S , 则状态转移方程 : dp( x , S ) = Σ dp( i , S - { i } ) ( i ∈ S , ...
随机推荐
- Java中的自动类型转换
Java里所有的数值型变量可以进行类型转换,这个大家都知道,应该不需要详细解释为什么. 2 在说明自动类型转换之前必须理解这样一个原则“表数范围小的可以向表数范围大的进行自动类型转换” 3 关于jav ...
- CodeForces 762D Maximum path
http://codeforces.com/problemset/problem/762/D 因为是3*n很巧妙的地方是 往左走两步或更多的走法都可以用往回走以一步 并走完一列来替换 那么走的方法就大 ...
- R语言入门--画图(一)--需要注意的地方
一.注意‘\t’是‘\t’ 不是‘/t’ 写'/t'就错了 就不是换行符了 二.程序报错先检查有没有这个包
- Laravel 控制器的middleware中间件
场景:活动开始前只能访问宣传页面,开始后才可以访问其他页面: 步骤: 新建中间件, 注册中间件, 使用中间件, 中间件的前置和后置操作. 控制器: public function activity0( ...
- R读数据stringsAsFactors=F,存数据时row.names = F
stringsAsFactors=F 以前在r里读数据,经常把character读成factor,还得费半天劲把它转回来,尤其是把factor转成numeric还没有那么直接.例如: dat< ...
- Idea配置Tomcat以及maven
配置Tamcat Run-->Edit Configurations +-->如果列表里没有tomcat-->点击33 items more irrelevant继续寻找--> ...
- 移动端日历选择控件(支持Zepto和JQuery)
移动端日历选择控件(支持Zepto和JQuery) <!DOCTYPE html> <html> <head> <meta charset="utf ...
- mysql大数据量分页查询优化
参考文章:https://www.dexcoder.com/selfly/article/293 Mysql的分页查询十分简单,但是当数据量大的时候一般的分页就吃不消了. 传统分页查询:SELECT ...
- 【面试 JDK】【第一篇】Object类面试详解
1.Object类有哪些方法 1>clone()方法 保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异 ...
- WIN7实现多用户远程桌面
版权声明:本文为博主原创文章,未经博主允许不得转载. 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://jonnyqin.blog. ...