当前位置: 首页 > news >正文

硬币翻转问题,区间操作

描述:

  给定n个硬币,编号为0, 1, 2, ......, n-1,都为反面朝上(即都为0)。有m次操作,每次将a, b区间内的硬币翻转,请输出翻转后的硬币排列。

输入:

5 2
1 2
2 4

输出:

10110


解析:

  对于该题,最简单的做法是模拟,即建立数组s[n],初始化为0,然后每次将[a, b]上的数字+1,最后顺序输出。如果s[i]为偶数,则为0面朝上,否则为1面朝上。这种做法的修改的时间复杂度为O(m*n),输出为O(n),当m和n都比较大的时候代价难以承受。

  显然题目要求是对区间进行操作,所以自然而然地想到了树状数组或线段树。经过模拟方法的分析后,发现操作为区间修改,求单点的值,用树状数组或线段树都可以实现。由于线段树的代码比较复杂,所以选择树状数组。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#define lowbit(a) (a&(-a))
using namespace std;
int n,m;
int s[100100];

void add(int x,int c)
{
    for(int i=x;i>0;i-=lowbit(i)) s[i]+=c;
}

int sum(int x)
{
    int r=0;
    for(int i=x;i<=n;i+=lowbit(i)) r+=s[i];
    return r;
}

int main()
{
    memset(s,0,sizeof(s));
    cin>>n>>m;
    int a,b;
    for(int i=1;i<=m;i++)
    {
        cin>>a>>b;
        add(a-1,-1);
        add(b,1);
    }
    for(int i=1;i<=n;i++)
    {
        int c=sum(i);
        cout<<(c&1);
    }
    return 0;
}

相关文章:

  • java设计模式之建造者模式
  • jQuery-切换事件2
  • centos7 下进行数据库自动备份
  • sharepoint 一个farm中部署多个sql
  • 建立一个全数据管理的分析平台,该如何落实?
  • Vue.js-Day01
  • XSS跨站脚本***问题和原理详解
  • Project Euler Problem 92 Square digit chains
  • SCOI2010第一场
  • 关键词过滤算法【转】
  • easyui toopTip,鼠标划过悬浮,显示一个小提示框的方法
  • spring 事物的一些理解
  • FMDB支持的事务类型
  • 自动化安装Mysql5.6-脚本实现
  • Java 反射解析指定jar包出现ClassNotFoundException异常,处理方式
  • 03Go 类型总结
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • co模块的前端实现
  • dva中组件的懒加载
  • es的写入过程
  • gcc介绍及安装
  • golang 发送GET和POST示例
  • HTTP中GET与POST的区别 99%的错误认识
  • js算法-归并排序(merge_sort)
  • php中curl和soap方式请求服务超时问题
  • python3 使用 asyncio 代替线程
  • Redis中的lru算法实现
  • Spring-boot 启动时碰到的错误
  • SQL 难点解决:记录的引用
  • 翻译--Thinking in React
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 突破自己的技术思维
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​力扣解法汇总946-验证栈序列
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #etcd#安装时出错
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (3)nginx 配置(nginx.conf)
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (待修改)PyG安装步骤
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (四)c52学习之旅-流水LED灯
  • (五)c52学习之旅-静态数码管
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)原始图像数据和PDF中的图像数据
  • (转载)Google Chrome调试JS
  • (转载)利用webkit抓取动态网页和链接
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • **CI中自动类加载的用法总结
  • .java 9 找不到符号_java找不到符号
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例