常州模擬賽d8t2 繪畫

2022-05-01 09:30:08 字數 1924 閱讀 1964

分析:考慮記錄每個座標上每個顏色出現了幾次,並由此算出每個顏色

在這個座標上的貢獻。答案肯定是原圖的答案扣去矩形的答案,再加

上那個矩形同種顏色的貢獻,這裡的答案指的是σdis.我們先要記錄每個顏色在各個位置出現的次數,因為每一次都是區間操作嘛,所以我們用二維差分可以很好地維護,字首和求出出現的次數. 然後求出每個位置原本圖的和副本的差距,求一下字首和就得到原本圖整體的答案.

最後再用乙個字首和陣列求出每個位置覆蓋為顏色x後的貢獻,就可以了.

#include #include 

#include

#include

#include

#define s(u,i,j,k,l) (u[k][l] - u[i-1][l] - u[k][j-1] + u[i - 1][j-1])

using

namespace

std;

const

int maxn = 1010,maxm = 300010

;int n, m, kk, rubbish,a[maxn][maxn],sum[30

][maxn][maxn],col[maxm];

intx3[maxm], y3[maxm], x4[maxm], y4[maxm];

long

long ans[maxn][maxn],b[30][maxn][maxn],ret = 1ll << 60

,pi;

char

s[maxn];

long

long s1(int x, int y, int x2, int

y2)long

long s2(int cur, int x, int y, int x2, int

y2)int

main()

for (int i = 1; i <= kk; i++)

for (int k = 0; k < 26; k++)

for (int i = 1; i <= n; i++)

for (int j = 1; j <= m; j++)

sum[k][i][j] += sum[k][i - 1][j] + sum[k][i][j - 1] - sum[k][i - 1][j - 1

];//統計每個點每種顏色出現的次數

for (int i = 1; i <= n; i++)

for (int j = 1; j <= m; j++)

for (int i = 1; i <= n; i++)

for (int j = 1; j <= m; j++)

for (int i = 1; i <= n; i++)

for (int j = 1; j <= m; j++)

s1 = s2 = 0

;

for (int k = 25; k >= 0; k--)//相當於計算ans,倒著計算一次

for (int k = 0; k < 26; k++)

b[k][i][j] += b[k][i - 1][j] + b[k][i][j - 1] - b[k][i - 1][j - 1

]; }

for (int i = 1; i <= kk; i++)

}printf(

"%lld %d\n

", ret, pi);

return0;

}

常州模擬賽d7t2 陣列

hjz 的陣列初始時有 n 個元素。他可以把乙個位置上的數加上或減去乙個固定的 數 x。一天 ljz 和 hzy 來 hjz 家玩。ljz 突發奇想,提出了乙個問題 如何在給定的 操作步數內最小化陣列所有元素的乘積呢?hjz 百思不得其解,但是他想博得 hzy 的好感,就把這個問題交給你啦 由於最小...

常州模擬賽d5t1 journalist

分析 出題人喪心病狂卡spfa.只能用dijkstar 堆優化.主要的難點是字典序的處理上,乙個想法是在做最短路的時候處理,邊鬆弛邊記錄,比個大小記錄最佳答案.具體的思路大概和最短路計數差不多,當遇到d u w i d v 是,說明到d v 有兩條最短路了,更新一下答案。但是這樣效率太低了,每一次鬆...

常州模擬賽d2t3 小X的佛光

平日裡最喜歡做的事就是蒸發學水。題目描述 小 x 所在的城市 x 城是乙個含有 n 個節點的無向圖,同時,由於 x 國是一 個發展中國家,為了節約城市建設的經費,x 國首相在建造 x 城時只建造 n 1 條邊,使得城市的各個地點能夠相互到達。小 x 計畫蒸發 q 天的學水,每一天會有一名學水從 a ...