給乙個\(n\times n\)的螺旋矩陣,給出其中的\(m\)個點的值分別為各個點上數字的數字之和,給出\(q\)個詢問,每次詢問從\((x1,y1)\)到\((x2,y2)\)的子矩陣的和。
用官方題解的方法\(o(1)\)推出點\((x,y)\)上的值,將這\(m\)個點按\(x\)排序後依次按\(y\)建主席樹,查詢時找到對應的\(x1\)和\(x2\)的歷史版本,查詢\(y1\)到\(y2\)的權值和就行了,\((query(y1,y2,1,n,rt[l],rt[r]))\);
#include#define fi first
#define se second
#define pb push_back
#define ll long long
using namespace std;
const int inf=1e9;
const int mod=1e9+7;
const int maxn=1e6+10;
int t,n,m,q;
ll tr[maxn*30];
int ls[maxn*30],rs[maxn*30],rt[maxn],tot;
struct ppo
void up(int k,int l,int r,int x,int &p)
ll qy(int dl,int dr,int l,int r,int a,int b)int mid=l+r>>1;ll ret=0;
if(dl<=mid) ret+=qy(dl,dr,l,mid,ls[a],ls[b]);
if(dr>mid) ret+=qy(dl,dr,mid+1,r,rs[a],rs[b]);
return ret;
}int main();
}sort(a+1,a+m+1);
bd(1,n,rt[0]);
for(int i=1;i<=m;i++)
while(q--))-a-1;
int r=upper_bound(a+1,a+m+1,ppo)-a-1;
printf("%lld\n",qy(y1,y2,1,n,rt[l],rt[r]));}}
return 0;
}
2019 ICPC 南京網路賽D Robots
link 思路link 題意 給出乙個n個點的dag,起點保證為1,終點保證為n,在每乙個點,每一天有等概率走向其相鄰的點或是停在原點。在第i天的損耗值為i,求走到終點的期望損耗值。思路定義兩個陣列d i c i d i c i d i c i 分別代表第i個位置到終點的期望天數以及期望損耗值。可以...
2019ICPC南京網路賽A 離線樹狀陣列
題目鏈結 分析 一次詢問可以分為四次字首詢問,將每次詢問按照y公升序排序,維護乙個x上的樹狀陣列就行了。難點在於計算對應點的值 不會 include using namespace std typedef long long ll const int maxn 1e6 5 ll bit maxn a...
2019 icpc 上海網路賽
題意 t組案例,每組案例 n個燈泡 0 n 1 初始所有燈泡為熄滅狀態,m次操作,每次操作把區間 l,r 內的燈泡翻轉 開變關,關變開 問m次操作之後有多少燈泡是亮著的。題解 每次操作對 l,r 的所有數進行 1操作,求最後有多少個奇數。設該陣列為a n 每次操作a l 1,a r 1 1,求字首和...