我的第一道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. 如何在asp.net中动态生成验证码
  2. Linux 第70天 mariadb transaction, log
  3. Android Studio 新建项目的R文件丢失的解决方法
  4. mysql根据idb还原数据_mysql通过idb文件,恢复数据库
  5. Java JDK下载与安装教程
  6. 论文润色软件Stylewriter,whitesmoke,1check使用亲测
  7. 平面设计中有趣的词云图如何设计
  8. 如何自学c语言更有效率,新手自学C语言提高效率的方法(混精)
  9. 字体加密woff(@font-face)防爬-学习记录
  10. 计算机为什么老是重启,为什么电脑开机后总是自动重启?电脑开机后自动重启怎么办?...
  11. 自然语言理解(NLU)概念浅析
  12. win10和win7哪个好用_Win10和Win7到底哪个好用(真实评测)
  13. Glib基础——版本信息
  14. 埃尔米特插值法在MATLAB中的应用
  15. 客服回复话术100句
  16. 命令行操作oracle,显示英文而不是中文
  17. canvas制作动态文字颗粒动画
  18. 015污点修复画笔工具,修复画笔工具,修补工具,内容感知移动工具和红眼工具...
  19. 流畅稳定免费的LinuxMint20.1桌面系统安装调试讲解
  20. c语言rand再哪个头文件里,c语言下rand函数在哪个头文件中

热门文章

  1. TCP控制拥塞的四种算法:慢开始,拥塞避免,快重传,快恢复
  2. 下载xlsx文件打开一直提示文件已损坏
  3. linux 彻底删除oracle,Linux下完美卸载Oracle
  4. 百度给创新员工发2000w奖金........
  5. SSH上传提示:encountered 1 errors during the transfer错误解决办法
  6. VBA-自动筛选符合条件的数据
  7. matlab筛选excel数据统计,MATLAB读取Excel筛选符合条件的数据进行求均值等处理 程序......
  8. 关于英文论文写作的初步总结和资料推荐
  9. 【Ubuntu】QT程序 could not find or load the Qt platform plugin “xcb“ in “报错解决
  10. html5 图片命名,html5 css命名规范