首先二維樹狀陣列肯定開不下
仿照二維樹狀陣列的做法,如果有差分陣列$d[i][j]=a[i][j]-a[i-1][j]-a[i][j-1]+a[i-1][j-1]$,那麼就有:
$$sum[x][y]=\sum\limits_^^^^}}}$$
$$=\sum\limits_^^^}}$$
$$=\sum\limits_^^}$$
所以把詢問拆成四個(字首和)、修改拆成四個(差分))
已經按時間排好序,然後把x作為第二維來cdq,開d,i*d,j*d,i*j*d四個樹狀陣列統計答案就可以了
上帝造題的七分鐘也可以這樣做,不過常數太大要吸氧
1 #include2#define pa pair3
#define clr(a,x) memset(a,x,sizeof(a))
4using
namespace
std;
5 typedef long
long
ll;6
const
int maxn=1e4+10,maxm=3e4+10;7
8inline ll rd()
11while(c>='
0'&&c<='
9') x=x*10+c-'
0',c=getchar();
12return x*neg;13}
1415
struct
node//
o==1查 o==0改
20 }op[maxm*4],tmp[maxm*4
];21
ll dd[maxn],id[maxn],jd[maxn],ijd[maxn];
22ll ans[maxm];
23int
n,m;
24bool
isask[maxm];
2526 inline int lowbit(int x)
27 inline void add(ll *t,int
x,ll y)
30 inline ll query(ll *t,int
x)33
34void cdq(int l,int
r)48 tmp[++n]=op[q];
49if(op[q].o!=1) continue
;50 ll re=query(dd,op[q].y)*(op[q].x+1)*(op[q].y+1
);51 re-=query(id,op[q].y)*(op[q].y+1
);52 re-=query(jd,op[q].y)*(op[q].x+1
);53 re+=query(ijd,op[q].y);
54 ans[op[q].t]+=re*op[q].v;
55 }for(;p<=m;p++) tmp[++n]=op[p];
56for(int p=l;p<=m&&op[p].x<=op[r].x;p++)
63 memcpy(op+l,tmp+1,sizeof(node)*n);64}
6566
intmain()else84}
85 cdq(1
,j);
86for(i=1;i<=m;i++)
89return0;
90 }
Winform多顯示屏顯示
一台主機連線了2臺顯示器 2個顯示卡 要求乙個程式的兩個窗體在不同的顯示器上顯示 顯示器1 顯示from1,顯示器2 顯示from2。及說明如下 form1不需要變更 from2新增如下 方法一 from2 frm2 new from2 if screen.allscreens.count 1 方法...
筆記 顯示屏LCD
之前有個屏廠家講過背光液晶屏的原理,液晶是特殊狀態。可能不太記得講了什麼,也沒留下ppt,遺憾。後來有一樣機,裝過,觸控螢幕是薄薄一層,下面是顯示屏,從物理上是分離的。這次從網上收集資料,先學習一下顯示屏是什麼。現在,pc顯示屏已經有led 發光方式 屏了。但是貌似手機都是lcd 背光方式 lcd ...
顯示屏相關知識
fhd full high definition,全高畫質,解析度 1920 x 1080,俗稱1080p uhd ultra high definition,超高清,解析度達到3840 x 2160及以上的顯示 qfhd quad full high definition,四角全高畫質 2k 20...