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;个人感觉最简单的…

Windows下用命令行导出导入MySQL数据库

方法1&#xff1a;添加“系统环境变量”。我的电脑&#xff1e;属性&#xff1e;高级&#xff1e;环境变量&#xff0c;在“系统变量”栏目下找到 path 双击编辑。先添加&#xff1b;&#xff08;分号&#xff09;&#xff0c;再添加MySQL安装目录下bin文件夹&#xff08;包含m…

python模拟鼠标拖动滑块_如何通过拖动滑块来控制Kivy滚动视图?

是的&#xff0c;你可以这样做&#xff1a;在ScrollView中有一个scroll_类型属性&#xff0c;因此通过设置它&#xff0c;您可以实现您想要的功能。在如果设置scroll_type[bars]&#xff0c;则可能需要更改bar_width属性&#xff0c;因为它的默认值为2&#xff0c;而且它太小&a…

怎样下载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…

网站吞吐量

http://www.blogjava.net/neverend/archive/2011/01/25/343514.html转载于:https://www.cnblogs.com/sevensole7/archive/2013/06/05/3118966.html

外链引入css有哪些方式_HTML+CSS基础(三) CSS的引入方式和CSS选择器

一、CSS概念&#xff1a;什么是CSS,CSS说白了就是给页面添加样式,让整个页面变的好看起来的一种东西,用来定义网页外观&#xff0c;如字体、背景、颜色等二、在页面中使用css的3种常用方式1.行内样式就是在一个标签内使用 style 属性,仅为某一个标签添加样式例如文字2.内嵌式就…

混合部署

http://horse87.blog.51cto.com/2633686/1628179转载于:https://blog.51cto.com/12341672/1893792

Logistic回归 python实现

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

dataset转换json格式

转换json方法 public static string DataToJson(DataSet dt){StringBuilder jsonBuilder new StringBuilder();jsonBuilder.Append("{\"");jsonBuilder.Append("points");jsonBuilder.Append("\":[");for (int i 0; i < dt.Table…

《自控力》总结_完结

《自控力》总结_完结 《自控力》总结_完结 Saturday, December 15, 2012 9:35 PM 《自控力》总结 第一章 1 前额皮质的3个功能区域&#xff1a;“我要”“我不要”“我想要” 2 人的两个自我&#xff1a;冲动的自己&#xff0c;控制自己。给两个自己分别起名字&#xff0c;当某…

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;。 扯远…

Oracle 修改SYS、system用户密码

Oracle 修改SYS、system用户密码 by:授客 QQ&#xff1a;1033553122 概念 SYS用户是Oracle中权限最高的用户&#xff0c;而SYSTEM是一个用于数据库管理的用户。在数据库安装完之后&#xff0c;应立即修改SYS,SYSTEM这两个用户的密码&#xff0c;以保证数据库的安全。 安装完之…

春节小作业总结1

1、x Double.parseDouble(X);字符串转Double类型&#xff1b; 2、使用正则表达式判断输入的是字母还是数字 要import java.util.regex.Pattern 和 java.util.regex.Matcher public boolean isNumeric(String str){ Pattern pattern Pattern.compile("[0-9]*&q…

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

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

堆、栈及静态数据区详解 转

内存分为代码区、全局数据区、堆区和栈区。堆一般存放动态数据&#xff0c;栈里一般存放局部成员。 关于堆栈和堆的概念[问题] C中创建本地&#xff08;或者说局域&#xff09;变量是在堆栈&#xff08;stack&#xff09;中分配内存地址&#xff0c;而创建全局变量则是在堆&…

如何使用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 等等。容器需要定义一个布…