USACO2011 Nov Gold 解題報告

2022-05-07 01:00:11 字數 2263 閱讀 1242

題目鏈結

給出乙個長度為 \(n \ (n \leq 10 ^ 5)\) 序列 \(\ \ (a_i \leq 10 ^ 9)\),問中位數大於等於 \(k\) 的區間數量。(區間裡如果有偶數個數,中位數定義為偏大的那乙個)

若把 \(a_i \geq k\) 的位置標為 \(1\),\(a_i < k\) 標為 \(0\),並把這個序列記為 \(b\),該序列字首和記為 \(pre\);

則區間 \([l,r]\) 滿足題意當且僅當:

\[r - (l - 1) \leq 2 \times (pre_r - pre_)

\]把變數相同的放一邊:

\[r - 2 \times pre_r \leq (l - 1) - 2 \times pre_

\]列舉右端點,隨便找個資料結構維護左邊有幾個滿足條件的左端點。

#include #include #include int in() 

templateinline void chk_min(t &_, t __)

templateinline void chk_max(t &_, t __)

const int n = 1e5 + 5;

int n, nn, k, a[n], pre[n];

long long res;

struct binary_index_tree

int ask(int p)

} bit;

int main()

printf("%lld\n", res);

return 0;

}

題目鏈結

給出乙個 \(9 \times 9\) 的 \(01\) 矩陣,問最少修改幾個數能使每行、每列以及每個九宮格中的異或和為 \(0\)。

\(f_\) 表示到第 \(k\) 行,其中 \(1\) 至 \(k\) 行每一列異或和的狀態為 \(i\) (乙個二進位制數),當前的三個宮格異或和分別是 \(x,y,z\) 的最少操作次數;

轉移列舉第 \(k\) 行的操作;

注意每個九宮格的最後一行 \(x,y,z\) 都是 \(0\)。

#include #include #include int in() 

templateinline void chk_min(t &_, t __)

templateinline void chk_max(t &_, t __)

int a[11][4], b[515][4], f[11][515][2][2][2];

char str[15];

int main()

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

memset(f, 0x3f, sizeof(f));

f[0][0][0][0][0] = 0;

for (int k = 1, tmp, t1, t2, t3; k <= 9; ++k)

} else }}

printf("%d\n", f[9][0][0][0][0]);

return 0;

}

題目鏈結

給出 \(n \ (n \leq 250)\) 平行於座標軸的線段,選出盡量多的線段使得這些線段兩兩沒有交點 (頂點也算) ,橫的與橫的,豎的與豎的線段之間保證沒有交點,輸出最多能選出多少條線段。

座標均大於 \(0\),且不超過 \(10 ^ 9\)。

二分圖最大獨立集。

#include #include #include int in() 

templateinline void chk_min(t &_, t __)

templateinline void chk_max(t &_, t __)

const int n = 255;

struct segment a[n], b[n];

int n, x, y, mp[n][n], mat[n];

void prep()

}}int vis[n];

int dfs(const int u, const int tim)

}return 0;

}int hungary()

int main() ;

if (a[x].x1 == a[x].x2)

b[++y] = a[x--];

}prep();

printf("%d\n", n - hungary());

return 0;

}

Usaco 2011 Open 修剪草坪

傳送門 題目描述 在一年前贏得了小鎮的最佳草坪比賽後,fj 變得很懶,再也沒有修剪過草坪。現在,新一輪的最佳草坪比賽又開始了,fj 希望能夠再次奪冠。然而,fj 的草坪非常髒亂,因此,fj 只能夠讓他的奶牛來完成這項工作。fj 有 n 1 n 100 000 n 1 n 100,000 n 1 n ...

USACO 修理牛棚

同樣是一道貪心題,我的思路是用乙個陣列存下所有的空擋,對空擋進行排序,然後再在總長度中減去前m 1 大的空檔長度。關鍵還是理解題意。貌似洛谷 oj不支援 int min 之類的。還有要對初始資料排一次序,害我 wa了一次。include include includeusing namespace ...

USACO 奶牛電信

題目鏈結 洛谷1345 題目大意 給出乙個 n 個點 m條邊的無向圖,與 s,t 問至少刪去多少個點,使 s,t 不連通。n 100,m 600 分析 1.對於這種分離s,t 的題,考慮最大流 最小割的方法。2.然而題目要求割點,而不是割邊,怎麼辦?這就是一種經典的拆點題。3.把每個點 i 拆成兩個...