zoukankan      html  css  js  c++  java
  • 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
    ", ans[i]);
    	return 0;
    }
    
  • 相关阅读:
    寒假学习记录19
    寒假学习记录18
    寒假学习记录17
    寒假学习记录16
    寒假学习记录15
    寒假学习记录14
    寒假学习记录13
    寒假学习记录12
    寒假学习记录11
    学习进度(10)
  • 原文地址:https://www.cnblogs.com/poorpool/p/8574428.html
Copyright © 2011-2022 走看看