莫队算法 BOJ 2038 [2009国家集训队]小Z的袜子(hose)

 

题目传送门

 1 /*
 2     莫队算法:求出[l, r]上取出两只相同袜子的个数。
 3         莫队算法是离线处理一类区间不修改查询类问题的算法。如果你知道了[L,R]的答案,可以在O(1)的时间下得到
 4         [L,R-1]和[L,R+1]和[L-1,R]和[L+1,R],4个while是精华!
 5         对于莫队算法我感觉就是暴力。只是预先知道了所有的询问。可以合理的组织计算每个询问的顺序以此来降低复杂度。
 6     详细解释:http://blog.csdn.net/bossup/article/details/39236275
 7 */
 8 #include <cstdio>
 9 #include <cstring>
10 #include <algorithm>
11 #include <cmath>
12 using namespace std;
13 
14 typedef long long ll;
15 const int MAXN = 5e4 + 10;
16 const int INF = 0x3f3f3f3f;
17 struct Data
18 {
19     int b, l, r, id;
20     ll x, y;
21     Data () {}
22     Data (int b, ll l, ll r, int id) : b (b), l (l), r (r), id (id) {};
23 }data[MAXN];
24 int cnt[MAXN];
25 int a[MAXN];
26 int n, m;
27 ll ans;
28 
29 bool cmp_pre(Data x, Data y)
30 {
31     if (x.b == y.b)    return x.r < y.r;
32     return x.b < y.b;
33 }
34 
35 bool cmp_id(Data x, Data y)    {return x.id < y.id;}
36 
37 ll cal(int v)    {return (ll) v * v;}
38 
39 void updata(int v, int add)
40 {
41     ans -= cal (cnt[v]);
42     cnt[v] += add;
43     ans += cal (cnt[v]);
44 }
45 
46 ll GCD(ll a, ll b)    {return b == 0 ? a : GCD (b, a % b);}
47 
48 void Modui(void)
49 {
50     sort (data+1, data+1+m, cmp_pre);
51     memset (cnt, 0, sizeof (cnt));
52 
53     int l = 1, r = 0;    ans = 0;
54     for (int i=1; i<=m; ++i)
55     {
56         while (data[i].l < l)    updata (a[--l], 1);
57         while (data[i].l > l)    updata (a[l], -1), l++;
58         while (data[i].r > r)    updata (a[++r], 1);
59         while (data[i].r < r)    updata (a[r], -1), r--;
60 
61         if (data[i].l == data[i].r)
62         {
63             data[i].x = 0;    data[i].y = 1;
64             continue;
65         }
66         data[i].x = ans - (data[i].r - data[i].l + 1);
67         data[i].y = (ll) (data[i].r - data[i].l + 1) * (data[i].r - data[i].l);
68         ll k = GCD (data[i].x, data[i].y);
69         data[i].x /= k;    data[i].y /= k;
70     }
71 
72     sort (data+1, data+1+m, cmp_id);
73     for (int i=1; i<=m; ++i)
74     {
75         printf ("%lld/%lld\n", data[i].x, data[i].y);
76     }
77 }
78 
79 int main(void)        //BOJ 2038 [2009国家集训队]小Z的袜子(hose)
80 {
81     // freopen ("BZOJ_2038.in", "r", stdin);
82 
83     while (scanf ("%d%d", &n, &m) == 2)
84     {
85         for (int i=1; i<=n; ++i)    scanf ("%d", &a[i]);
86 
87         int block = (int) sqrt (n * 1.0);
88         for (int i=1; i<=m; ++i)
89         {
90             int l, r;
91             scanf ("%d%d", &l, &r);
92             data[i] = Data (l / block, l, r, i);
93         }
94 
95         Modui ();
96     }
97 
98     return 0;
99 }

 

转载于:https://www.cnblogs.com/Running-Time/p/4644747.html

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

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

相关文章

linux prelink.cache,Linux基础操作

1、Linux上的文件管理类命令都有哪些&#xff0c;其常用的使用方法及其相关示例演示。1、1 cp复制命令单个文件复制&#xff1a;cp [OPTION]... SOURCE DEST如果DEST不存在&#xff0c;则事先创建文件&#xff0c;并复制源文件数据如果DEST是非目录文件&#xff0c;则覆盖目录文…

教你玩转CSS 分组选择器和嵌套选择器

目录 分组选择器 嵌套选择器 分组选择器 在样式表中有很多具有相同样式的元素。 h1 {color:green;}h2 {color:green;}p {color:green;} 为了尽量减少代码,你可以使用分组选择器。 每个选择器用逗号分隔。 在下面的例子中,我们对以上代码使用分组选择器: h1,h2,p {color…

记一次无意间发现某学校图书检索系统的变量覆盖漏洞

这是汇文OPAC很早就存在的一个严重漏洞 补充漏洞信息参考来源https://www.seebug.org/vuldb/ssvid-90722 1. 利用存在该漏洞参数的链接&#xff0c;访问存在漏洞文件&#xff0c;并覆盖 session 值 http://*******/opac/openlink_ebk.php?_SESSION[ADMIN_USER]opac_admin 2.…

多线程笔记5

第六章&#xff1a;Overlapped I/O&#xff0c;在你身后变戏法 1.overlapped I/O 是 Win32 的一项技术&#xff0c;你可以要求操作系统为你传送数据&#xff0c;并且在传送完毕时通知你。这项技术使你的程序在I/O 进行过程中仍然能够继续处理事务。事实上&#xff0c;操作系统内…

腾讯手游助手android版本,腾讯游戏助手下载-腾讯游戏助手 安卓版v3.3.4.22-PC6安卓网...

需要调用以下重要权限- 允许应用程序写入到外部存储器, 允许只读到电话状态访问&#xff0c;包括该装置的电话号码&#xff0c;当前蜂窝网络信息&#xff0c;任何正在进行的呼叫的状态&#xff0c;并且任何一个列表 PhoneAccount的注册在设备上, 允许应用程序从外部存储读取, 需…

java 并发 同步信号_Java并发教程–信号量

java 并发 同步信号这是我们将要进行的Java并发系列的第一部分。 具体来说&#xff0c;我们将深入研究Java 1.5及更高版本中内置的并发工具。 我们假设您对同步和易失性关键字有基本的了解。 第一篇文章将介绍信号量-特别是对信号量进行计数 。 信号量是用于限制对资源访问的经…

教你玩转CSS 尺寸 (Dimension)

目录 所有CSS 尺寸 (Dimension)属性 CSS 尺寸 (Dimension) 属性允许你控制元素的高度和宽度。同样&#xff0c;它允许你增加行间距。 所有CSS 尺寸 (Dimension)属性

目录扫描工具dirsearch用法

目录扫描工具-dirsearch 1.下载dirsearch#git clone https://github.com/maurosoria/dirsearch2. 进入dirsearch目录&#xff0c;进行扫描 每一列的含义分别是&#xff1a;扫描时间&#xff0c;状态码&#xff0c;大小&#xff0c;扫描的目录&#xff0c;重定向的地址 参数列…

Truncated incorrect DOUBLE value

我有点傻…… sql update语法&#xff0c;修改的字段之间要用,连接&#xff0c;而不是and 否则就会报错Truncated incorrect DOUBLE value…… 如&#xff1a; update teacher set IMAGE_URL #{1} and UPDATE_TIMEnow() where TEACHER_MOBILE #{0} 错误 update teacher set …

教你玩转CSS Display(显示) 与 Visibility(可见性)

目录 隐藏元素 - display:none或visibility:hidden CSS Display - 块和内联元素 如何改变一个元素显示 隐藏元素 - display:none或visibility:hidden 隐藏一个元素可以通过把display属性设置为”none”,或把visibility属性设置为”hidden”。但是请注意,这两种方法会产…

html dd自动换行,为什么我的dd里面的内容没有自动换行呢

2-6图文混排*{margin: 0;padding: 0;}.clear{clear: both;}.content{width: 1000px;margin: 0 auto;}.word{font-family: "微软雅黑";font-weight: bolder;font-size: 20px;padding-top: 10px;padding-bottom: 10px;text-align: center;}.content .pic-word dl{width…

Java 9抢先体验:与JShell的动手实践– Java REPL

从今天开始如何开始使用Java 9最酷的功能之一&#xff1f; 上周末&#xff0c;我终于开始尝试使用Java 9的早期访问版本了。第一站是JShell&#xff0c;它也被称为Project Kulla。 首先让我鼓起勇气尝试早期访问Java版本的原因。 那就对了。 Java 9的正式发布日期当前设置为2…

CSRF的绕过与利用

Origin & Referer Bypass Null值绕过 当遇到一个cors可用null值绕过时&#xff0c;用iframe配合data协议&#xff0c;就可以发送一个origin为null的请求。这个绕过方式同样也可以用在CSRF这里。 1<iframe sandbox"allow-scripts allow-top-navigation allow-forms&…

ASP.NET中禁止继承IIS中web.config根目录的配置

异常信息&#xff1a; Configuration Error Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. Parser…

教你玩转CSS Position(定位)

目录 CSS Position(定位) static 定位 fixed 定位 relative 定位 absolute 定位 sticky 定位 重叠的元素 所有的CSS定位属性

jOOQ配置

本文是我们学院课程的一部分&#xff0c;标题为jOOQ –类型安全的数据库查询 。 在SQL和特定关系数据库很重要的Java应用程序中&#xff0c;jOOQ是一个不错的选择。 当JPA / Hibernate抽象过多&#xff0c;JDBC过多时&#xff0c;这是一种替代方法。 它显示了一种现代的领域特…

可隐藏选项卡html,隐藏HTML中选定选项卡的底部边框

我有一个水平HTML选项卡&#xff0c;其中我希望隐藏所选选项卡的底部边框。隐藏HTML中选定选项卡的底部边框这个问题已经被问here和here但这两种解决方案都不能正常工作&#xff0c;因为我使用一个div结构&#xff0c;没有太大的JavaScript。jQuery(.tab-links a).on(click, fu…

JWT攻击手册

JSON Web Token&#xff08;JWT&#xff09;对于渗透测试人员而言可能是一种非常吸引人的攻击途径&#xff0c;因为它们不仅是让你获得无限访问权限的关键&#xff0c;而且还被视为隐藏了通往以下特权的途径&#xff1a;特权升级&#xff0c;信息泄露&#xff0c;SQLi&#xff…

DIV+CSS 入门

玩一小会儿前csdn什么时候&#xff0c;页面上的加qq而微博&#xff0c;我认为这是美好的。牛腩完成。运营商也开始了他真正的学习B/S之旅。刚開始的时候&#xff0c;我不知道<div>是什么 也不清楚CSS用来干什么的&#xff0c;敲完了回过头来再看&#xff0c;好像明确了一…

教你玩转CSS Overflow

目录 CSS Overflow overflow: visible CSS 布局 - Overflow CSS overflow 属性用于控制内容溢出元素框时显示的方式。 <style>#overflowTest {background: #4CAF50;color: white;padding: 15px;width: 80%;height: 100px;overflow: scroll;border: 1px solid #ccc;}&l…