当前位置: 首页 > news >正文

P4390 [BalkanOI 2007] Mokia 摩基亚

简单二维数组,范围显然接受不了。简单 cdq。

矩阵和,考虑二维前缀和差分,容易将一个 4-side 询问拆成四个 2-side 询问,于是就是三维偏序直接上 cdq。

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#define fin(x) freopen(#x".in","r",stdin)
#define fout(x) freopen(#x".out","w",stdout)
#define fr(x) fin(x),fout(x);
#define Fr(x,y) fin(x),fout(y)
#define INPUT(_1,_2,FILE,...) FILE
#define IO(...) INPUT(__VA_ARGS__,Fr,fr)(__VA_ARGS__)
using namespace std;
using namespace __gnu_pbds;
#define mp make_pair
#define pii pair<int,int>
#define fi first
#define se second
#define pb push_back
#define cfast ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define ll long long
#define ull unsigned long long
#define intz(x,y) memset((x),(y),sizeof((x)))
char *p1,*p2,buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
#define tup(x) array<int,(x)>
inline ll read(){ll x=0,f=1;char ch=nc();while(ch<48||ch>57){if(ch=='-')f=-1;ch=nc();}while(ch>=48&&ch<=57)x=x*10+ch-48,ch=nc();return x*f;
}
//void write(int x){cout<<x<<' ';}
//void write(pii x){cout<<"P("<<x.fi<<','<<x.se<<")\n";}
//void write(vector<auto>x){for(auto i:x)write(i);cout<<'\n';}
//void write(auto *a,int l,int r){for(int i=l;i<=r;i++)write(a[i]);cout<<'\n';}
inline ll lowbit(ll x){return x&-x;}
#define pcount(x) __builtin_popcount(x)
inline void cmx(ll &x,ll y){if(y>x)x=y;}
inline void cmn(ll &x,ll y){if(y<x)x=y;}
const int mod=998244353;
#define b(x) (x).begin()
ll qp(ll x,int y){ll res=1;for(;y;x=x*x%mod,y>>=1)if(y&1)res=res*x%mod;return res;}
const int N=2e5+5,M=2e6+5;
struct node{int op,x,y,v,f;};
int n,t[M],tot,ans[N];vector<node>q;
void upd(int x,int d){for(;x<=n;x+=lowbit(x))t[x]+=d;}
int ask(int x){int res=0;for(;x;x-=lowbit(x))res+=t[x];return res;}
bool cmp(node x,node y){return x.x<y.x;}
void cdq(int L,int R){if(L==R)return;int mid=L+R>>1;cdq(L,mid),cdq(mid+1,R);sort(b(q)+L,b(q)+1+mid,cmp),sort(b(q)+1+mid,b(q)+1+R,cmp);vector<pii>w;for(int l=L,r=mid+1;r<=R;r++){while(l<=mid&&q[l].x<=q[r].x)(q[l].op==1?upd(q[l].y,q[l].v),w.pb(mp(q[l].y,q[l].v)),1:0),++l;if(q[r].op==2)ans[q[r].v]+=ask(q[r].y)*q[r].f;}for(pii i:w)upd(i.fi,-i.se);
}
inline void UesugiErii(){cin>>n,cin>>n;q.pb(node{});int op,x,y,x_,y_,z;while(cin>>op){if(op==3)break;cin>>x>>y;if(op==1)cin>>z,q.pb(node{1,x,y,z});else ++tot,cin>>x_>>y_,q.pb(node{2,x-1,y-1,tot,1}),q.pb(node{2,x-1,y_,tot,-1}),q.pb(node{2,x_,y-1,tot,-1}),q.pb(node{2,x_,y_,tot,1});}
//	for(node i:q)cout<<i.op<<' '<<i.x<<' '<<i.y<<' '<<i.v<<'\n';cdq(1,q.size()-1);for(int i=1;i<=tot;i++)cout<<ans[i]<<'\n'; 
}
signed main(){//IO();//cfast;int _=1;//cin>>_;for(;_;_--)UesugiErii();return 0;
}
http://cdlyhr.com/news/34206/

相关文章:

  • 把一个软件窗口部分内容置顶 的软件下载
  • 06.Servlet容器
  • 尘埃粒子计数器供应商推荐榜,台式粒子计数器/尘埃粒子计数器在线监测系统/大流量尘埃粒子计数器/尘埃粒子计数器公司电话
  • 第五十三篇
  • 第十周第三天10.3
  • 送女友礼物不踩雷:极萌胶原炮领衔10款心意好礼,懂她更宠她
  • 终极攻略:2025年美白祛斑选什么产品好?五大提亮净斑双修精华红榜揭晓!
  • QTableView 增加Combox
  • 博客园,我来啦~
  • 2025 年 12 月全过程咨询公司权威推荐榜:一站式服务,专业高效解决方案提供商!
  • 徐嘉余领衔混合泳接力队,3 分 27 秒 01 刷新亚洲纪录
  • 鹰队射手群爆发,NBA 常规赛击败爵士拿下四连胜
  • springboot jdk17 vue3 建行龙支付 二维码扫码支付 回调 及退费
  • EasyGBS新版本(v3.7.168)发布!视频能力再度升级!
  • 2025年上海免费一键生成原创文章软件平台推荐榜单:上海ai写文案免费一键生成服务/上海文章自动生成服务商/上海AI写文章软件服务商精选
  • 2025最新养殖/大棚/工业/商用中央空调品牌推荐!国内优质空调设备服务商权威榜单发布,技术创新与行业适配性双优助力高效制冷/热
  • 2025最新养殖热泵品牌推荐!畜牧养殖恒温设备权威榜单发布,技术创新引领行业升级
  • 2025最新养殖热泵品牌推荐!国内优质畜牧温控设备权威榜单发布,技术创新与节能实力双优助力规模化养殖
  • 2025年12月西南水玻璃厂家推荐排行榜:基于区域供应能力与产品适用性的客观评测
  • 2025年12月花灯厂家推荐排行榜单对比评测与选购指南
  • git项目管理idea
  • 2025 ECUDesk V1.3.0.0: Multi-Function Software for EU/US EGR, DPF, SCR DTC OFF
  • 用友NC系统特征及漏洞探测利用
  • 花灯选购指南:2025年热门品牌TOP5,智能互动花灯/营销花灯/春节宫灯/商场美陈花灯/花灯灯展/马年花灯定制选哪家
  • 2025年常州及周边静电粉末喷涂专业供应商推荐:静电粉末喷涂
  • 2025年耐用的灯饰电器开关行业内口碑厂家排行榜
  • 2025年比较好的洁净室快速门/自动快速门最新TOP品牌厂家排行
  • 2025年口碑好的PVC热水袋用户口碑最好的厂家榜
  • 2025年知名的防腐轻钢龙骨/抗震轻钢龙骨厂家推荐及选购指南
  • 2025年远红外功能面料批发厂家权威推荐榜单:海藻纤维远红外面料‌/远红外纤维‌/远红外功能纤维‌源头厂家精选