树状数组+询问离线。一个优化是需要的,就是先对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(树状数组&&离线)的更多相关文章

  1. HDU5032 -- Always Cook Mushroom 树状数组 14年北京网络赛

    题意:1000*1000的格子, 坐标为(1, 1) ~ (1000, 1000), 常数 A, B, 点(x,  y)权值为 (x + A) * (y + B), q次询问, 每次询问(0, 0) ...

  2. 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]< ...

  3. SPOJ DQUERY树状数组离线or主席树

    D-query Time Limit: 227MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Submit Status ...

  4. D-query SPOJ 树状数组+离线

    D-query SPOJ 树状数组+离线/莫队算法 题意 有一串正数,求一定区间中有多少个不同的数 解题思路--树状数组 说明一下,树状数组开始全部是零. 首先,我们存下所有需要查询的区间,然后根据右 ...

  5. Necklace HDU - 3874 (线段树/树状数组 + 离线处理)

    Necklace HDU - 3874  Mery has a beautiful necklace. The necklace is made up of N magic balls. Each b ...

  6. BZOJ1878: [SDOI2009]HH的项链[树状数组 离线]

    1878: [SDOI2009]HH的项链 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 3486  Solved: 1738[Submit][Statu ...

  7. HDU3333 Turing Tree 树状数组+离线处理

    Turing Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. HDU 3333 - Turing Tree (树状数组+离线处理+哈希+贪心)

    题意:给一个数组,每次查询输出区间内不重复数字的和. 这是3xian教主的题. 用前缀和的思想可以轻易求得区间的和,但是对于重复数字这点很难处理.在线很难下手,考虑离线处理. 将所有查询区间从右端点由 ...

  9. HDU 4417 - Super Mario ( 划分树+二分 / 树状数组+离线处理+离散化)

    题意:给一个数组,每次询问输出在区间[L,R]之间小于H的数字的个数. 此题可以使用划分树在线解决. 划分树可以快速查询区间第K小个数字.逆向思考,判断小于H的最大的一个数字是区间第几小数,即是答案. ...

随机推荐

  1. 739. Daily Temperatures

    https://leetcode.com/problems/daily-temperatures/description/ class Solution { public: vector<int ...

  2. Labyrinth POJ - 1383

    Labyrinth POJ - 1383 The northern part of the Pyramid contains a very large and complicated labyrint ...

  3. A1065 A+B and C (64bit) (20)(20 分)

    A1065 A+B and C (64bit) (20)(20 分) Given three integers A, B and C in [-2^63^, 2^63^], you are suppo ...

  4. P3805 【模版】manacher算法(manacher)

    P3805 [模版]manacher算法 题目描述 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 字符串长度为n 输入输出格式 输入格式: 一行小写英文字符a ...

  5. TCP/IP网络编程之优于select的epoll(一)

    epoll的理解及应用 select复用方法由来已久,因此,利用该技术后,无论如何优化程序性能也无法同时接入上百个客户端.这种select方式并不适合以web服务端开发为主流的现代开发环境,所以要学习 ...

  6. axure rp教程(四)动态面板滑动效果

    转载自: http://www.iaxure.com/74.html 实现目标: 1.  点击登录滑出登录面板 2.  点击确定滑出动态面板 最终效果如下: 这种效果可以通过两种方法实现: 首先准备需 ...

  7. NOS直传加速服务

    本文来自网易云社区 作者:孙建良 最近团队在对存储系统做一些性能测试,期间遇到了不少问题,测试过程中得出的结果也没有很好的数据支撑,所以尝试了非常多的方法来对性能问题进行定位. 小王童鞋是挺厉害的,使 ...

  8. 【N-Quens II】cpp

    题目: Follow up for N-Queens problem. Now, instead outputting board configurations, return the total n ...

  9. Windows核心编程小结2

    这一节看看内存管理相关的信息 首先看看虚拟内存 虚拟地址空间 32位系统  --- 4GB = 232 64 位系统  ---- 16EB = 264 虚拟内存表 当一个应用程序从硬盘加载到RAM时, ...

  10. PHP 自定义二维码生成

    环境:PHP 7.*.* ,Composer 包管理工具.QrCode 效果如下: 使用 Composer 安装 QrCode QrCode 类库基于 php 的 GD 库,用于生成任意尺寸的二维码, ...