【NOIP2017提高A組集訓10.28】三元組
Description
有X+Y+Z個三元組(x[i],y[i],z[i]),請你從每個三元組中挑數,並滿足以下條件:
1、每個三元組中可以且僅可以選擇一個數(即x[i],y[i],z[i]中的一個)
2、選擇x[i]的三元組個數恰好為X
3、選擇y[i]的三元組個數恰好為Y
4、選擇z[i]的三元組個數恰好為Z問選出的數的和最大是多少
問選出的數的和最大是多少
Solution
在X=0的時候有一個很顯然的做法就是把y-z排個序,然後前面Y個給Y,後面的給Z,這樣可以讓在Y貢獻大的到Y去,在Z貢獻大的到Z去。
然後我們來考慮一下X不為0的情況。
我們可以考慮把它轉化為第一種情況,我們對於每個y和z都減去x,那麼前面的x位就變成0了,那麼就變成選y,選z和不選(選x)的情況了,最後把x都加上就好了。
那麼這樣很顯然也是把y-z排個序,但是在前面有不選的情況,所以我們就肯定是選前面Y個y值最大的更優,其他的都留給x,Z的處理也同理,然後這個東西我們可以打個桶來維護。
Code
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fod(i,a,b) for(i=a;i>=b;i--)
using namespace std;
typedef long long ll;
const int maxn=5e5+7,mxx=5e5;
int i,j,k,l,t,n,m,X,Y,Z,mi,c[maxn*2 ];
ll ans,he,f[maxn],g[maxn];
struct node{
int x,y,z;
}a[maxn];
bool cmp(node x,node y){return x.y-x.z>y.y-y.z;}
int main(){
freopen("triple.in","r",stdin);
freopen("triple.out","w",stdout);
scanf("%d%d%d",&X,&Y,&Z);n=X+Y+Z;
fo(i,1,n)scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z),he+=a[i].x,a[i].y-=a[i].x,a[i].z-=a[i].x;
sort(a+1 ,a+1+n,cmp);
mi=0x7fffffff;fo(i,1,Y)mi=min(mi,a[i].y),f[Y]+=a[i].y,c[a[i].y+mxx]++;
fo(i,Y+1,n){
if(mi>=a[i].y)f[i]=f[i-1];
else{
c[a[i].y+mxx]++;f[i]=f[i-1]+a[i].y-mi;
c[mi+mxx]--;while(!c[mi+mxx])mi++;
}
}
memset(c,0,sizeof(c));
mi=0x7fffffff;fo(i,n-Z+1,n)mi=min(mi,a[i].z),g[n-Z+1]+=a[i].z,c[a[i].z+mxx]++;
fod(i,n-Z,1){
if(mi>=a[i].z)g[i]=g[i+1];
else{
c[a[i].z+mxx]++;g[i]=g[i+1]+a[i].z-mi;
c[mi+mxx]--;while(!c[mi+mxx])mi++;
}
}
fo(i,Y,n-Z+1)ans=max(ans,f[i]+g[i+1]+he);
printf("%lld\n",ans);
}
相關推薦
【NOIP2017提高A組集訓10.28】三元組
Description 有X+Y+Z個三元組(x[i],y[i],z[i]),請你從每個三元組中挑數,並滿足以下條件: 1、每個三元組中可以且僅可以選擇一個數(即x[i],y[i],z[i]中的一個
JZOJ 5439. 【NOIP2017提高A組集訓10.31】Calculate
題目 資料範圍 題解 直接求每個 ⌊ T
JZOJ5436. 【NOIP2017提高A組集訓10.30】Group
題意: 資料範圍: Analysis: 首先這個肯定先排序,這樣好確定最大最小數的差。對於一個組裡的差即為最左最右端點。 考慮DP,為表全狀態設 f
【JZOJ 5416】【NOIP2017提高A組集訓10.22】密碼
Description 現在身為校慶志願者的小C正在引導校友們到他們集合的教室。終於,忙了一段時間的他可以休息一會兒了。這時,旁邊一位老校友的話吸引到了他。“我後來當了一名探險家,有一次,我來到了一個地方,在正前方有一扇門,旁邊寫著一行文字:’現在給你前m個字
【NOIP2017提高A組集訓10.22】公交運輸
Description 城市中有一條長度為n的道路,每隔1的長度有一個公交車站,編號從0到n,學校在0號車站的位置。其中每個公交車站(除了n號車站)有兩個屬性ci和vi,代表從這個公交車站出發的公交車的性質。ci代表這個從i出發的公交車,相鄰兩個停靠站之間的距
JZOJ 5400. 【NOIP2017提高A組模擬10.7】Repulsed
Description 小w 心裡的火焰就要被熄滅了。 簡便起見,假設小w 的內心是一棵n -1 條邊,n 個節點的樹。 現在你要在每個節點裡放一些個滅火器,每個節點可以放任意多個。 接下來每個
【JZOJ A組】【NOIP2017提高A組模擬7.10】隨機
題目 思路 水法 正解時不可能的,這輩子都不可能的 首先,我們發現選兩個端點作為si,sj才是最優的。 所以我們可以列舉區間長度(i #include<cstdio> #include<cmath> using
JZOJ 100035. 【NOIP2017提高A組模擬7.10】區間
Description Input Output Sample Input sample1: 4 2 10 5 1 1 10 sample2: 1000
【JZOJ 5400】【NOIP2017提高A組模擬10.7】Repulsed
DH ---------以上初三THU/PKU大爺---- Alan_cty LYD XHM HZJ ZZ ---以下是大神%-- YMW Samjia2000 werkeytom_ftd Crazy_czy WorldWide_D Yxuan
JZOJ 5404. 【NOIP2017提高A組模擬10.10】Graph
Description 給定一張n個點m條邊的無向圖,每條邊連線兩個頂點,保證無重邊自環,不保證連通 你想在這張圖上進行若干次旅遊,每次旅遊可以任選一個點x作為起點,再走到一個與x 直接有邊相連的點y,再走到一個與y 直接有邊相連的點z 並結束本次旅遊 作
【NOIP2017提高A組模擬10.7】Repulsed
Description: 小w 心裡的火焰就要被熄滅了。 簡便起見,假設小w 的內心是一棵n -1 條邊,n 個節點的樹。 現在你要在每個節點裡放一些個滅火器,每個節點可以放任意多個。 接下來每個節點都要被分配給一個至多k 條邊遠的滅火器,每個滅火器最多
JZOJ5372.【NOIP2017提高A組模擬9.17】貓鏈表+貪心+堆優化
margin targe sga gin bt5 ie8 usm shu auc x壹鼐順51比http://shequ.docin.com/txqq_cb3d1e346f 惹M3桓7O2疽http://www.docin.com/app/user/userinfo?use
[JZOJ5456]【NOIP2017提高A組沖刺11.6】奇怪的隊列
失望 output 第一個 粉絲 排隊 return algo nod struct Description nodgd的粉絲太多了,每天都會有很多人排隊要簽名。今天有??個人排隊,每個人的身高都是一個整數,且互不相同。很不巧,nodgd今天去忙別的事情去了,就只好讓
JZOJ_100029. 【NOIP2017提高A組模擬7.8】陪審團 (Standard IO)
qsort sta begin tput 關心 關鍵字 int 最有 制度 Description 陪審團制度歷來是司法研究中的一個熱議話題,由於陪審團的成員組成會對案件最終的結果產生巨大的影響,訴訟雙方往往圍繞陪審團由哪些人組成這一議題激烈爭奪。 小 W 提出了
JZOJ 100027. 【NOIP2017提高A組模擬7.7】表示式
JZOJ 100027. 【NOIP2017提高A組模擬7.7】表示式 題目 Description Input 一行兩個整數k,p。 Output 一行一個整數表示答案。 Sample Input 1 3 Sample Output 6 D
JZOJ 5455【NOIP2017提高A組衝刺11.6】拆網線
目錄: 題目: 分析: 程式碼: 題目: 傳送門 分析: 設f[i][0]f[i][0]表示在xx的子樹中,xx沒有被選擇的情況下最多有多少對點是兩兩配對的 f[
jzoj100026. 【NOIP2017提高A組模擬7.7】圖(倍增)
100026. 【NOIP2017提高A組模擬7.7】圖 Description 有一個n個點n條邊的有向圖,每條邊為<i,f(i),w(i)>,意思是i指向f(i)的邊權為w(i)的邊,現
jzoj100027. 【NOIP2017提高A組模擬7.7】表示式
Description Input 一行兩個整數k,p。 Output 一行一個整數表示答案。 Sample Input 1 3 Sample Output 6 Data Constraint 對於2
jzojs 5384. 【NOIP2017提高A組模擬9.23】四維世界
Description 眾所周知,我們常感受的世界是三維的。 Polycarp突然對四維空間產生了興趣,他想對四維空間進行一些研究。但是在此之前,他必須先對三維世界瞭解透徹。 於是Polycarp決定從零維,也就是一個點,開始他的研究。我們把一個點放在三維空間中,Polycarp把這
jzojs 100044. 【NOIP2017提高A組模擬7.13】abcd
哈哈,看這題挺少題解的,就發一份吧 Description Input 輸入檔名為abcd.in。 輸入檔案共 N+1 行。 第 1 行包含1個正整數N。 第 i+1 行包含4個整數a[i],b[i],c[i],d[i]。 Output 輸出