P2846 [USACO08NOV]光开关Light Switching】的更多相关文章

P2846 [USACO08NOV]光开关Light Switching 题目大意: 灯是由高科技——外星人鼠标操控的.你只要左击两个灯所连的鼠标, 这两个灯,以及之间的灯都会由暗变亮,或由亮变暗.右击两个灯所连的鼠 标,你就可以知道这两个灯,以及之间的灯有多少灯是亮的.起初所有灯都是暗的,你的任务是在LZ之前算出灯的亮灭. 线段树的懒标记下传 #include<bits/stdc++.h> #define N 1000005 #define LL long long #define RE r…
题目描述 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 <= 100,000) cow stalls conveniently numbered 1..N has a colorful light above it. At th…
P2826 [USACO08NOV]光开关Light Switching 题目描述 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 <= 100,000) cow stalls conveniently numbered 1..N…
题目传送门 题目大意,给你一串灯,按一下开关可以将灯的状态取反(开变成关,关变成开).维护这个序列的两种操作:询问区间内有多少灯是开着的,区间按灯. 开始想的是分别维护区间内0的数量,1的数量,两个懒标记.后来真正写到维护懒标记的时候却感觉不太可行,因为你并不精确的知道区间内哪里是开着,哪里是关着的. 其实我们本质上就是在维护整个异或序列.因为把每个位置取反,实际上就是在进行异或运算.(0->1,1->0).这样我们在区间修改的时候,只需要维护区间内1的个数,把它用区间长度减去原来的值便得到新…
题目描述 灯是由高科技--外星人鼠标操控的.你只要左击两个灯所连的鼠标, 这两个灯,以及之间的灯都会由暗变亮,或由亮变暗.右击两个灯所连的鼠 标,你就可以知道这两个灯,以及之间的灯有多少灯是亮的.起初所有灯都是暗的,你的任务是在\(LZ\)之前算出灯的亮灭. 输入输出格式 输入格式: 第1 行: 用空格隔开的两个整数\(N\) 和\(M\),\(N\) 是灯数 第\(2..M+1\) 行: 每行表示一个操作, 有三个用空格分开的整数: 指令号, \(S_i\) 和\(E_i\) 第\(1\) 种…
#include <iostream> #include <stdio.h> #include <algorithm> #define lson rt<<1,L,mid #define rson rt<<1|1,mid+1,R /* 水题 题意:给出n个初始为0的数,有两种操作 0 a b 将区间[a,b]取反 1 a b 查询区间[a,b]中1的个数 */ using namespace std; ; int n,m; struct Node{…
思路:三维Nim积 代码: #include<set> #include<map> #include<stack> #include<cmath> #include<queue> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> typedef long l…
http://poj.org/problem?id=3533 变成三维的nim积..前面hdu那个算二维nim积的题的函数都不用改,多nim积一次就过了...longlong似乎不必要但是还是加上了 代码 #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<iostream> #include<map> #include<…
Code: #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn = 200000 + 4; int lazy[maxn << 2], sumv[maxn << 2]; inline void pushdown(int o, int l,int r) { int ls = (o << 1), rs = (o…
题目连接:http://www.spoj.com/problems/LITE/en/. 题意:有若干个灯泡,每次对一段操作,这一段原先是亮的,就关了:原先是关着的,就打开.询问某一段的打开的灯泡的个数. 分析:很显然的成段更新,但是一开始想着用某段是不是相同的来维护,敲了很长时间都没有实现.后来经过大力学长知道,对有懒惰标记的节点的亮着的灯泡的和这么更新即可:c[o]=r-l+1-c[o]; 简直奥义! 另外,从这题可以看出,我对于成段更新的懒惰标记理解不够深刻.应该理解如下:对某点进行push…