收获:

  1、min, max, sum, 属于判定,等询问是”对象对答案贡献独立“,即不需要其他对象就了能更新答案,并保证只要所有对象更新过答案,那么该答案就是正确的。大概这就是所谓的”修改独立“。

  2、处理”先把所有修改给你,再询问“问题时,这道题要用到降维思想,就是处理的顺序也是一维,并且这维可以差分。那么就将二维问题变成了一维问题。(最值不满足差分性)。

 /**************************************************************
Problem: 1176
User: idy002
Language: C++
Result: Accepted
Time:6896 ms
Memory:42684 kb
****************************************************************/ #include <cstdio>
#include <algorithm>
#define N 2000010
#define M 340010
using namespace std; typedef long long dnt; struct Proc {
int opt, tim;
int id;
int x, y, v;
int t, b;
Proc(){}
Proc( int opt, int tim, int x, int y, int v ):opt(opt),tim(tim),id(),x(x),y(y),v(v),t(),b() {}
Proc( int opt, int tim, int id, int y, int t, int b ):opt(opt),tim(tim),id(id),x(),y(y),v(),t(t),b(b) {}
bool operator<( const Proc &o ) const {
return y<o.y || (y==o.y && opt<o.opt);
}
}; int n, m, s;
Proc proc[M]; int idp;
dnt bit[N];
dnt ans[N]; int ida; void modify( int x, int v ) {
for( int i=x; i<=n; i+=i&-i )
bit[i] += v;
}
dnt query( int x ) {
dnt rt=0LL;
for( int i=x; i; i-=i&-i )
rt += bit[i];
return rt;
}
dnt query( int t, int b ) {
return query(b)-query(t-);
}
void cdq( int lf, int rg ) {
if( lf==rg ) return;
int mid=(lf+rg)>>;
cdq(lf,mid);
cdq(mid+,rg);
sort( proc+lf, proc+rg+ );
for( int i=lf; i<=rg; i++ ) {
Proc &p = proc[i];
if( p.opt== && p.tim<=mid ) {
modify( p.x, p.v );
} else if( p.opt== && p.tim>mid ) {
ans[p.id] -= query( p.t, p.b );
} else if( p.opt== && p.tim>mid ) {
ans[p.id] += query( p.t, p.b );
}
}
for( int i=lf; i<=rg; i++ ) {
Proc &p = proc[i];
if( p.opt== && p.tim<=mid )
modify( p.x, -p.v );
}
}
int main() {
scanf( "%d%d", &s, &n );
for( int i=; ; i++ ) {
int opt;
scanf( "%d", &opt );
if( opt== ) break;
if( opt== ) {
int x, y, v;
scanf( "%d%d%d", &x, &y, &v );
idp++;
proc[idp] = Proc( opt, idp, x, y, v );
} else {
int x0, y0, x1, y1;
scanf( "%d%d%d%d", &x0, &y0, &x1, &y1 );
ida++;
ans[ida] += (dnt) (y1-y0+)*(x1-x0+)*s;
idp++;
proc[idp] = Proc( , idp, ida, y0-, x0, x1 );
idp++;
proc[idp] = Proc( , idp, ida, y1, x0, x1 );
}
}
cdq( , idp );
for( int i=; i<=ida; i++ )
printf( "%lld\n", ans[i] );
}

bzoj 1176的更多相关文章

  1. BZOJ 1176: [Balkan2007]Mokia

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 2012  Solved: 896[Submit][St ...

  2. 【BZOJ 1176】【Balkan 2007】Mokia

    http://www.lydsy.com/JudgeOnline/problem.php?id=1176 整体二分的例题 把每个询问拆成四个询问,整体二分里x坐标递增,按x坐标扫的时候用树状数组维护y ...

  3. BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )

    考虑cdq分治, 对于[l, r)递归[l, m), [m, r); 然后计算[l, m)的操作对[m, r)中询问的影响就可以了. 具体就是差分答案+排序+离散化然后树状数组维护.操作数为M的话时间 ...

  4. BZOJ 1176([Balkan2007]Mokia-CDQ分治-分治询问)

    1176: [Balkan2007]Mokia Time Limit: 30 Sec   Memory Limit: 162 MB Submit: 185   Solved: 94 [ Submit] ...

  5. BZOJ 1176 Mokia CDQ分治+树状数组

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 1854  Solved: 821[Submit][St ...

  6. BZOJ 1176[Balkan2007]Mokia(CDQ分治)

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 3381  Solved: 1520[Submit][S ...

  7. BZOJ 1176 [Balkan2007]Mokia ——CDQ分治

    [题目分析] 同BZOJ2683,只需要提前处理s对结果的影响即可. CDQ的思路还是很清晰的. 排序解决一维, 分治时间, 树状数组解决一维. 复杂度是两个log [代码] #include < ...

  8. BZOJ 1176 MOKIA

    cdq分治. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm ...

  9. bzoj 1176 Mokia(CDQ分治,BIT)

    [题目链接]  http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=96974 [题意] 定义查询操作与修改操作:1 x y z 为 ...

随机推荐

  1. XSS练习小游戏和答案参考

    源码:https://files.cnblogs.com/files/Eleven-Liu/xss%E7%BB%83%E4%B9%A0%E5%B0%8F%E6%B8%B8%E6%88%8F.zip 感 ...

  2. j-linkV8固件更新(任意版本)

    在使用j-link v8调试程序时,容易出现固件丢失或出错的情况,导致电脑不能识别,j-link上面的灯不亮.我今天刚刚遇到了这个情况,于是就拆开外壳,在网上搜索资料,发现刷固件相关的还真多,但是有一 ...

  3. axios通过django的csrf验证

    django会在浏览器的cookie里面保存一项csrftoken=GvzB3ilhlgadishmascacsilreclherlkjhaklsdv3qx4M96XRG88omScDPQaKoMxJ ...

  4. 解决eclipse Debug时提示source not found的问题

    解决办法: 选择Change Attached  Source,添加自己的project,clean项目,重启eclipse即可.

  5. cbow&&skipgram详细

    前面:关于层次huffman树和负例采样也要知道的,这里就不详细写了 来源于:https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=224 ...

  6. mysql慢sql报警系统

    前言:最近有同事反应有的接口响应时间时快时慢,经过排查有的数据层响应时间过长,为了加快定位定位慢sql的准确性,决定简单地搭建一个慢sql报警系统 具体流程如下架构图 第一步:记录日志 每个业务系统都 ...

  7. Sql Server2005 Transact-SQL 新兵器学习总结之-排名函数

    Transact-SQL提供了4个排名函数: rand() , dense_rand() , row_number() , ntile() 下面是对这4个函数的解释:rank() 返回结果集的分区内每 ...

  8. 题解-python-CodeForces 227B

    用hash解决.我python代码消耗很多内存,好在代码比C++短很多 n = int(raw_input()) mylist = raw_input().split(' ') i = 0 zid = ...

  9. 树莓派3B更换源为阿里源

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #科大源 sudo nano /etc/apt/sources.list deb htt ...

  10. CCF CSP 201612-2 工资计算

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201612-2 工资计算 问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所 ...