谈判专家(东方化改题+懒得看标程)
您們這些出題的都是奆佬
而我只會xjb改題,連題解都懶得看
還把奆佬們的題改的面目全非
這是原題
題目背景
小A玩《槍聲與鉆石》玩得很高興,于是憧憬自己也能成為談判專家。
題目描述
這天晚上,他做了個夢:
一個犯人突然闖進銀行,持槍負隅頑抗!他必須趕赴現場去解決這件事件。
對于一個心智不太正常的犯人來說,談判專家的工作就是安撫他們,讓他們冷靜,再一頓嘴炮把他們
勸回來。
這當然考驗的是嘴上功夫,為此,小A一共備用了n句話,每句話會使得勸回值+w,但是犯人的憤怒值
將會+k,且每句話只能講一次。而當犯人的憤怒值大于等于max的時候,犯人就會失了智,此時你再
講什么他也不會聽了。
但是說話是要掌握時機的!每句話都有一個時間下限x和談話時長l,表示你只有當時間t>=x的時候才
能說這句話,而這句話說完并且起作用時會過去l時間。在此期間,不能再多說其他的話,但是你可
以在一句話起作用后的瞬間接上幾句話。
默認犯人最初的憤怒值為0,默認時間從0開始。
我們的目標,就是在犯人憤怒值小于max時的勸回值最大化,如果勸回值相同,則時間消耗越少越好。
輸入格式
第一行兩個正整數n,max。
接下來的n行,每行四個非負整數w,k,x,l。
所有變量的含義見上文。
輸出格式
輸出最優解的勸回值與此時時間。
?
我都說了會把這題改的面目全非的
題目背景
探女參加《探女探女快說話》玩得很高興,于是憧憬自己能成為談判專家。
題目描述
這天晚上,她做了個夢:
正邪突然闖進輝針城,想要下克上!她必須趕赴現場去解決這件事件。
對于心智不太正常的正邪來說(我老婆的心智怎么會不正常!),探女的工作就是安(du)撫(nai)她,
讓她冷靜,再一頓嘴(du)炮(nai)把她勸回來。
這當然考驗的是嘴(du)上(nai)功夫,為此,探女一共備用了n句話,每句話會使得勸回值+w,但是正
邪的憤怒值將會+k,且每句話只能講一次。而當正邪的憤怒值大于等于max的時候,她就會失了智,
此時探女再講什么她也不會聽了。
但是說話是要掌握時機的!每句話都有一個時間下限x和談話時長l,表示探女只有當時間t>=x的時候
才能說這句話,而這句話說完并且起作用時會過去l時間。在此期間,不能再多說其他的話,但是探女
可以在一句話起作用后的瞬間接上幾句話。
默認正邪最初的憤怒值為0,默認時間從0開始。
探女的目標,就是在正邪憤怒值小于max時的勸回值最大化,如果勸回值相同,則時間消耗越少越好。
但是由于月都科技不發達,探女請求你幫忙。
輸入格式
第一行兩個正整數n,max。
接下來的n行,每行四個非負整數w,k,x,l。
所有變量的含義見上文。
輸出格式
輸出最優解的勸回值與此時時間。
腦補場景:
探女:我女兒最乖了
正邪:下克上不可避!(憤怒值+max)
探女:我女兒最不乖了
正邪:下克上不可避!(憤怒值+max)
這難道是傳說中的愛的深黑的切嗎(不
?
然后這道題呢我寫dp寫著寫著把自己都繞迷糊了
(最終也不知道自己寫的是不是dp)
當然dalao的標程還是要發上來的
1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue> 6 #include<cctype> 7 using namespace std; 8 typedef long long ll; 9 inline int read(){ 10 int X=0,w=0;char ch=0; 11 while(!isdigit(ch)){w|=ch=='-';ch=getchar();} 12 while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); 13 return w?-X:X; 14 } 15 struct node{ 16 ll w; 17 ll k; 18 ll x; 19 ll l; 20 }a[1001]; //啊這個結構體和我寫的一模一樣……連名字也一樣叫node 21 bool cmp(node b,node c){ //排序√ 22 return b.x<c.x; 23 } 24 ll f[1001][50001]={0}; 25 int main(){ 26 freopen("negotiation.in","r",stdin);freopen("negotiation.out","w",stdout); 27 int n=read(); 28 ll nuqi=read(); 29 ll ans=0,maxn=0,maxx=0; 30 for(int i=1;i<=n;i++){ 31 a[i].w=read(); 32 a[i].k=read(); 33 a[i].x=read(); 34 a[i].l=read(); 35 ans+=a[i].l; 36 maxn=max(maxn,a[i].l+a[i].x); 37 maxx=max(maxx,a[i].x); 38 } 39 sort(a+1,a+n+1,cmp); 40 maxn=max(maxn,ans+maxx); 41 ll maxk=0,realt; 42 for(int i=1;i<=n;i++){ 43 for(int j=maxn;j>=a[i].x+a[i].l;j--){ 44 for(int k=nuqi;k>a[i].k;k--){ 45 f[k][j]=max(f[k][j],f[k-a[i].k][j-a[i].l]+a[i].w); 46 } 47 if(maxk<f[nuqi][j]||(maxk==f[nuqi][j]&&realt>j)){ 48 realt=j; 49 maxk=f[nuqi][j]; 50 } 51 } 52 } 53 printf("%lld %lld\n",maxk,realt); 54 return 0; 55 }誒等等這是我什么時候寫的注釋……算了不管了
轉載于:https://www.cnblogs.com/aristocrat/p/8465978.html
總結
以上是生活随笔為你收集整理的谈判专家(东方化改题+懒得看标程)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++面向对象的程序设计
- 下一篇: 经济学中蝴蝶效应指的是什么