BZOJ 2308 莫队入门经典
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2038
参考博客 https://www.cnblogs.com/Paul-Guderian/p/6933799.html
https://www.cnblogs.com/hzf-sbit/p/4056874.html
解析 C(2,n)=n*(n-1)/2=(n*n-n)/2
分子就是∑C(sum[i],2) ( i 是区间内的颜色 sum[i] 是区间内i颜色的数量)公式真难写。。。 还是看第二篇博客吧。
/**************************************************************
Problem: 2038
User: 1071532391
Language: C++
Result: Accepted
Time:1708 ms
Memory:5604 kb
****************************************************************/ #include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(a) (a).begin(), (a).end()
#define fillchar(a, x) memset(a, x, sizeof(a))
#define huan printf("\n");
#define debug(a,b) cout<<a<<" "<<b<<" ";
using namespace std;
typedef long long ll;
const int maxn=1e5+,inf=0x3f3f3f3f;
const ll mod=1e9+;
ll gcd(ll a,ll b){ return b?gcd(b,a%b):a;}
int n,m,unit,col[maxn],be[maxn];
ll sum[maxn],ans=;
struct node
{
int l,r,id;
ll ans1,ans2;
}a[maxn];
int cmp1(node a,node b)
{
if(be[a.l]==be[b.l])
return a.r<b.r;
return a.l<b.l;
}
int cmp2(node a,node b)
{
return a.id<b.id;
}
ll S(ll x) {return x*x;}
void revise(int x,int add)
{
ans-=S(sum[col[x]]);
sum[col[x]]+=add;
ans+=S(sum[col[x]]);
}
int main()
{
scanf("%d%d",&n,&m);
unit=sqrt(n);
for(int i=;i<=n;i++)
{
scanf("%d",col+i);be[i]=i/unit+;
}
for(int i=;i<=m;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
a[i].id=i;
}
sort(a+,a+m+,cmp1);
int l=,r=;
for(int i=;i<=m;i++)
{
while(l<a[i].l)revise(l,-),l++;
while(l>a[i].l)revise(l-,),l--;
while(r>a[i].r)revise(r,-),r--;
while(r<a[i].r)revise(r+,),r++;
if(a[i].l==a[i].r)
{
a[i].ans1=,a[i].ans2=;
continue;
}
a[i].ans1=ans-(a[i].r-a[i].l+);
a[i].ans2=1ll*(a[i].r-a[i].l+)*(a[i].r-a[i].l);
ll gcd_=gcd(a[i].ans1,a[i].ans2);
a[i].ans1/=gcd_;a[i].ans2/=gcd_;
}
sort(a+,a+m+,cmp2);
for(int i=;i<=m;i++)
printf("%lld/%lld\n",a[i].ans1,a[i].ans2);
return ;
}
BZOJ 2308 莫队入门经典的更多相关文章
- bzoj 2038 莫队入门
http://www.lydsy.com/JudgeOnline/problem.php?id=2038 题意:多次询问区间内取出两个相同颜色的种类数 思路:由于不是在线更新,那么可以进行离线查询,而 ...
- P2709 小B的询问(莫队入门)
题目链接:https://www.luogu.org/problemnew/show/P2709 题目大意:中文题目 具体思路:莫队入门题,按照离线的方式打的,对每一个区间进行分块和编号,如果在同一个 ...
- [2009国家集训队]小Z的袜子(hose)(BZOJ2038+莫队入门题)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2038 题目: 题意:中文题意,大家都懂. 思路:莫队入门题.不过由于要去概率,所以我们假 ...
- (原创)BZOJ 2038 小Z的袜子(hose) 莫队入门题+分块
I - 小Z的袜子(hose) 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z ...
- BZOJ 3339 & 莫队+"所谓的暴力"
题意: 给一段数字序列,求一段区间内未出现的最小自然数. SOL: 框架显然用莫队.因为它兹瓷离线. 然而在统计上我打了线段树...用&维护的结点...400w的线段树...然后二分查找... ...
- bzoj 2038 莫队算法
莫队算法,具体的可以看10年莫涛的论文. 大题思路就是假设对于区间l,r我们有了一个答案,那么对于区间l,r+1,我们 可以暴力的转移一个答案,那么对于区间l1,r1和区间l2,r2,需要暴力处理 的 ...
- bzoj 3289 莫队 逆序对
莫队维护逆序对,区间左右增减要分类讨论. 记得离散化. /************************************************************** Problem: ...
- bzoj 3809 莫队
收获: 1.分块时顺便记录每个位置所属的块,然后一次排序就OK了. 2.要权衡在“区间移动”与“查询结果”之间的时间,莫队算法一般区间移动频率远大于查询结果,所以我们选择的辅助数据结构时就要注意了,我 ...
- bzoj 3339 莫队
题意: 求任意一个区间的SG函数. 想到线段树,但是线段树合并很麻烦. 线段树——分块. 分块的一个应用就是莫队算法. 怎么暴力递推呢? 从一个区间到另一个区间,Ans 取决于 Ans 和 加入和删除 ...
随机推荐
- Elasticsearch搜索含有数字标签的处理
{"tag_id":“12345”} 在search的时候是完全匹配,因为Elasticsearch在处理这个的过程中把“123456”字符当成一个整体的数据,因此折腾了好久就是找 ...
- pagehelper 分页
分页jar包: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pa ...
- linux 安装nginx 集成emq
1:下载nginx-1.12.2.tar.gz http://nginx.org/en/download.html 2:解压 tar -zxvf nginx-1.12.2.tar.gz 3:进行co ...
- 连接mysql 2003 Can't connect to Mysql on 'xxx'(10061)
备份 cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak 修改 vim /etc/mysql/my.cnf 在[mysqld]下修改为bind-address=0.0 ...
- 关于DTCC数据库技术大会
本次DTCC数据库技术大会是第9届了,这次大会虽然有不少公司的产品推介,总体来说还是有不少干货的. 专场较多,有选择地主要听了大数据实践跟流式计算这块.网易跟滴滴的分享比较不错. 了解到了现在大家是用 ...
- HLS协议分析实现与相关开源代码
苹果定义的HLS协议,广泛运用在现在很多的流媒体服务器和客户端之间,用以传输直播电视数据流. 具体的协议参照 http://tools.ietf.org/html/draft-pa ...
- ios之coretext
API接口文档. https://developer.apple.com/library/mac/#documentation/Carbon/Reference/CoreText_Framework_ ...
- <Spring Cloud>入门三 Ribbon
1.Ribbon 客户端软负载均衡组件 1.1配置 搭建了三个消费者供客户端调用: 1.修改yml eureka: client: service-url: defaultZone: http://e ...
- Hibernate-04
HQL查询语法 查询:public class Dome{ Session session = HibernaeUitls.openSession(); Transaction tx = sessio ...
- 28. TRIGGERS ,29. USER_PRIVILEGES,30. VIEWS
28. TRIGGERS TRIGGERS表提供有关触发器的信息.要查看有关表的触发器的信息,您必须具有该表的TRIGGER权限. TRIGGERS表有以下列: TRIGGER_CATALOG :触发 ...