南京网络赛自闭现场

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的更多相关文章

  1. Robots 2019南京网络赛 (概率dp)

    Robots \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 有一个机器人要从 \(1\) 点走到 \(n\) 点,每走一步都需要 ...

  2. [2019南京网络赛D题]Robots

    题目链接 2019.9.2更新 第二天睡醒想了想发现好像搜一遍就可以过,赛时写的花里胡哨的还错了,太菜了QAQ #include<bits/stdc++.h> using namespac ...

  3. The Preliminary Contest for ICPC Asia Nanjing 2019/2019南京网络赛——题解

    (施工中……已更新DF) 比赛传送门:https://www.jisuanke.com/contest/3004 D. Robots(期望dp) 题意 给一个DAG,保证入度为$0$的点只有$1$,出 ...

  4. 2019南京网络赛E:K Sum

    Description: 定义函数 \[ f _n (k) = \sum _{l _1 = 1} ^n \sum _{l _2 = 1} ^n \cdots \sum _{l _k = 1} ^n \ ...

  5. 2019南京网络赛 D Robots 期望dp

    题目传送门 题意:给出一幅有向无环图,保证只有1入度为0,n出度为0,求问一个机器人从1出发,每天等概率的走到相邻点或者留在原地,问到达n点的代价.每天的代价都不一样,就是天数(第x天走一步的代价就是 ...

  6. 2019 南京网络赛 B super_log 【递归欧拉降幂】

    一.题目 super_log 二.分析 公式很好推出来,就是$$a^{a^{a^{a^{...}}}}$$一共是$b$个$a$. 对于上式,由于指数太大,需要降幂,这里需要用到扩展欧拉定理: 用这个定 ...

  7. HDU 4751 Divide Groups (2013南京网络赛1004题,判断二分图)

    Divide Groups Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  8. HDU 4750 Count The Pairs (2013南京网络赛1003题,并查集)

    Count The Pairs Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others ...

  9. 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 ...

随机推荐

  1. [转帖]linux /proc目录下的文件为何无法用vi编辑保存

    linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...

  2. 7大python 深度学习框架的描述及优缺点绍

    Theano https://github.com/Theano/Theano 描述: Theano 是一个python库, 允许你定义, 优化并且有效地评估涉及到多维数组的数学表达式. 它与GPUs ...

  3. 洛谷 P1194 飞扬的小鸟 题解

    题面 这道题是一道隐藏的比较深的DP(我太蒟蒻了!) 设f[i][j]表示到第i列时高度为j的最少步数是多少: 求上升时的方案就是一个完全背包!,求下降时的方案就是一个01背包: 然后处理边界就能A掉 ...

  4. 查找元素在list中的位置以及折半查询

    问题 查找某个值在list中的位置 解决思路 能够用折半查询的方法解决此问题. 解决(Python) #! /usr/bin/env python #coding:utf-8 #折半查找某个元素在li ...

  5. Jquery复习(七)之尺寸

    jQuery 尺寸 方法 jQuery 提供多个处理尺寸的重要方法: width() height() innerWidth() innerHeight() outerWidth() outerHei ...

  6. javascript伪链接(javascript:)

    前言 我们经常会看到“javascript:”这种情况,他经常会用在两种属性身上,href和onclick等事件处理器,接下里我们主要说用在onclick等事件处理器上的情况,在href中的应用在之前 ...

  7. mysql复制表结构,复制表数据

    MYSQL 复制表 show create table table_name:查看表的建表语句.该语句包含了原数据表的结构,索引等. 使用 SHOW CREATE TABLE 命令获取创建数据表(CR ...

  8. java学习笔记(4)多态

    一.多态 --------------------------------------------- 1.定义:某一类事物的多种存在形态 例如:动物中猫,狗. 猫这个对象对应的类型是猫类型 猫 x  ...

  9. 关于Unsupported major.minor version 52.0报错问题解决方案

    目录 1.问题描述2.问题分析3.解决方案步骤一:删除JDK1.7版本步骤二:导入JDK1.8版本步骤三:将新的JDK1.8引入到工程中4.总结1.问题描述在启动项目工程中,当编译class文件的时候 ...

  10. 终于明白上一篇的一顿误操作是什么了,是$,不是S !!!!!

    1,在命令行中输入export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端2. ...