1. 程式人生 > >NOIP2011 Day2 T2 聰明的質監員

NOIP2011 Day2 T2 聰明的質監員

W越大,Y越小,所以可以二分W使Y接近S。
少用min、abs可以讓思路更清晰。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
const int maxn = 200010;
int n, m, num[maxn];
int mw;
long long s, sum[maxn], tot;

struct node1{
    int w, v;
} a[maxn];

struct node2{
    int
li, ri; } b[maxn]; long long judge(int x){ memset(sum, 0, sizeof(sum)); memset(num, 0, sizeof(num)); for(int i = 1; i <= n; i++){ sum[i] = sum[i-1], num[i] = num[i-1]; if(a[i].w > x){ sum[i] += a[i].v; num[i]++; } } tot = 0; for
(int i = 1; i <= m; i++) tot += (sum[b[i].ri] - sum[b[i].li-1])*(num[b[i].ri] - num[b[i].li-1]); return tot; } int main(){ cin >> n >> m >> s; for(int i = 1; i <= n; i++){ cin >> a[i].w >> a[i].v; mw = max(mw, a[i].w); } for
(int i = 1; i <= m; i++) cin >> b[i].li >> b[i].ri; long long ans = s; int l = 0, r = mw + 1; while(l < r){ int mid = (l+r) >> 1; long long now = judge(mid); if(now > s){ l = mid + 1; if(ans > now - s) ans = now - s; } else if(now < s){ r = mid; if(ans > s - now) ans = s - now; } else{ cout << "0" << endl; return 0; } } cout << ans << endl; return 0; }

相關推薦

NOIP2011 Day2 T2 聰明質監

W越大,Y越小,所以可以二分W使Y接近S。 少用min、abs可以讓思路更清晰。 #include<cstdio> #include<cstring> #include&

[二分]NOIP2011 day2 T2 聰明的質檢

聰明的質檢員 From 西部314 背景 Background NOIP2011 day2 第二題 描述 Description 小T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦

全國資訊學奧林匹克聯賽(NOIP2011)複賽 提高組 day2 T2 聰明質監

講過二分已經一段時間,現在老師又找一道二分題來練手#A#,起初就是對兩個大大的西格瑪有點興趣,做起來發現這題出題人還是很心機的啊啊! 現在來一波題目: 2.聰明的質監員 (qc.cpp/c/pas) 【問題描述】 小 T 是一名質量監督員,最近

noip2011 day2-2 聰明質監

題目描述 小 T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有n 個礦石,從1 到n 逐一編號,每個礦石都有自己的重量wi 以及價值vi。檢驗礦產的流程是: 1、給定m 個區間[Li

[NOIP2011]聰明質監 D2 T2 二分答案

Time Limit: 1 Sec Memory Limit: 128 MB Description 小 T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有n 個礦石,從1到n 逐一編號,每個礦石都有自己的重量wi 以及價值vi。

二分查找前綴和(洛谷1314聰明質監NOIP2011提高組)

ron min 最小值 一個數 -s 判斷 inf bre sync 小T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以及價值vi 。檢驗礦產的流程是: 1 、給定m 個區間[Li,Ri

NOIP2011聰明質監題解

輸入輸出 std under pri efault abs iostream using nbsp 631. [NOIP2011] 聰明的質監員 ★★ 輸入文件:qc.in 輸出文件:qc.out 簡單對比時間限制:1 s 內存限制:128 MB 【問題描述

luoguP1314 聰明質監 題解(NOIP2011)

() main include ostream bsp algo namespace lin etc P1314 聰明的質監員 題目 #include<iostream> #include<cstdlib> #include<cstdio&g

NOIP2011聰明質監

檢驗 dig mem 代碼 for bsp ase mes 又是 小T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 nn 個礦石,從 11到nn逐一編號,每個礦石都有自己的重量 w_iwi? 以及價值v_ivi? 。檢驗礦產的流程是: 1 、給定mm個區間

[NOIP2011真題]聰明質監

題目背景 NOIP2011 DAY2 試題 2 。 題目描述 小T是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1 到 n 逐一編號,每個礦石都有自己的重量 wi 以

[noip2011]聰明質監

題目描述 Description 小 T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有n 個礦石,從1到n 逐一編號,每個礦石都有自己的重量wi 以及價值vi。檢驗礦產的流程是:見圖 若這批礦產的檢驗結果與所給標準值S 相差太多,就需要再去檢驗

離散+二分+字首和 [NOIP2011] 聰明質監

[NOIP2011] 聰明的質監員 時間限制:1 s   記憶體限制:128 MB 【問題描述】  小 T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有n個礦石,從 1 到n逐一編號,每個礦石都有自己的重量wi以及價值vi。檢驗礦產的流程是:  1.

Code[vs] 1138— NOIP2011 聰明質監 (二分答案+字首和)

題目連結 題意: 有n個礦石,每個礦石有重量和價值兩個引數,質檢員可以調節一個最低重量w,每個區間的檢查值為該區間內重量>=w的礦石價值和  *(重量>=w的個數),求m個區間的檢查值之和 與 標準值s之差的絕對值的最小值 題解: 檢查值之和 只和 w 有

洛谷 P1314 [NOIP2011 D2T2] 聰明質監

題目描述 小T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以及價值vi 。檢驗礦產的流程是: 1 、給定m 個區間[Li,Ri]; 2 、選出一個引數 W; 3 、對於一個區間[Li

noip2011 聰明質監 (二分+字首和處理+讀入優化)

第一行包含三個整數n,m,S,分別表示礦石的個數、區間的個數和標準值。 接下來的n行,每行2個整數,中間用空格隔開,第i+1行表示i號礦石的重量wi和價值vi 。 接下來的m行,表示區間,每行2個整數,中間用空格隔開,第i+n+1行表示區間[Li,Ri]的兩個端點Li和Ri。注意:不同區間可能重合或相互重疊

[NOIP2011] 聰明質監 二分+字首和

考試的時候打的二分但沒有用字首和維護。但是有個小細節手誤打錯了結果掛掉了。 絕對值的話可能會想到三分,但是注意到w增大的時候y是減小的,所以單調性很明顯,用二分就可以。但注意一個問題,就是二分最後的結果不一定是最優的,只是在它屬於的符號裡是最優的,所以需要最後存正負的最優解

二分查詢字首和(洛谷1314聰明質監NOIP2011提高組)

小T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以及價值vi 。檢驗礦產的流程是: 1 、給定m 個區間[Li,Ri]; 2 、選出一個引數 W; 3 、對於一個區間[Li,Ri],計算礦石在這

P1314 聰明質監

fin sin 數據 color 空格 tmp ... 個數 pac P1314 聰明的質監員 題目描述 小T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以

luogu P1314 聰明質監 x

sca 簡單 最小 最小值 第一個 其中 d+ 計算 long P1314 聰明的質監員(至於為什麽選擇這個題目,可能是我覺得比較好玩唄) 題目描述 小T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的

luogu P1314 聰明質監

相互 name 二分 upload names 格式 註意 ++ 負責 題目描述 小T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以及價值vi 。檢驗礦產的流程是: 1 、給定m 個區間[