zoukankan      html  css  js  c++  java
  • 谈判专家(东方化改题+懒得看标程)

    您们这些出题的都是奆佬

    而我只会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
    ",maxk,realt);
    54     return 0;
    55 }

    诶等等这是我什么时候写的注释……算了不管了

  • 相关阅读:
    C语言面向对象编程(五):单链表实现(转)
    pthread_barrier_init,pthread_barrier_wait简介(转)
    Linux信号(signal) 机制分析(转)
    Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知(转)
    Linux 多线程环境下 进程线程终止函数小结(转)
    批量杀进程 ps awk grep
    C++中的INL(转)
    gdb调试多进程和多线程命令(转)
    转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端
    转:全栈工程师的知识栈列表
  • 原文地址:https://www.cnblogs.com/aristocrat/p/8465978.html
Copyright © 2011-2022 走看看