BZOJ3236 [Ahoi2013]作业

昨天晚上做的。。。差错一直查到今天= =

最后没办法问管理员要了数据才知道原来ans数组开小了233,简直沙茶

 

这道题不就是裸的莫队嘛= =|||

只要用树状数组维护当前的两种个数即可。

 

  1 /**************************************************************
  2     Problem: 3236
  3     User: rausen
  4     Language: C++
  5     Result: Accepted
  6     Time:79318 ms
  7     Memory:66252 kb
  8 ****************************************************************/
  9  
 10 #include <cstdio>
 11 #include <cmath>
 12 #include <algorithm>
 13  
 14 #define lowbit(x) x & -x
 15 using namespace std;
 16 const int N = 100005;
 17 const int M = 1000005;
 18 const int Maxlen = 37000005;
 19  
 20 int n, size, Q;
 21 int BIT[2][N], cnt[N], pos[N], a[N];
 22 int ans1[M], ans2[M];
 23 int Len, Left;
 24 char buf[Maxlen];
 25  
 26 struct Query {
 27     int l, r, a, b, w;
 28 } q[M];
 29 inline bool operator < (const Query &a, const Query &b) {
 30     return pos[a.l] == pos[b.l] ? a.r < b.r : pos[a.l] < pos[b.l];
 31 }
 32 inline bool cmp_id (const Query &a, const Query &b) {
 33     return a.w < b.w;
 34 }
 35  
 36 inline int read() {
 37     int x = 0;
 38     while (buf[Left] < '0' || '9' < buf[Left])
 39         ++Left;
 40     while ('0' <= buf[Left] && buf[Left] <= '9')
 41         x = x * 10 + buf[Left++] - '0';
 42     return x;
 43 }
 44  
 45 int len = 0, pr[15];
 46 inline void print(int x) {
 47     while (x)
 48         pr[++len] = x % 10, x /= 10;
 49     if (!len) putchar('0');
 50     while (len)
 51         putchar(pr[len--] + '0');
 52 }
 53  
 54 inline void update(int x, int del, int T) {
 55     while (x <= n)
 56         BIT[T][x] += del, x += lowbit(x);
 57 }
 58  
 59 inline int query(int x, int T) {
 60     int res = 0;
 61     while (x)
 62         res += BIT[T][x], x -= lowbit(x);
 63     return res;
 64 }
 65  
 66 inline void update(int x, int del) {
 67     if (!cnt[x])
 68         update(x, 1, 1);
 69     cnt[x] += del;
 70     if (!cnt[x])
 71         update(x, -1, 1);
 72     update(x, del, 0);
 73 }
 74  
 75 int main() {
 76     int i, l, r;
 77     Len = fread(buf, 1, Maxlen, stdin);
 78     buf[Len] = ' ';
 79     n = read(), Q = read();
 80     size = (int) sqrt(n);
 81     for (i = 1; i <= n; ++i)
 82         a[i] = read(), pos[i] = i / size;
 83     for (i = 1; i <= Q; ++i) {
 84         q[i].l = read(), q[i].r = read();
 85         q[i].a = read(), q[i].b = read();
 86         q[i].w = i;
 87     }
 88      
 89     sort(q + 1, q + Q + 1);
 90     for (i = l = 1, r = 0; i <= Q; ++i) {
 91         for (; r < q[i].r; ) update(a[++r], 1);
 92         for (; r > q[i].r; ) update(a[r--], -1);
 93         for (; l < q[i].l; ) update(a[l++], -1);
 94         for (; l > q[i].l; ) update(a[--l], 1);
 95         ans1[q[i].w] = query(q[i].b, 0) - query(q[i].a - 1, 0);
 96         ans2[q[i].w] = query(q[i].b, 1) - query(q[i].a - 1, 1);
 97     }
 98     for (i = 1; i <= Q; ++i) {
 99         print(ans1[i]), putchar(' ');
100         print(ans2[i]), putchar('\r'), putchar('\n');
101     }
102     return 0;
103 }
View Code

(p.s. 这道题Rank 1的5 sec是怎么做到的= =,蒟蒻可是用了80 sec啊!!!)

转载于:https://www.cnblogs.com/rausen/p/4108541.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql ddl dml 导出_MySQL:DDL和DML语句,弄明白了吗?

语句分类DDL&#xff08;Data Definition Languages&#xff09;语句&#xff1a;即数据库定义语句&#xff0c;用来创建数据库中的表、索引、视图、存储过程、触发器等&#xff0c;常用的语句关键字有&#xff1a;CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。增删改表的结构D…

敏捷水手——单体法到微服务之旅

\本文要点\\探究持续四年多的渐进式改革是什么样子&#xff1b;\\t探索为什么在变革软件和组织设计时要遵循康威定律&#xff1b;\\t看看如何将领导力应用到不同的团队、领域和层级&#xff1b;\\t举例说明变革管理如何依赖于理念和一贯的长远目标&#xff1b;\\t了解从职能型团…

SQLCMD的介绍

SQLCMD的介绍 原文:SQLCMD的介绍文章转载自&#xff1a;http://blog.sina.com.cn/s/blog_3eec0ced0100mhm2.html最近经常用到超过80M *.sql文件的导入问题。上网找了一下&#xff0c;发现超过80M的文件是不能在查询分析器中执行的。找了些解决方案&#xff0c;个人感觉最简单的…

怎样下载C/C++的免费、开源且跨平台IDE——Code::Blocks

进入Code::Blocks的官网&#xff0c;官网地址为&#xff1a;http://www.codeblocks.org/home。进入后如下图所示&#xff1a; 点击“Home”菜单&#xff0c;跳转到IDE的下载界面&#xff1a; 有几种模式可供选择&#xff0c;我选择的第一种&#xff0c;Download the binary rel…

Logistic回归 python实现

Logistic回归 算法优缺点&#xff1a; 1.计算代价不高&#xff0c;易于理解和实现2.容易欠拟合&#xff0c;分类精度可能不高3.适用数据类型&#xff1a;数值型和标称型 算法思想&#xff1a; 其实就我的理解来说&#xff0c;logistic回归实际上就是加了个sigmoid函数的线性回归…

python 定时自动爬取_python实现scrapy爬虫每天定时抓取数据的示例代码

1. 前言。1.1. 需求背景。每天抓取的是同一份商品的数据&#xff0c;用来做趋势分析。要求每天都需要抓一份&#xff0c;也仅限抓取一份数据。但是整个爬取数据的过程在时间上并不确定&#xff0c;受本地网络&#xff0c;代理速度&#xff0c;抓取数据量有关&#xff0c;一般情…

博客园win8客户端开发记录5-app设置 登录 回复评论

这段时间完成了博客园cnblogs登录&#xff0c;注销和设置的相关功能 &#xff0c;进入软件&#xff0c; 打开win8的charm setting 选择设置就是当前软件的设置选项了&#xff0c; 感觉这有点山寨mac os x系统&#xff08;所有软件包括当前系统使用统一的设置&#xff09;。 扯远…

简单工厂模式,工厂方法模式,抽象工厂模式,spring的狂想

菜鸟D在项目中遇见一个比较纠结的高耦合&#xff0c;所以就想办法来解耦。情况是这样的&#xff1a;系统通过用户选择treeview控件的节点判断调用不同的处理&#xff0c;这些处理中某些东西又是类似的。同事的建议是采用简单工厂&#xff0c;耦合就耦合吧&#xff0c;反正treev…

如何使用CSS实现居中

前言&#xff1a; 这一篇主要是翻译 《how-to-center-anything-with-css》这一篇文章的主要内容&#xff0c;再加上自己的一些概括理解&#xff1b;主要问题是解决垂直居中的问题。我们知道实现水平居中的方式很多种&#xff0c;比如&#xff1a; text-align:center; margin:0 …

java布局_运用 BoxLayout 进行 Swing 控件布局

引言在用户使用 Java Swing 进行用户界面开发过程中&#xff0c;会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中&#xff0c;容器就是能够容纳控件或者其它容器的类&#xff0c;容器的具体例子有 Frame、Panel 等等。容器需要定义一个布…

java链表实现_链表的原理及java实现

一&#xff1a;单向链表基本介绍链表是一种数据结构&#xff0c;和数组同级。比如&#xff0c;Java中我们使用的ArrayList&#xff0c;其实现原理是数组。而LinkedList的实现原理就是链表了。链表在进行循环遍历时效率不高&#xff0c;但是插入和删除时优势明显。下面对单向链表…

xss challenge 解题思路(1-3)

challenge1: 用很基本的方法即可&#xff0c;截图如下&#xff1a; 提交后成功弹窗&#xff0c;完成。 challenge2 这次我们发现我们输入的内容被放入value”“ 中&#xff0c;所以需要将前面的结构闭合&#xff0c;构造如下&#xff1a; "><script>alert(docume…

宾得准饼干广角镜头DA15

DA15的挂机效果图&#xff0c;感觉还是超级的小&#xff0c;是最小的广角镜头了&#xff1a; 主要特点1. 超广视角当安装在宾得数码单反相机上时&#xff0c;这款全新的镜头提供相当于35mm胶片规格的约23mm画面视角&#xff0c;可使拍摄者拍摄出独特的诱人影像和超广角镜头独有…

java slf4j_SLF4J 使用手册

原文链接 译者&#xff1a;zivyuJava的简单日志门面( Simple Logging Facade for Java SLF4J)作为一个简单的门面或抽象&#xff0c;用来服务于各种各样的日志框架&#xff0c;比如java.util.logging、logback和log4j。SLF4J允许最终用户在部署时集成自己想要的日志框架。需要…

[译]Java 垃圾回收介绍

说明&#xff1a;这篇文章来翻译来自于Javapapers 的Java Garbage Collection Introduction 在Java中&#xff0c;对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的。和C语言不一样的是&#xff0c;开发中不需要在Java中写垃圾回收代码。这也是使Java更加流行而且帮…

打印三角形

直角三角形 #include<iostream> using namespace std; int main() { int i,j; for(i1;i<10;i) {for(j1;j<i;j) cout<<"*"; cout<<endl; } } ———————————————————————————…

Linux基础入门学习笔记之二

第三节 用户及文件权限管理 Linux用户管理 Linux是可以实现多用户登录的操作系统 查看用户who命令用于查看用户 shiyanlou是当前登录用户的用户名 pts/0中pts表示伪终端&#xff0c;后面的数字表示伪终端的序号。 后面是当前伪终端启动时间 创建用户创建用户需要root权限&#…

这几天有django和python做了一个多用户博客系统(可选择模板) 没完成,先分享下...

这个TBlog已经全新改版了&#xff0c;更名为UUBlog 新版地址&#xff1a; 用Python和Django实现多用户博客系统——UUBlog 断断续续2周时间吧&#xff0c;用django做了一个多用户博客系统&#xff0c;现在还没有做完&#xff0c;做分享下,以后等完善了再慢慢说 做的时候房展了博…

MySQL数据高级查询之连接查询、联合查询、子查询

2019独角兽企业重金招聘Python工程师标准>>> 一、连接查询 连接查询: 将多张表(>2)进行记录的连接(按照某个指定的条件进行数据拼接)。 连接查询的意义: 在用户查看数据的时候,需要显示的数据来自多张表. 连接查询: join, 使用方式: 左表 join 右表&#xff1b;左…

Oracle11g解锁报错SP2-0306-选项无效

普通用户登录isqlplus: (一)在浏览器中输入URL &#xff08;http://localhost:5560/isqlplus&#xff09;。显示登录界面 这里只能用普通用户进行登录&#xff0c;因为要用sys登录&#xff0c;必须用sys的DBA身份登录。所以用普通用户SCOTT&#xff0c;但是还未解锁 问题:SP2-0…