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 ;
}

最新文章

  1. C和指针 第十章 结构和联合 (二)
  2. AngularJS笔记---数据绑定
  3. ScriptManager与UpdatePanel总结
  4. sql语句执行插入后返回ID
  5. Scala:条件表达式的好处
  6. 二十三、【开源】EFW框架Web前端开发之常用组件(FusionCharts图表、ReportAll报表等)
  7. 基于CSS3和HTML5图片加工前后对比代码
  8. ios 开发,通讯录信息调用常用方法,这个比较全,不用再整理了
  9. Apache HttpClient组件封装工具类
  10. php cli模式没有加载php.ini
  11. JDBC 的编程步骤
  12. Python全栈之路-Day31
  13. 用01随机函数构造[a,b]整数范围随机数
  14. apache日志记录格式LogFormat参数说明
  15. Docker深入浅出3-容器管理
  16. 洛谷P4197 Peaks&amp;&amp;克鲁斯卡尔重构树学习笔记(克鲁斯卡尔重构树+主席树)
  17. Messenger与AIDL的异同
  18. easyx图形库做贪吃蛇游戏
  19. HTTP从入门到入土(2)——HTTP协议发展历史
  20. 单引號转义符q’的使用

热门文章

  1. 据磁力链获得BT种子
  2. C# 垃圾回收机制(转)
  3. ignite客户端找不到服务端的时候如何设置退出
  4. jquer 带左右按钮滚动图片 点击显示大图
  5. PullToRefreshGridView上拉加载、下拉刷新
  6. JS-DOM操作应用高级(二)
  7. 报错:“不是有效的Win32应用程序”的解决办法
  8. IPSec VPN实验
  9. HDU 5215 BestCoder&quot;杯中国大学生程序设计冠军赛” 边双连通分量取出子图+二分染色判图内奇偶环
  10. ubuntu上面安装eclipse android到adt下载方法