下面是我對20200723的題解
t1這一道題確定了我們可以改變矩形的長寬(也就是\(k*k\)的矩形)
所以我們自然而然地考慮到將我們以\(o(n^3)\)的時間複雜度來列舉矩形+判斷答案貢獻轉化成用二維的差分+字首和來將每個點作為矩形的左上角時可以對答案作出的貢獻統計下來,至此,\(o(n^3)-->o(n^2)\)
部分細節看**
**如下:
#includeusing namespace std;
const int n = 2005;
int n, k;
char a[n][n];
int up[n], dwn[n], l[n], r[n];
int cnth[n][n], cnts[n][n], ans;
int main()
} for(int i = 1; i <= n; i++)
ans += (l[i] == n + 1) + (up[i] == n + 1);
} int maxn = 0;
for(int i = k; i <= n; i++)
} printf("%d\n", ans + maxn);
return 0;
}
t2
我們分析題目可以發現,對於乙個連續上公升或連續下降的連續的子串行,你將這個子串行劃分成兩個對於答案並沒有影響。
但是將乙個曲線從最高點或者最低點劃開是更優的。
所以我們可以考慮\(o(n)\)的dp,dp是討論在每乙個極點處是在左邊劃分還是右邊劃分。
現在**如下:
#includeusing namespace std;
int read()
int a[10000001], b[10000001];
long long ans[2];
int main()
}ans[0] = -0x3f3f3f3f3f3f3f3f, ans[1] = 0;
int maxn = 0, minn = 0x3f3f3f3f;
for (int i = 1; i <= n; i++)
/*p記錄的是上乙個極點位置在**,初始化為p=n,因為最開始時並沒有極值
ans[0]記錄的是上乙個極值是劃分在左邊
ans[1]記錄的是上乙個極值是劃分在右邊
*/if (i > 1 && i < n && ((a[i] > a[i-1] && a[i] >= a[i+1]) || (a[i] < a[i-1] && a[i] <= a[i+1]))) ;
nxt[0] = max(nxt[0], ans[0] + max(maxn, a[p]) - min(minn, a[p]));
if (p != i - 1) nxt[0] = max(nxt[0], ans[1] + maxn - minn);//為什麼有這個限制條件
//因為如果p==i-1,說明這乙個點是乙個點自己構成的子串行,不對答案做貢獻
else nxt[0] = max(nxt[0], ans[1]);
nxt[1] = max(nxt[1], ans[0] + max(maxn, max(a[p], a[i])) - min(minn, min(a[p], a[i])));
nxt[1] = max(nxt[1], ans[1] + max(maxn, a[i]) - min(minn, a[i]));
ans[0] = nxt[0], ans[1] = nxt[1];
maxn = 0, minn = 0x3f3f3f3f, p = i;
}else maxn = max(maxn, a[i]), minn = min(minn, a[i]);
cout << max(ans[0] + max(maxn, a[p]) - min(minn, a[p]), ans[1] + maxn - minn) << endl;
}
t3
臣妾做不到啊。
啊,這。
2015 8 15比賽總結
在總結之前,我必須膜拜一下某個切完提高組來省賽組虐場的犇。今天的比賽,失策還是有的,今天的問題如下 打 不小心,打錯了乙個小細節,導致最終答案錯誤。有的題目a了樣例我就以為可以了,或者是打的對拍也錯了 打題前沒有想清楚,最後對拍時才發現錯誤。第一題 這是道二分的題目,我在做比賽時就想到了正解,就是用...
8 17比賽總結
這次比賽考得一般般,這回的題是前段時間學的圖論演算法的測試題 100 52.2 40 12.5。1 位圖 這題是很簡單的圖論,用bfs 加優化簡單 o nm 過了。正解 這題將所有更新的點記錄在乙個佇列裡 初始的時候都是1 的看為更新的 然後每次將這些點往四周擴散,如果可以擴散,那麼 ans x,y...
8 18 比賽總結
這次比賽很不錯,排名第一 100 100 0 100 300。1 跳格仔 這題在比賽的時候做就很淼,直接dp 就可以了。正解 dp。2 2048 這題是一道純模擬題,只需要模擬2048 執行的步驟來進行迴圈和合併,由於 比較複雜,所以要精細做,考試的時候在除錯一小時後終於將這道題做了出來。正解 同上...