2019icpc南京網路賽 A 主席樹

2022-08-03 12:21:15 字數 1112 閱讀 6276

給乙個\(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,求字首和...