4822: [Cqoi2017]老C的任务&&bzoj 1935: [Shoi2007]Tree 园丁的烦恼
发布日期:2021-05-06 23:48:01 浏览次数:25 分类:精选文章

本文共 929 字,大约阅读时间需要 3 分钟。

双倍经验题?

最近很困,特别是今晚。。。
于是来切“水题”玩。。
一开始用CDQ大炮打蚊子。。似乎还写炸了。。
于是换了一个简单点的做法。。
前者:

#include
#include
#include
#include
#include
#include
using namespace std;const int N=500005*5;struct qq{ int x,y,f,id;}s[N];int num=0;int n,m;int ans[N];bool cmp (qq a,qq b){ if(a.y!=b.y) return a.y
=1) { lalal=lalal+f[x]; x-=lb(x); } return lalal;}int main(){ scanf("%d%d",&n,&m); for (int u=1;u<=n;u++) { int x,y; scanf("%d%d",&x,&y); x++;y++; s[++num].x=x;s[num].y=y; } for (int i=1;i<=m;i++) { int u,v,uu,vv; scanf("%d%d%d%d",&u,&v,&uu,&vv); u++;v++;uu++;vv++; s[++num]=(qq){u-1,v-1,1,i}; s[++num]=(qq){uu,vv,1,i}; s[++num]=(qq){uu,v-1,-1,i}; s[++num]=(qq){u-1,vv,-1,i}; } memset(f,0,sizeof(f)); sort(s+1,s+1+num,cmp); for (int u=1;u<=num;u++) { if (s[u].id==0) add(s[u].x,1); else ans[s[u].id]=ans[s[u].id]+s[u].f*get(s[u].x); } for (int u=1;u<=m;u++) printf("%d\n",ans[u]); return 0;}
上一篇:bzoj1567: [JSOI2008]Blue Mary的战役地图
下一篇:bzoj3489: A simple rmq problem

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月04日 22时33分27秒