我的第一道cdq分治

需要注意的是排序时一定要把询问放前边

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=500005;
const int MAXQ=800005;
const int MAXM=200005;
inline void swap(int &x,int &y){int z=x;x=y;y=z;
}
inline int read(){int x=0,f=1,ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
int data[MAXN],n;
inline void add(int x,int i){while(x<=n) data[x]+=i,x+=x&(-x);
}
inline int query(int x){int res=0;while(x) res+=data[x],x-=x&(-x);return res;
}
struct stu{int op,id,x,y,z;
};
inline int cmp(stu a,stu b){if(a.x==b.x) return a.op<b.op;return a.x<b.x;
}
stu q[MAXQ],q1[MAXQ];
int ans[MAXM];
inline void solve(int l,int r){// cout<<l<<"\t"<<r<<endl;if(l==r) return ;int mid=(l+r)>>1,cnt1=0;for(int i=l;i<=mid;i++)if(!q[i].op)q1[++cnt1]=q[i];for(int i=mid+1;i<=r;i++)if(q[i].op)q1[++cnt1]=q[i];sort(q1+1,q1+1+cnt1,cmp);// cout<<cnt1<<endl;for(int i=1;i<=cnt1;i++){if(!q1[i].op) add(q1[i].y,q1[i].z);else if(q1[i].op==1) ans[q1[i].id]+=query(q1[i].y);else ans[q1[i].id]-=query(q1[i].y);}for(int i=1;i<=cnt1;i++)if(!q1[i].op)add(q1[i].y,-q1[i].z);solve(l,mid);solve(mid+1,r);
}
int main(){freopen("locust.in","r",stdin);freopen("locust.out","w",stdout);memset(ans,-1,sizeof(ans));n=read();int Q=read();int cnt=0;for(int i=1;i<=Q;i++){int op=read();if(op==1) q[++cnt].op=0,q[cnt].x=read(),q[cnt].y=read(),q[cnt].z=read();else{ans[i]=0;int x1=read(),y1=read(),x2=read(),y2=read();if(x1>x2) swap(x1,x2);if(y1>y2) swap(y1,y2);q[++cnt].op=1,q[cnt].x=x1-1,q[cnt].y=y1-1,q[cnt].id=i;q[++cnt].op=2,q[cnt].x=x1-1,q[cnt].y=y2,q[cnt].id=i;q[++cnt].op=2,q[cnt].x=x2,q[cnt].y=y1-1,q[cnt].id=i;q[++cnt].op=1,q[cnt].x=x2,q[cnt].y=y2,q[cnt].id=i;}}solve(1,cnt);for(int i=1;i<=Q;i++)if(ans[i]!=-1)printf("%d\n",ans[i]);return 0;
}

  

转载于:https://www.cnblogs.com/gcyyzf/p/9759227.html

COGS 577 蝗灾相关推荐

  1. cogs577. 蝗灾(CDQ)

    ★★★☆ 输入文件:locust.in 输出文件:locust.out 简单对比 时间限制:2 s 内存限制:128 MB DESCRIPTION C国国土辽阔,地大物博--但是最近却在闹蝗灾-.. ...

  2. 中国治理蝗灾是生物防治的成就,根本不是靠鸡靠鸭靠吃货换来的!

    近一段时间来,沙漠蝗虫全球肆虐,搞得人心惶惶.东非人民早就在和蝗虫进行紧张的肉搏战事了,乌干达政府宣布派出超过2000名军队人员来应对蝗灾,巴国空军更是出动149架战机要跟蝗虫开战等等. 正所谓居安思 ...

  3. 【COGS】2287:[HZOI 2015]疯狂的机器人 FFT+卡特兰数+排列组合

    [题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第 ...

  4. COGS 2353 2355 2356 2358 有标号的DAG计数

    不用连通 枚举入度为0的一层 卷积 发现有式子: 由$n^2-i^2-(n-i)^2=2*i*(n-i)$ 可得$2^{i*(n-i)}=\frac{{\sqrt 2}^{(n^2)}}{{\sqrt ...

  5. cogs 610. 数对的个数

    610. 数对的个数 ★★   输入文件:dec.in   输出文件:dec.out   简单对比 时间限制:1 s   内存限制:128 MB Description 出题是一件痛苦的事情! 题目看 ...

  6. COGS——T 8. 备用交换机

    http://www.cogs.pro/cogs/problem/problem.php?pid=8 ★★   输入文件:gd.in   输出文件:gd.out   简单对比 时间限制:1 s   内 ...

  7. oracle cogs 科目,请问R12中,Mtl_material_transaction中的 COGS Recognition记录是干啥的?

    我今天抓取库存移动记录,发现Mtl_material_Transaction表中,在作完了sales Order 的ship confirm动作后产生了两笔库存移动记录,第一笔是Sales Issue ...

  8. COGS——T 803. [USACO Hol10] 政党 || 1776: [Usaco2010 Hol]cowpol 奶牛政坛

    http://www.lydsy.com/JudgeOnline/problem.php?id=1776||http://cogs.pro/cogs/problem/problem.php?pid=8 ...

  9. 8.6 edu25 ,577#div2 CF补题(二分 ,dp 与 贪心

    两道题 1.edu 25 D. Suitable Replacement 题意:给定字符串s,t,s中'?'字符可以以任何字符替换,问如何替换 可使 替换后的s重新排序与t的匹配次数最多(len_t& ...

  10. 餐巾(cogs 461)

    [问题描述] 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,-,N).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需p分: (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分 ...

最新文章

  1. linux 挂载分区inode,Linux中分区挂载和LABEL的指定
  2. [ERR] Not all 16384 slots are covered by nodes.
  3. 【面试练习题】存在序列:1,1/2,2/3,3/5,5/8,8/13...,求前10项的和
  4. UML实践详细经典教程
  5. usb dfu和usb fastboot的区别
  6. java 静态块的作用域_java 学习笔记(一)
  7. java中的equals()空对象的出错
  8. ABP框架详解(八)动态ApiController的生成和访问机制
  9. 云计算环境下的服务器虚拟化技术,云计算技术与应用:虚拟化技术_服务器虚拟化.pdf...
  10. java 继承作用_理解java的三大特性之继承
  11. TIA protal与SCL从入门到精通(6):示例一 获取本地时间与定时开关(不用计时器)
  12. 技术书籍也香艳【关于Head First Design Patterns 封面女郎】
  13. 尚硅谷 宋红康老师 Java视频全程课程目录
  14. 第十八章 Caché 命令大全 NEW 命令
  15. 地面无人系统人机交互关键技术
  16. ElasticSearch分布式搜索引擎从入门到实战应用(入门篇-基本命令操作)
  17. [Linux] Miniconda安装及其使用
  18. fbx模型实现顶点偏移
  19. 数据挖掘在电子商务中的应用
  20. 安卓如何安装linux的iso文件系统,如何使用EasyBCD 2.0引导ISO文件安装系统

热门文章

  1. 什么是建站程序,建站程序有哪些?
  2. 解题:NOI 2010 航空管制
  3. 中国民营500强企业爬取数据展示
  4. VBA-自动筛选符合条件的数据
  5. vscode设置默认浏览器
  6. AUTOCAD——倒角命令、圆角命令
  7. 任务栏右键工具栏里的语言栏没有的修复.reg
  8. Cisco ASA 基础
  9. HTMLCSS精华知识点——基础标签
  10. PUF论文整理2:2021_A_Novel_Modeling-Attack_Resilient_Arbiter-PUF_Design