BZOJ1230 [Usaco2008 Nov]lites 开关灯
区间not,求区间1的个数。。。线段树裸题
然而窝并不会线段树
我们可以对序列分块,每个块记录0/1的个数和tag表示又没有区间not过就好了
1 /************************************************************** 2 Problem: 1230 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:796 ms 7 Memory:1608 kb 8 ****************************************************************/ 9 10 #include <cstdio> 11 #include <cmath> 12 #include <algorithm> 13 14 using namespace std; 15 const int N = 1e5 + 5; 16 const int SZ = 505; 17 18 int n, m; 19 int a[N]; 20 int sz, b[N], st[SZ], cnt[SZ][2], tag[SZ], cnt_block; 21 22 inline int read() { 23 static int x; 24 static char ch; 25 x = 0, ch = getchar(); 26 while (ch < '0' || '9' < ch) 27 ch = getchar(); 28 while ('0' <= ch && ch <= '9') { 29 x = x * 10 + ch - '0'; 30 ch = getchar(); 31 } 32 return x; 33 } 34 35 inline void pre() { 36 int i; 37 sz = sqrt(n); 38 if (!sz) sz = 1; 39 for (i = 1; i <= n; ++i) { 40 if (i % sz == 1 || sz == 1) st[++cnt_block] = i; 41 b[i] = cnt_block, ++cnt[cnt_block][0]; 42 } 43 st[cnt_block + 1] = n + 1; 44 } 45 46 inline void push_tag(int B) { 47 static int i; 48 if (!tag[B]) return; 49 for (i = st[B]; i < st[B + 1]; ++i) 50 a[i] = !a[i]; 51 swap(cnt[B][0], cnt[B][1]); 52 tag[B] = 0; 53 } 54 55 inline void change(int x, int y) { 56 static int i, t1, t2; 57 t1 = b[x], t2 = b[y]; 58 for (i = t1 + 1; i < t2; ++i) tag[i] = !tag[i]; 59 if (t1 == t2) 60 for (push_tag(t1), i = x; i <= y; ++i) 61 --cnt[t1][a[i]], a[i] = !a[i], ++cnt[t1][a[i]]; 62 else { 63 for (push_tag(t1), i = x; i < st[t1 + 1]; ++i) 64 --cnt[t1][a[i]], a[i] = !a[i], ++cnt[t1][a[i]]; 65 for (push_tag(t2), i = st[t2]; i <= y; ++i) 66 --cnt[t2][a[i]], a[i] = !a[i], ++cnt[t2][a[i]]; 67 } 68 } 69 70 inline int query(int x, int y) { 71 static int i, t1, t2, res; 72 t1 = b[x], t2 = b[y], res = 0; 73 for (i = t1 + 1; i < t2; ++i) 74 res += cnt[i][!tag[i]]; 75 if (t1 == t2) 76 for (push_tag(t1), i = x; i <= y; ++i) res += a[i]; 77 else { 78 for (push_tag(t1), i = x; i < st[t1 + 1]; ++i) res += a[i]; 79 for (push_tag(t2), i = st[t2]; i <= y; ++i) res += a[i]; 80 } 81 return res; 82 } 83 84 int main() { 85 int i, oper, x, y; 86 n = read(), m = read(); 87 pre(); 88 for (i = 1; i <= m; ++i) { 89 oper = read(), x = read(), y = read(); 90 if (oper == 0) change(x, y); 91 else printf("%d\n", query(x, y)); 92 } 93 return 0; 94 }
View Code
转载于:https://www.cnblogs.com/rausen/p/4418125.html
BZOJ1230 [Usaco2008 Nov]lites 开关灯相关推荐
- bzoj1230[Usaco2008 Nov]lites 开关灯*
bzoj1230[Usaco2008 Nov]lites 开关灯 题意: 一个01序列,初始全部元素为0,两种操作:l到r全部元素取反.询问l到r1的个数.序列长度≤100000,询问个数≤10000 ...
- B1230 [Usaco2008 Nov]lites 开关灯 线段树
就是线段树维护异或和.之前我线段树区间修改down都是修改当前区间,结果debug出不来,改成每次向下了. 题干: DescriptionFarmer John尝试通过和奶牛们玩益智玩具来保持他的奶牛 ...
- [BZOJ] 1620: [Usaco2008 Nov]Time Management 时间管理
1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 850 Solved ...
- bzoj 1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场(DFS)
1619: [Usaco2008 Nov]Guarding the Farm 保卫牧场 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 913 Solv ...
- bzoj 1620: [Usaco2008 Nov]Time Management 时间管理(贪心)
1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 834 Solved ...
- bzoj 1618: [Usaco2008 Nov]Buying Hay 购买干草(完全背包)
1618: [Usaco2008 Nov]Buying Hay 购买干草 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1196 Solved: 62 ...
- bzoj1231 [Usaco2008 Nov]mixup2 混乱的奶牛——状压DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1231 小型状压DP: f[i][j] 表示状态为 j ,最后一个奶牛是 i 的方案数: 所以 ...
- BZOJ 1619 [Usaco2008 Nov]Guarding the Farm 保卫牧场:dfs【灌水】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1619 题意: 给你一个n*m的地形图,位置(x,y)的海拔为h[x][y]. 一个山顶的定 ...
- BZOJ 1229: [USACO2008 Nov]toy 玩具
题意:就是经典餐巾问题 就是天数特别大 到了10^5 这道题弄了我好久啊,第一道三分题,不过好像三分并不难,我怕我讲不好,网上那么多我就不在这里说了. 网上面题解写的简直是太草率+简单了吧.坑爹的百度 ...
- python三级联动_ajax 实现三级联动
ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...
最新文章
- keras 的 example 文件 lstm_text_generation.py 解析
- java 装配_JAVA入门[13]-Spring装配Bean
- SQL中OBJECT_ID,OBJECT_NAME,OBJECT_DEFINITION的用法
- IO 密集型服务 性能优化实战记录
- 基于FPGA实现Camera Link接口
- delphi 演示数据路径
- 【报告分享】2022年中国商业十大热点展望.pdf(附下载链接)
- java时间格式24小时制12小时制
- eclipse常见问题配置
- 项目实施之预防注入漏洞
- eclipse 主题设置
- 自己不能跑的车凭什么叫自行车?B站硬核up主把自行车做成了自动驾驶
- png、jpg图片格式的区别及
- 【软件定义汽车】SOA框架介绍
- linux tc限制网卡速度,使用TC 对LINUX服务器网卡进行带宽限制的办法
- 修11代12代希捷坏道
- MySQL查询和删除重复记录
- 学无止境,笔不停耕----写博客两周年的一些感悟
- PHP商城 商品模块 数据库 表设计
- 脑壳疼?别再写满屏的 if-else 了,看我怎么消灭它!