HDU5032 Always Cook Mushroom(树状数组&&离线)
树状数组+询问离线。一个优化是需要的,就是先对1000*1000个点先排序,而不是每次都生成这1000*1000个点然后和询问一起排序,那样会tle.
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std; #define maxn 1200
#define ll long long ll A,B; struct Node
{
ll a,b;
int t;
ll v;
int id;
bool operator < (const Node& y) const{
if(b*y.a!=a*y.b) return b*y.a<a*y.b;
else return t<y.t;
}
}x[120000],y[1005000]; int tot,tot2; ll ans[200000]; ll bit[maxn]; void add(int i,ll v){
while(i<=1000){
bit[i]+=v;
i+=i&(-i);
}
} ll sum(int i){
ll ret=0;
while(i>0){
ret+=bit[i];
i-=i&(-i);
}
return ret;
} int main()
{
int T;cin>>T;int ca=0;
tot2=0;
for(int i=1;i<=1000;++i){
for(int j=1;j<=1000;++j){
y[tot2].a=i;y[tot2].b=j;
y[tot2++].t=1;
}
}
sort(y,y+tot2);
while(T--){
scanf("%I64d%I64d",&A,&B);
tot=0;
int m;scanf("%d",&m);
int ai,bi,xi;
for(int i=0;i<m;++i){
scanf("%d%d%d",&ai,&bi,&xi);
x[tot].a=ai;
x[tot].b=bi;
x[tot].id=i;
x[tot].t=2;
x[tot++].v=xi;
} sort(x,x+tot);
memset(bit,0,sizeof(bit));
int id=0;
for(int i=0;i<tot;++i){
while(id<tot2&&y[id]<x[i]){
add(y[id].a,(y[id].a+A)*(y[id].b+B));
++id;
}
ans[x[i].id]=sum(x[i].v);
}
printf("Case #%d:\n",++ca);
for(int i=0;i<m;++i){
printf("%I64d\n",ans[i]);
}
}
return 0;
}
HDU5032 Always Cook Mushroom(树状数组&&离线)的更多相关文章
- HDU5032 -- Always Cook Mushroom 树状数组 14年北京网络赛
题意:1000*1000的格子, 坐标为(1, 1) ~ (1000, 1000), 常数 A, B, 点(x, y)权值为 (x + A) * (y + B), q次询问, 每次询问(0, 0) ...
- 2016 Multi-University Training Contest 5 1012 World is Exploding 树状数组+离线化
http://acm.hdu.edu.cn/showproblem.php?pid=5792 1012 World is Exploding 题意:选四个数,满足a<b and A[a]< ...
- SPOJ DQUERY树状数组离线or主席树
D-query Time Limit: 227MS Memory Limit: 1572864KB 64bit IO Format: %lld & %llu Submit Status ...
- D-query SPOJ 树状数组+离线
D-query SPOJ 树状数组+离线/莫队算法 题意 有一串正数,求一定区间中有多少个不同的数 解题思路--树状数组 说明一下,树状数组开始全部是零. 首先,我们存下所有需要查询的区间,然后根据右 ...
- Necklace HDU - 3874 (线段树/树状数组 + 离线处理)
Necklace HDU - 3874 Mery has a beautiful necklace. The necklace is made up of N magic balls. Each b ...
- BZOJ1878: [SDOI2009]HH的项链[树状数组 离线]
1878: [SDOI2009]HH的项链 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 3486 Solved: 1738[Submit][Statu ...
- HDU3333 Turing Tree 树状数组+离线处理
Turing Tree Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 3333 - Turing Tree (树状数组+离线处理+哈希+贪心)
题意:给一个数组,每次查询输出区间内不重复数字的和. 这是3xian教主的题. 用前缀和的思想可以轻易求得区间的和,但是对于重复数字这点很难处理.在线很难下手,考虑离线处理. 将所有查询区间从右端点由 ...
- HDU 4417 - Super Mario ( 划分树+二分 / 树状数组+离线处理+离散化)
题意:给一个数组,每次询问输出在区间[L,R]之间小于H的数字的个数. 此题可以使用划分树在线解决. 划分树可以快速查询区间第K小个数字.逆向思考,判断小于H的最大的一个数字是区间第几小数,即是答案. ...
随机推荐
- 微信小程序中 this.setData is not a function报错
在微信小程序中我们一般通过以下方式来修改data中的数据: 比如获取小程序缓存: wx.getStorage({ key: 'is_screen', success: function (res) { ...
- 动态规划:HDU-2542-0-1背包问题:饭卡
解题心得: 这题就是一个简单的0-1背包问题,只不过加了一系列的限制.可以想办法消去限制,直接转换成0-1背包问题的模板形式. 需要注意的几个点:首先对于剩余的5元钱的处理可以直接在总的钱数上将5减去 ...
- 关于欧几里德算法(gcd)的证明
求a,b的最大公约数我们经常用欧几里得算法解决,也称辗转相除法, 代码很简短, int gcd(int a,int b){ return (b==0)?a:gcd(b,a%b); } 但其中的道理却很 ...
- UVA 1594 Ducci Sequence(紫书习题5-2 简单模拟题)
A Ducci sequence is a sequence of n-tuples of integers. Given an n-tuple of integers (a1, a2, · · · ...
- SOA:面向服务编程——竹子整理
.net中如webservice,wcf,webapi,均可作为服务层,单独部署,而界面UI则部署在另一台服务器上,所有的业务逻辑均在服务层的业务层中进行. 这样一来,我们的UI其实就可以不限制语言, ...
- Asp.net自定义控件开发任我行(4)-ViewState保存控件状态
摘要 上一篇我们实现了下拉框的效果,此章的目的主要是保存控件属性状态 内容 我们先来看一个例子,后台代码不变,我们只改UI页面的代码,先在页面上拖放两个控件,一个是我们现在要开发的这个控件,另一个是按 ...
- Autofac Mvc5 Nuget
Autofac 3.5.2 Install-Package Autofac -Version 3.5.2 Autofac ASP.NET MVC 5 Integration 3.3.3 Install ...
- 67、activity中调用fragment内部自定义的方法
fragment: /** * author: Created by zzl on 15/11/19. */ @SuppressLint("validFragment") publ ...
- Python 3.6 性能测试框架Locust安装及使用
背景 Python3.6 性能测试框架Locust的搭建与使用 基础 python版本:python3.6 开发工具:pycharm Locust的安装与配置 点击“File”→“setting” 点 ...
- Shell脚本直接执行sql语句和不显示列名
在shell脚本编程的时候,可以通过在mysql连接命令添加-N和-e参数实现查询结果不显示列名和直接执行sql语句操作 demo $(mysql -h ${HOST} -u ${USER} -p${ ...