2019 南京网络赛A
南京网络赛自闭现场
https://nanti.jisuanke.com/t/41298
二维偏序经典题型
二维前缀和!!!
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define sc(x) scanf("%lld",&x);
int T;
#define P pair<int,int>
#define fi first
#define se second
#define maxn 1000000+10
int n,m,p;
int A[maxn];
int B[maxn];
int C[maxn];
int D[maxn];
int Ans[maxn];
map<int,int> mp;
struct Q{
int x,y,z,w;
}q[maxn];
P E[maxn];
int f(int x)
{
int ans=;
while(x)
{
ans+=(x%);
x/=;
}
return ans;
}
int cal(int x,int y)
{
int s=n*n;
int _t=(n+)/;
if(x==_t&&y==_t){
//return s;
return f(n*n);
}
int _a=max(abs(x-_t),abs(y-_t));///距中心点距离
int _x=(_a*+);
int sx=_t-_a;
int sy=_t-_a;
int ck=_a+_t-;///出口
// cout<<endl<<x<<" "<<y<<" "<<ck<<" ck "<<_a<<" "<<_t<<endl;
s-=(_x-)*(_x-);///减去内圈
if(y-_t==_a&&x<=ck) ///顶行
{
s-=(ck-x);
//cout<<endl<<"F"<<x<<' '<<y<<' '<<s<<' '<<f(s)<<endl; return f(s);
}
else
{
s-=(_x-);
//cout<<s<<" "<<_x<<" "<<y<<endl;
if(_t-x==_a)
{
s-=_x+sx-y-;
// cout<<s<<endl; return f(s);
}
else
{
s-=_x-; if(_t-y==_a)
{
s-=x-sx-;
return f(s);
}
else
{
s-=_x-;
if(x-_t==_a)
{ s-=y-sy-;
return f(s);
}
}
} } }
int V[maxn];
void add(int x,int val)
{
while(x<=maxn){
V[x]+=val;
x+=(x&-x);
}
}
int get(int x)
{
// if(x==0)return 0;
int ans=;
//ans+=V[0];
while(x){
ans+=V[x];
x-=(x&-x);
}
return ans;
}
bool cmp(int x,int y)
{
if(A[x]==A[y])return B[x]<B[y];
return A[x]<A[y];
}
void init()
{
for(int i=;i<maxn;i++){
Ans[i]=V[i]=;
mp.clear();
}
}
signed main()
{
sc(T); while(T--)
{
init();
sc(n);
sc(m);
sc(p);
int a,b,c,d;
for(int i=; i<=m; i++)
{
sc(A[i]);
sc(B[i]);
C[i]=i;
D[i]=cal(A[i],B[i]);
mp[D[i]]=;
}
sort(C+,C+m+,cmp);
int _k=;
for(int i=;i<p;i++){
sc(a);sc(b);sc(c);sc(d);
q[i].x=a;
q[i].y=b;
q[i].z=c;
q[i].w=d;
E[_k++]=P(a-,b-);
E[_k++]=P(a-,d);
E[_k++]=P(c,b-);
E[_k++]=P(c,d);
}
sort(E,E+_k);
int sz=unique(E,E+_k)-E;
int j=;
for(int i=;i<sz;){
//cout<<i<<sz<<'\n';
while(j<=m&&E[i].fi>=A[C[j]]){
add(B[C[j]],D[C[j]]);
j++;
}
Ans[i]=get(E[i].se);
// Ans1[i]=get(E[i].se-1);
i++;
} for(int i=;i<p;i++){
P x=P(q[i].x-,q[i].y-);
P y=P(q[i].z,q[i].w);
P w=P(q[i].x-,q[i].w);
P z=P(q[i].z,q[i].y-);
int an=Ans[lower_bound( E,E+sz,x)-E];
//cout<<x.fi<<' '<<an<<'\n';
an-=Ans[lower_bound( E,E+sz,w)-E];
an-=Ans[lower_bound( E,E+sz,z)-E];
cout<<Ans[lower_bound(E,E+sz,y)-E]+an<<'\n';
// cout<<Ans[lower_bound(E,E+sz,y)-E]<<'\n';
} }
}
2019 南京网络赛A的更多相关文章
- Robots 2019南京网络赛 (概率dp)
Robots \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 有一个机器人要从 \(1\) 点走到 \(n\) 点,每走一步都需要 ...
- [2019南京网络赛D题]Robots
题目链接 2019.9.2更新 第二天睡醒想了想发现好像搜一遍就可以过,赛时写的花里胡哨的还错了,太菜了QAQ #include<bits/stdc++.h> using namespac ...
- The Preliminary Contest for ICPC Asia Nanjing 2019/2019南京网络赛——题解
(施工中……已更新DF) 比赛传送门:https://www.jisuanke.com/contest/3004 D. Robots(期望dp) 题意 给一个DAG,保证入度为$0$的点只有$1$,出 ...
- 2019南京网络赛E:K Sum
Description: 定义函数 \[ f _n (k) = \sum _{l _1 = 1} ^n \sum _{l _2 = 1} ^n \cdots \sum _{l _k = 1} ^n \ ...
- 2019南京网络赛 D Robots 期望dp
题目传送门 题意:给出一幅有向无环图,保证只有1入度为0,n出度为0,求问一个机器人从1出发,每天等概率的走到相邻点或者留在原地,问到达n点的代价.每天的代价都不一样,就是天数(第x天走一步的代价就是 ...
- 2019 南京网络赛 B super_log 【递归欧拉降幂】
一.题目 super_log 二.分析 公式很好推出来,就是$$a^{a^{a^{a^{...}}}}$$一共是$b$个$a$. 对于上式,由于指数太大,需要降幂,这里需要用到扩展欧拉定理: 用这个定 ...
- HDU 4751 Divide Groups (2013南京网络赛1004题,判断二分图)
Divide Groups Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- HDU 4750 Count The Pairs (2013南京网络赛1003题,并查集)
Count The Pairs Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others ...
- HDU 4758 Walk Through Squares (2013南京网络赛1011题,AC自动机+DP)
Walk Through Squares Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Oth ...
随机推荐
- [转贴]linux lsof命令详解
linux lsof命令详解 https://www.cnblogs.com/sparkbj/p/7161669.html 简介 lsof(list open files)是一个列出当前系统打开文件的 ...
- Webstorm 2019激活码(有效期至2020年6月5日)
Webstorm 2019激活码(有效期至2020年6月5日):https://blog.csdn.net/lt326030434/article/details/90229298
- MyEclipse 2013 破解
本文链接:https://blog.csdn.net/Jayliue/article/details/97414181 1.运行cracker.jar 用 cd 命令找到 cracker.jar所在目 ...
- python-day16(正式学习)
目录 模块 什么是模块? 模块的四种形式 为什么要用模块 如何用模块 import from...import... 异同 循环导入问题 解决方案 1. 2. 模块搜索路径 random模块 模块 什 ...
- vi命令(待更新)
第一部分: 0:光标到本行行首$:光标到本行行尾 ^:本行第一个非blank的位置g_:本行最后一个非blank的位置 a:光标后插入(insert是光标前插入字符)o:当前行后加入新行O:当前行钱加 ...
- 096、运行第一个Service (Swarm03)
参考https://www.cnblogs.com/CloudMan6/p/7874609.html 上一节我们部署好了 Swarm 集群,下面部署一个运行httpd镜像的service进行演示 ...
- js 类型转变
在绝大部分情况下,操作符和函数可以自动将一个值转换成正确的数据类型.这被称为"类型转变(type conversion)". 举个例子,alert 自动转变任何类型的参数为字符串类 ...
- Java语言利用Google的Thumbnailator处理图片
导读:在Java中制作高质量的缩略图可能是一项相当困难的任务,或者图片质量高页面加载慢等等原因使需要对图片进行处理,但是又不想写太多的代码太麻烦去处理图片,那么就可以使用Thumbnailator—— ...
- lilo - 安装引导装入程序
总述 主要功能: ” /sbin/lilo” - 安装引导装入程序 辅助用途: ”/sbin/lilo –q” - 查询影射表 ”/sbin/lilo –R” - 设置下次启动的默认命令行 ”/sbi ...
- PAT Basic 1043 输出PATest (20 分)
给定一个长度不超过 的.仅由英文字母构成的字符串.请将字符重新调整顺序,按 PATestPATest.... 这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一样多的,若某种字符 ...