題面:[scoi2007]組隊
題解:一開始固定h然後找性質找了很久也沒有找到任何有用的東西。。。。。。
然後大佬告訴我乙個神奇的方法。。。
首先我們化一波式子:
設$h$表示高度的最小值,$v$表示速度的最小值
$$a(h[i] - h) - b(v[i] - v) \le c$$
$$ah[i] - ah + bv[i] - bv \le c$$
如果我們列舉$h[i]$,那麼$h[i]$就可以被當做乙個常量,於是我們把常量都放在一起。
設$$s_ = ah[i] - ah - c$$
則$$s_ + bv[i] - bv \le 0$$
$$s_ + bv[i] <= bv$$
$$\frac} + v[i] \le v \le v[i]$$
最後那個$\le v[i]$是因為v是最小值.
於是我們可以發現,在固定h的情況下,對於任意乙個v[i],它可以對在$[\frac} + v[i], v[i]]$之間的v產生貢獻。
於是對於每個固定的h,我們的最大答案就看v最大能被多少個點產生貢獻。
差分維護即可
1 #include2view codeusing
namespace
std;
3#define r register int
4#define ac 5500
5#define ac 101000
6#define ll long long78
intn, ans, maxn, d[ac];
9int
a, b, c;
1011
struct
node
14}s[ac];
1516 inline int
read()
1723
24 inline void upmax(int &a, int
b)27
28 inline void
pre()
2936 sort(s + 1, s + n + 1
);37}38
39void
work()
4051
int tmp = 0;52
for(r j = 1; j <= maxn; j ++)
53 tmp += d[j], upmax(ans, tmp), d[j] = 0;54
}55 printf("
%d\n
", ans);56}
5758
intmain()
59
不知道為什麼卡不過大佬qaq。。。
P4165 SCOI2007 組隊 推柿子 差分
題意 a h a m inh b s b mi ns c a times h a times min h b times s b times min s le c a h a minh b s b mins c 我們發現有三個變數,所以最暴力的複雜度是o n 3 o n 3 o n3 的,那麼我們考...
SCOI2007 壓縮 題解
給乙個由小寫字母組成的字串,我們可以用一種簡單的方法來壓縮其中的重複資訊。壓縮後的字串除了小寫字母外還可以 但不必 包含大寫字母r與m,其中m標記重複串的開始,r重複從上乙個m 如果當前位置左邊沒有m,則從串的開始算起 開始的解壓結果 稱為緩衝串 bcdcdcdcd可以壓縮為bmcdrr,下面是解壓...
SCOI2007 修車 題解
上古網路流題 為了便於考慮每個決策的貢獻,把每個工人的決策拆成n個彼此獨立的決策 即其修的倒數第i個車是什麼。因為此車後 含此車 有i人要多等t,故貢獻為t n 以此拆點建圖,以貢獻為費用跑 二分圖 費用流即可,由費用流性質可知每人修車順序必合法 注意本題n,m順序有點反常 include incl...