B. Light bulbs

There are NNN light bulbs indexed from 000 to N−1N-1N−1. Initially, all of them are off.

A FLIP operation switches the state of a contiguous subset of bulbs. FLIP(L,R)FLIP(L, R)FLIP(L,R) means to flip all bulbs xxx such that L≤x≤RL \leq x \leq RL≤x≤R. So for example, FLIP(3,5)FLIP(3, 5)FLIP(3,5) means to flip bulbs 333 , 444 and 555, and FLIP(5,5)FLIP(5, 5)FLIP(5,5) means to flip bulb 555.

Given the value of NNN and a sequence of MMM flips, count the number of light bulbs that will be on at the end state.

InputFile

The first line of the input gives the number of test cases, TTT. TTT test cases follow. Each test case starts with a line containing two integers NNN and MMM, the number of light bulbs and the number of operations, respectively. Then, there are MMM more lines, the iii-th of which contains the two integers LiL_iLi​ and RiR_iRi​, indicating that the iii-th operation would like to flip all the bulbs from LiL_iLi​ to RiR_iRi​ , inclusive.

1≤T≤10001 \leq T \leq 10001≤T≤1000

1≤N≤1061 \leq N \leq 10^61≤N≤106

1≤M≤10001 \leq M \leq 10001≤M≤1000

0≤Li≤Ri≤N−10 \leq L_i \leq R_i \leq N-10≤Li​≤Ri​≤N−1

OutputFile

For each test case, output one line containing Case #x: y, where xxx is the test case number (starting from 111) and yyy is the number of light bulbs that will be on at the end state, as described above.

样例输入

2
10 2
2 6
4 8
6 3
1 1
2 3
3 4

样例输出

Case #1: 4

Case #2: 3

题意:
   N 个 灯泡(编号 0 ~ N-1) M 次操作(初始灯都是关的)
   每次操作 给 2个数 L, R,把[L, R]区间内的开关翻转 
   求 M次操作后 有多少灯开着  题解:
  把操作区间的左右位置le,ri离散化到一维数组b中,,记录每个区间被操作的次数,最后前缀和判断奇偶即可
//B. Light bulbs
#include<iostream>
#include<algorithm>
#include<string.h>
#define ll long long
using namespace std;
int a[],b[];//a是记录操作次数,b是记录区间离散化到数组中的位置
int main()
{
int t;
scanf("%d",&t);
for(int k=;k<=t;k++)
{
int n,m,cnt=;
scanf("%d%d",&n,&m);
memset(a,,sizeof(a));
for(int i=;i<=m;i++)
{
int le,ri;
scanf("%d%d",&le,&ri);
if(a[le]==)
b[cnt++]=le;
if(a[++ri]==)
b[cnt++]=ri;
a[le]++;
a[ri]++;
}
sort(b,b+cnt);
int ans=;
ll num=a[b[]];
for(int i=;i<cnt;i++)
{
if(num%==)
ans=ans+b[i]-b[i-];//区间长度就是亮灯个数
num=num+a[b[i]];//求区间[0,b[i]]所有灯泡操作次数
}
printf("Case #%d: %d\n",k,ans); }
return ;
}

B. Light bulbs的更多相关文章

  1. zoj 2976 Light Bulbs(暴力枚举)

    Light Bulbs Time Limit: 2 Seconds      Memory Limit: 65536 KB Wildleopard had fallen in love with hi ...

  2. 哈理工2015 暑假训练赛 zoj 2976 Light Bulbs

    MS    Memory Limit:65536KB    64bit IO Format:%lld & %llu SubmitStatusid=14946">Practice ...

  3. 2019 ACM-ICPC 上海网络赛 B. Light bulbs (差分)

    题目链接:Light bulbs 比赛链接:The Preliminary Contest for ICPC Asia Shanghai 2019 题意 给定 \(N\) 个灯泡 (编号从 \(0\) ...

  4. B. Light bulbs(2019 ICPC上海站)

    There are NN light bulbs indexed from 00 to N-1N−1. Initially, all of them are off. A FLIP operation ...

  5. The Preliminary Contest for ICPC Asia Shanghai 2019 B. Light bulbs

    题目:https://nanti.jisuanke.com/t/41399 思路:差分数组 区间内操作次数为奇数次则灯为打开状态 #include<bits/stdc++.h> using ...

  6. The Preliminary Contest for ICPC Asia Shanghai 2019 B Light bulbs (离散的差分)

    复杂度分析,询问一千次,区间长1e6,O(1e9)超时. 那么我们知道对于差分来说,没必要一个一个求,只需要知道区间长就可以了,所以我们定义结构体差分节点,一个头结点,一个尾节点. 这样tail.lo ...

  7. 2019年icpc上海网络赛 B Light bulbs (分块、差分)

    https://nanti.jisuanke.com/t/41399 题目大意: 有n个灯,m次操作,每次修改[l,r]内的灯,(off - on ,on - off),问最后有几盏灯亮着. 换种说法 ...

  8. nRF5 SDK for Mesh(八) Exploring Mesh APIs using light switch example,使用 灯开关 案例探索BLE mesh 的APIS

    Exploring Mesh APIs using light switch example The light switch example is meant to showcase the API ...

  9. Unity Lighting - Light Types 灯光类型(八)

      Light Types 灯光类型 We have now covered some of the project settings which need to be considered befo ...

随机推荐

  1. linux contab

    定义格式: * * * * * commandm(0-59), h(0-23) d(1-31) M(1-12) W(0-7)周W用1-6表示分别对应:每周一….五,六,周日在国外老外周日相当于第一个工 ...

  2. ASP.NET Core搭建多层网站架构【15-扩展之使用Obfuscar混淆加密保护代码】

    2020/02/03, ASP.NET Core 3.1, VS2019, Obfuscar 2.2.25 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[15-扩展之使 ...

  3. 将jar包安装到本地Maven仓库

    1.安装jar包到本地仓库 mvn install:install-file -Dfile=F:\jiefu\lib\alipay-sdk-java20170324180803.jar -Dgroup ...

  4. ES6:let 与 const

    在ES6中,let 用来定义变量,const 用来定义常量 事实上var可以看成是js语言设计上的错误,但是不能移除,因为需要向后兼容 于是提出了一个新的关键字let,可以将let看成更完美的var ...

  5. 关于永久POE

    1.传统POE 在我们的企业网络中,经常会使用交换机给IP电话或者无线AP供电,以使得其正常的工作. 正常情况下,我们都知道,普通的POE是在PSE交换机启动完成后,然后再给PD(Power Devi ...

  6. 自身经历 .NET转Java 的一些分享

    原因 楼主在二线城市从事.NET开发8年,当薪资达到15k想往20k跳的时候,发现一个残酷的现实.在招聘信息上给出这个薪资的一共10家,其中:2~3家给出的是假的薪资范围(吸引面试者),2家是总人数不 ...

  7. sql语句插入时提示:“Duplicate entry 'XXX' for key 1 ” 是什么原因?

    你用的是MYSQL 数据库吧? 1:提示信息翻译:插入 xxx 使索引1重复分析:索引如果是primary unique这两两种,那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性.否则就会产 ...

  8. centos 安装phpize

    yum -y install php-devel 然后 /usr/bin/phpize

  9. 使用KVO键值监听

    本文章从五个方面介绍KVO(Key-Value-Observer)键值观察者: (1)功能介绍 (2)使用步骤 (3)应用场景 (4)原理理解 (5)相关的面试题 一 功能介绍 KVO是OC语言对「观 ...

  10. js学习:基本数据类型

    数据类型在 js 里面分为两个大类: 基本数据类型 引用数据类型 基本数据类型: 数值 number 各种意义上的数字:整数.小数.浮点数等 正数:100 负数:-100 浮点数,小数:1.234 进 ...