题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5213
BC 上的题,题解很清楚,会莫对的应该不难,
对于一个询问,我们拆成四个询问,开始拆成求区间矩形的样子,我想多了。
然后就是模板的莫队了。
一个变量打错,一直DEBUG  
 #include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<string>
#include<iostream>
using namespace std; #define N 600055
typedef long long LL;
int a[N],pos[N],block;
int n,m,k,idx;
int ans1[N],tmp[N]; struct node
{
int l,r,id;
int p;
}q[N]; //BZOJ 4129
int cmp(node a,node b)
{
if (pos[a.l]==pos[b.l]) return a.r<b.r;
return pos[a.l]<pos[b.l];
} void solve()
{
int l=,r=;
int ans=;
for (int i=;i<=m;i++)
{
while (l>q[i].l)
{
l--;
if (k-a[l]>) ans+=tmp[k-a[l]];
tmp[a[l]]++;
}
while (r<q[i].r)
{
r++;
if (k-a[r]>) ans+=tmp[k-a[r]];
tmp[a[r]]++;
}
while (l<q[i].l)
{
if (k-a[l]>) ans-=tmp[k-a[l]];
tmp[a[l]]--;
l++;
}
while (r>q[i].r)
{
if (k-a[r]>) ans-=tmp[k-a[r]];
tmp[a[r]]--;
r--;
}
ans1[q[i].id]+=q[i].p*ans;
}
} int main()
{
while (scanf("%d%d",&n,&k)!=EOF)
{
memset(ans1,,sizeof(ans1));
for (int i=;i<=n;i++)
scanf("%d",&a[i]);
memset(tmp,,sizeof(tmp)); block=sqrt(n);
for (int i=;i<=n;i++)
pos[i]=(i-)/block+;
idx=;
scanf("%d",&m); for (int i=;i<=m;i++)
{
int l,r,l2,r2;
scanf("%d%d%d%d",&l,&r,&l2,&r2);
q[++idx].l=l;q[idx].r=r2;q[idx].id=i;q[idx].p=;
if (r+<=l2-)
{
q[++idx].l=r+,q[idx].r=l2-,q[idx].id=i,q[idx].p=;
}
q[++idx].l=l;q[idx].r=l2-;q[idx].id=i,q[idx].p=-;
q[++idx].l=r+;q[idx].r=r2;q[idx].id=i,q[idx].p=-;
}
swap(idx,m);
sort(q+,q+m+,cmp);
//for (int i=1;i<=m;i++) cout<<q[i].id<<" ";
//cout<<endl;
// cout<<m<<" "<<idx<<endl;
solve();
for (int i=;i<=idx;i++)
printf("%d\n",ans1[i]);
}
return ;
}

HDOJ 5213的更多相关文章

  1. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. HDOJ 1326. Box of Bricks 纯水题

    Box of Bricks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. HDOJ 1004 Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  5. hdoj 1385Minimum Transport Cost

    卧槽....最近刷的cf上有最短路,本来想拿这题复习一下.... 题意就是在输出最短路的情况下,经过每个节点会增加税收,另外要字典序输出,注意a到b和b到a的权值不同 然后就是处理字典序的问题,当松弛 ...

  6. HDOJ(2056)&HDOJ(1086)

    Rectangles    HDOJ(2056) http://acm.hdu.edu.cn/showproblem.php?pid=2056 题目描述:给2条线段,分别构成2个矩形,求2个矩形相交面 ...

  7. 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ

    前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...

  8. 最近点对问题 POJ 3714 Raid && HDOJ 1007 Quoit Design

    题意:有n个点,问其中某一对点的距离最小是多少 分析:分治法解决问题:先按照x坐标排序,求解(left, mid)和(mid+1, right)范围的最小值,然后类似区间合并,分离mid左右的点也求最 ...

  9. BFS(八数码) POJ 1077 || HDOJ 1043 Eight

    题目传送门1 2 题意:从无序到有序移动的方案,即最后成1 2 3 4 5 6 7 8 0 分析:八数码经典问题.POJ是一次,HDOJ是多次.因为康托展开还不会,也写不了什么,HDOJ需要从最后的状 ...

随机推荐

  1. ios 团购信息客户端demo(二)

    接上一篇,这篇我们对我们的客户端加入KissXML,MBProgressHUD,AQridView这几个库,首先我们先加入KissXML,这是XML解析库,支持Xpath,可以方便添加更改任何节点.先 ...

  2. CSS在线压缩

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. std::ios::sync_with_stdio和tie()——给cin加速

    平时在Leetcode上刷题的时候,总能看到有一些题中最快的代码都有这样一段 static const auto init = []() { std::ios::sync_with_stdio(fal ...

  4. Comet OJ 热身赛-principal

    这题的话,我们分析一下,入栈的操作是: 栈空 栈顶元素和当前操作元素不属于同一类括号 栈顶元素和当前操作元素属于同一类括号,但是并不是左括号在前,右括号在后 上面三个条件有任意一个满足都应该入栈,如果 ...

  5. 《嵌入式linux应用程序开发标准教程》笔记——8.进程间通信

    , 8.1 概述 linux里使用较多的进程间通信方式: 管道,pipe和fifo,管道pipe没有实体文件,只能用于具有亲缘关系的进程间通信:有名管道 named pipe,也叫fifo,还允许无亲 ...

  6. Ubuntu 15.04 Qt5 链接 mysql数据库

    序 最近在Ubuntu15.04下做一个Linux-服务器-客户端通信项目,用到MySQL数据库.开始的时候,在数据库链接时遇到障碍,查找资料解决. 特此记录,分享于此. 环境配置 系统:Ubuntu ...

  7. 关于springmvc返回json格式数据

    1.引入maven依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifac ...

  8. 修改JVM的参数、Jstat、Jstack、gclog

    ---恢复内容开始--- 1. jetty 修改JVM的参数 deploy/bin/env.sh 在上面的环境变量脚本中进行修改:如果分配给JVM的内存是4g 这个里面的JAVA_OPTS 的配置项就 ...

  9. cf950d A Leapfrog in the Array

    考虑在位置 \(p\) 的青蛙. 如果 \(p\) 是奇数,答案显然是 \((p+1)/2\). 否则,由于未跳时 \(p\) 左边有 \(p/2\) 只,则 \(p\) 右边有 \(n-p/2\) ...

  10. 九度oj 题目1019:简单计算器

    题目描述:     读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. 输入:     测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之 ...