luogu3755 [CQOI2017]老C的任务
扫描线水题。
#include <algorithm>
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
int n, m, dx[300005], dy[300005], cntx, cnty, cnt, uu, vv, ww, aa, bb;
ll ans[100005], c[300005];
struct Node{
int idd, val, xxx, yyy;
}nd[500005];
bool cmp(Node x, Node y){
if(x.xxx==y.xxx) return x.idd<y.idd;
else return x.xxx<y.xxx;
}
int lb(int x){
return x&-x;
}
void add(int pos, int w){
for(int i=pos; i<=cnty; i+=lb(i))
c[i] += w;
}
ll query(int pos){
ll re=0;
for(int i=pos; i; i-=lb(i))
re += c[i];
return re;
}
int main(){
cin>>n>>m;
for(int i=1; i<=n; i++){
scanf("%d %d %d", &uu, &vv, &ww);
nd[++cnt] = (Node){0, ww, uu, vv};
dx[++cntx] = uu;
dy[++cnty] = vv;
}
for(int i=1; i<=m; i++){
scanf("%d %d %d %d", &uu, &vv, &aa, &bb);
uu--; vv--;
dx[++cntx] = uu; dx[++cntx] = aa;
dy[++cnty] = vv; dy[++cnty] = bb;
nd[++cnt] = (Node){i, 1, uu, vv};
nd[++cnt] = (Node){i, -1, uu, bb};
nd[++cnt] = (Node){i, -1, aa, vv};
nd[++cnt] = (Node){i, 1, aa, bb};
}
sort(dx+1, dx+1+cntx);
sort(dy+1, dy+1+cnty);
cntx = unique(dx+1, dx+1+cntx) - (dx + 1);
cnty = unique(dy+1, dy+1+cnty) - (dy + 1);
for(int i=1; i<=cnt; i++){
nd[i].xxx = lower_bound(dx+1, dx+1+cntx, nd[i].xxx) - dx;
nd[i].yyy = lower_bound(dy+1, dy+1+cnty, nd[i].yyy) - dy;
}
sort(nd+1, nd+1+cnt, cmp);
for(int i=1; i<=cnt; i++){
if(!nd[i].idd) add(nd[i].yyy, nd[i].val);
else ans[nd[i].idd] += query(nd[i].yyy) * nd[i].val;
}
for(int i=1; i<=m; i++)
printf("%lld\n", ans[i]);
return 0;
}
luogu3755 [CQOI2017]老C的任务的更多相关文章
- bzoj 4822: [Cqoi2017]老C的任务
4822: [Cqoi2017]老C的任务 练手速... #include <iostream> #include <cstdio> #include <cstring& ...
- bzoj 4823: [Cqoi2017]老C的方块 [最小割]
4823: [Cqoi2017]老C的方块 题意: 鬼畜方块游戏不解释... 有些特殊边,有些四个方块组成的图形,方块有代价,删掉一些方块使得没有图形,最小化代价. 比较明显的最小割,一个图形中必须删 ...
- [CQOI2017]老C的键盘
[CQOI2017]老C的键盘 题目描述 额,网上题解好像都是用的一大堆组合数,然而我懒得推公式. 设\(f[i][j]\)表示以\(i\)为根,且\(i\)的权值为\(j\)的方案数. 转移: \[ ...
- 【BZOJ4822】[CQOI2017]老C的任务(扫描线)
[BZOJ4822][CQOI2017]老C的任务(扫描线) 题面 BZOJ 洛谷 题解 没有修改操作,都不需要分治了... 直接排序之后扫描线算贡献就好了... 不知道为啥洛谷上过不了... #in ...
- [BZOJ4824][Cqoi2017]老C的键盘 树形dp+组合数
4824: [Cqoi2017]老C的键盘 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 218 Solved: 171[Submit][Statu ...
- [BZOJ4822][CQOI2017]老C的任务(扫描线+树状数组)
4822: [Cqoi2017]老C的任务 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 379 Solved: 203[Submit][Statu ...
- [BZOJ4824][CQOI2017]老C的键盘(树形DP)
4824: [Cqoi2017]老C的键盘 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 193 Solved: 149[Submit][Statu ...
- bzoj4823: [Cqoi2017]老C的方块(最小割)
4823: [Cqoi2017]老C的方块 题目:传送门 题解: 毒瘤题ORZ.... 太菜了看出来是最小割啥边都不会建...狂%大佬强强强 黑白染色?不!是四个色一起染,四层图跑最小割... 很 ...
- 【BZOJ4823】[CQOI2017]老C的方块(网络流)
[BZOJ4823][CQOI2017]老C的方块(网络流) 题面 BZOJ 题解 首先还是给棋盘进行黑白染色,然后对于特殊边左右两侧的格子单独拎出来考虑. 为了和其他格子区分,我们把两侧的这两个格子 ...
随机推荐
- HDU 5869 Different GCD Subarray Query 树状数组 + 一些数学背景
http://acm.hdu.edu.cn/showproblem.php?pid=5869 题意:给定一个数组,然后给出若干个询问,询问[L, R]中,有多少个子数组的gcd是不同的. 就是[L, ...
- C#中 添加 删除 查找Xml中子节点
//添加xml节点 private void AddXml(string image, string title) { XmlDocument xmlDoc = new X ...
- lnmp.org + phpstorm + xdebug
lnmp.org下载安装包安装之: lnmp是个集成安装包,就不用自己在配置lnmp环境 安装phpstorm,破解方法:注册服务器为http://idea.lanyus.com 就可以了 xdebu ...
- maven创建springMVC项目(一)
1.Eclipse配置 添加maven集成安装包:路径是maven下载安装的解压位置,如果不知道如何下载安装请点击这里看我的另一篇安装文章,这里不多说 这里需要注意的是: a.settings.xml ...
- Java GUI设置图标
ImageIcon是Icon接口的一个实现类. ImageIcon类的构造函数: ImageIcon() ImageIcon(String filename) //本地图片文件 ImageIcon ...
- Java 多个if 和多个else if 的区别
int a=1; if(a==1){System.out.println("1");} if(a==2){System.out.println("2");} i ...
- mysql的备份与恢复详解
一.为什么要备份 在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据 ...
- Java poi 的使用
poi可操作老旧版本的excel 下载jar包,http://archive.apache.org/dist/poi/release/bin/poi-bin-3.17-20170915.tar.gz ...
- 有C++特色的极乐净土
闲的没事瞎打的 在win7下会走调,需要将win7的beep系统文件改成xp的,且主机装有蜂鸣器才能正常收听. beep文件的度盘地址(不过应该没人为了听个这个去改系统文件)(P.S.如果想要尝试,尽 ...
- word转HTML在layuiadmin中锚点调转问题
前言: 在以前我们讲过把word转成HTML移植入自己的web项目使用:Word转html并移植到web项目 正文: 发现如果在layuiadmin框架中,页面里锚点跳转时会不正常(会跳转到新页面): ...