題目鏈結
給出乙個長度為 \(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 拆成兩個...