題目描述小t 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以及價值vi 。檢驗礦產的流程是:
1 、給定m個區間[li,ri];
2 、選出乙個引數w;
3 、對於乙個區間[li,ri],計算礦石在這個區間上的檢驗值yi:
這批礦產的檢驗結果y 為各個區間的檢驗值之和。即:y1+y2…+ym
若這批礦產的檢驗結果與所給標準值s 相差太多,就需要再去檢驗另一批礦產。小t不想費時間去檢驗另一批礦產,所以他想通過調整引數w 的值,讓檢驗結果盡可能的靠近標準值s,即使得s−y 的絕對值最小。請你幫忙求出這個最小值。
輸入輸出格式
輸入格式:
第一行包含三個整數n,m,s,分別表示礦石的個數、區間的個數和標準值。
接下來的n行,每行2個整數,中間用空格隔開,第i+1行表示iii號礦石的重量wi和價值vi。
接下來的m 行,表示區間,每行2 個整數,中間用空格隔開,第i+n+1行表示區間[li,ri]的兩個端點li 和ri。注意:不同區間可能重合或相互重疊。
輸出格式:
乙個整數,表示所求的最小值。
輸入輸出樣例輸入樣例#1:
5 3 15
1 52 5
3 54 5
5 51 5
2 43 3
輸出樣例#1:10
說明【輸入輸出樣例說明】
對於100%的資料,有1≤n,m≤200,000,06,012,1≤li≤ri≤n
解釋:觀察發現其最終結果與w有單調性,這樣就類似求單調區間內的0點就好了。直接二分答案,這裡注意l<=r,浪費我很多時間。。
#include#include#define n 200005
using namespace std;
long long n=0,m=0,s=0;
long long inf=0x3f3f3f3f3f3f3f3f;
struct nodea[n];
int l[n]=,r[n]=;
long long sum[2][n]=;
long long ret=inf;
long long abs1(long long x)
long long ok(long long w)
sum[0][i]+=sum[0][i-1];
sum[1][i]+=sum[1][i-1];
}for(int i=1;i<=m;i++)
return temp;
}int main()else
}cout
}
洛谷1314 聰明的質監員
noip2011 day2 t1 題目描述 小t 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以及價值vi 檢驗礦產的流程是 1 給定m 個區間 li,ri 2 選出乙個引數 w 3 對於乙個區間 li,ri 計算礦石在...
洛谷1314 聰明的質監員
聰明的質檢員 小 t 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1 到 n 逐一編號,每個礦石都有自己的重量 wi 以及價值 vi。檢驗礦產的流程是 1 給定 m 個區間 li,ri 2 選出乙個引數 w 3 對於乙個區間 li,ri 計算礦石在這個區間上的檢驗值 ...
洛谷 P1314 聰明的質監員
題目描述 小t 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以及價值vi 檢驗礦產的流程是 1 給定m 個區間 li,ri 2 選出乙個引數 w 3 對於乙個區間 li,ri 計算礦石在這個區間上的檢驗值yi 這批礦產的...