description
題意好長啊,自己去看吧。。。
sample input
5 2
3 3
1 1
10 8
4 8
2 3sample output
7設a的字首和為s
這道題首先可以推出乙個式子,第i位答案為:max((s[i]-s[j-1])/(d[i]+d*(i-j))。
然後能拿60分。。。
然後維護乙個下凸包,然後滿足三分性。
然後我就去學三分了,其實挺水的。
首先答案呈乙個二次函式,你每次將區間弄乙個mid1,mid2,表示區間的三等分點。
考慮ans[mid1] < ans[mid2],說明答案肯定在mid1的右邊,此時l=mid1即可。
反之相同。
#include
#include
using
namespace
std;
double _max(double x, double y)
int tp;
double a[110000], d[110000], s[110000], sta1[110000], sta2[110000];
double dd;
double get(int x, int y)
bool check(double x1, double y1, double x2, double y2, double x, double y)
int main()
double sum = 0;
for(int i = 1; i <= n; i++)
double ans = 0.0;
for(int j = l; j <= r; j++) ans = _max(ans, get(i, j));
sum += ans;
}printf("%.0lf", sum);
return
0;}
SDOI2013 保護出題人
出題人銘銘認為給sdoi2012 出題太可怕了,因為總要被罵,於是他又給sdoi2013 出題了。參加sdoi2012 的小朋友們釋放出大量的殭屍,企圖攻擊銘銘的家。而你作為sdoi2013的參賽者,你需要保護出題人銘銘。殭屍從唯一一條筆直道路接近,你們需要在銘銘的房門前放置植物攻擊殭屍,避免殭屍碰...
SDOI2013 保護出題人
點此看題 感覺這道題網上講解不是特別清楚,我來補一發詳細講解吧,因為作者也是花了好久才搞懂。首先把題目所求轉化成形式化表達 其中s ss是生命值a aa的字首和 i 1nmax j 1is i s j 1 x i i j d sum n max i frac i 1 n j 1maxi x i i ...
SDOI2013 BZOJ3203 保護出題人
description input 第一行兩個空格隔開的正整數n和d,分別表示關數和相鄰殭屍間的距離。接下來n行每行兩個空格隔開的正整數,第i 1行為ai和 xi,分別表示相比上一關在殭屍佇列排頭增加血量為ai 點的殭屍,排頭殭屍從距離房子xi公尺處開始接近。output 乙個數,n關植物攻擊力的最...