ZOJ 3940 Modulo Query
0--M对某个数字取模,相当于把0--M区间进行切割,每次暴力切割一下。结果的算的时候二分一下即可。。。
看了官方题解才会。。。
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std; const int maxn=+;
long long mod=1e9+;
int T,m,sz;
struct X
{
int x;
long long y;
bool operator<(const X&a)const
{
return x < a.x;
}
X(int a,long long b) {x=a,y=b;}
};
long long sum[maxn],cnt[maxn];
int v[maxn]; long long get(int now)
{
long long res=;
int l=,r=sz-;
while(l<=r)
{
int mid=(l+r)/;
if(v[mid]>=now)
{
l=mid+;
res=sum[mid];
}
else r=mid-;
}
return res;
} int main()
{
scanf("%d",&T);
while(T--)
{
int n; scanf("%d%d",&n,&m);
priority_queue<X>q;
q.push(X(m,));
for(int i=;i<=n;i++)
{
int x; scanf("%d",&x);
while()
{
if(q.top().x<x) break;
X head=q.top(); q.pop();
q.push(X(x-, (head.x + ) / x*head.y));
if ((head.x+)%x>=) q.push(X(head.x%x, head.y));
}
} sz=;
v[sz]=q.top().x; cnt[sz]=q.top().y;
q.pop(); sz++; while(!q.empty())
{
X head=q.top(); q.pop();
if(head.x==v[sz-]) cnt[sz-]+=head.y;
else
{
v[sz]=head.x;
cnt[sz]=head.y;
sz++;
}
} sum[]=cnt[];
for(int i=;i<sz;i++) sum[i]=sum[i-]+cnt[i]; int Q; scanf("%d",&Q);
long long ans=;
for(long long i=;i<=Q;i++)
{
int g; scanf("%d",&g);
ans=(ans+i*get(g)%mod)%mod;
} printf("%lld\n",ans%mod);
}
return ;
}
ZOJ 3940 Modulo Query的更多相关文章
- ZOJ 3940 Modulo Query(YY+二分)
Modulo Query Time Limit: 2 Seconds Memory Limit: 65536 KB One day, Peter came across a function ...
- ZOJ 3940 Modulo Query (2016年浙江省赛E题,区间折叠 + map运用)
题目链接 2016 ZJCPC Problem E 考虑一个开区间$[0, x)$对$a_{i}$取模的过程. $[0, x)$中小于$a_{i}$的部分不变,大于等于$a_{i}$的部分被切下来变 ...
- ZOJ 3911 Prime Query ZOJ Monthly, October 2015 - I
Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a s ...
- ZOJ 3911 Prime Query(线段树)
Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a s ...
- ZOJ 5638——Prime Query——————【线段树区间更新,区间查询,单点更新】
Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a s ...
- 2016.4.23浙江省赛(zoj3936 zoj3938 zoj3940 zoj3944 zoj3946 zoj3947 )
A Apples and Ideas Time Limit: 2 Seconds Memory Limit: 65536 KB "If you have an apple ...
- Prime Query (ZOJ 3911 线段树)
Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a sequen ...
- 143 - ZOJ Monthly, October 2015 I Prime Query 线段树
Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a s ...
- ZOJ 3911Prime Query [素数处理 + 线段树]
Time Limit: 5 Seconds Memory Limit: 196608 KBYou are given a simple task. Given a sequence A[i] with ...
随机推荐
- C++11 左值与右值
概念 左值:表达式结束后依然存在的对象 右值:表达式结束后就不存在的临时对象 2.如何判断左值和右值 能不能对表达式取地址,如果能,就是左值,否则就是右值 3.对下面的语句进行区分 int a = 3 ...
- HDU 1010 Tempter of the Bone DFS(奇偶剪枝优化)
需要剪枝否则会超时,然后就是基本的深搜了 #include<cstdio> #include<stdio.h> #include<cstdlib> #include ...
- 50条规则提高PHP开发提高效率技巧
0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作 参数的“函数”(译注:PHP手 ...
- Java 8新特性探究(九)跟OOM:Permgen说再见吧
PermGen space简单介绍 元空间(MetaSpace)一种新的内存空间诞生 PermGen 空间的状况 Metaspace 内存分配模型 Metaspace 容量 Metaspace 垃圾回 ...
- UAC绕过思路(未完)
---恢复内容开始--- What is UAC?
- 如何获取url访问历史记录
在院里的群里,有人问了这么一个问题: A页面提交表单到B页面,然后在B页面点了后退,如果在A页面上判断是直接访问的还是后退进去的呢?我不想改B页面. 于是乎本着热心人的想法,我就帮他搞了搞,首先我想到 ...
- cookies和session的优缺点
具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. Cookie的优缺点: 优点:极高的扩展性和可用性通过良好的编程,控制保存在cookie ...
- [转]PHP经验——PHPDoc PHP注释的标准文档
文档翻译自:http://en.wikipedia.org/wiki/Phpdoc 标记 用途 描述 @abstract 抽象类的变量和方法 @access public, private or ...
- select标签 样式 及文本有空格
<s:select name="codeid" id="codeid" multiple="false" list="#s ...
- RAS、AES、DES加密
---------------------------------------------------------------------------------------------------- ...