dp(武功秘籍)

众所周知,太吾绘卷是非常爱(niu)你(bi)的国产武侠游戏,里面有一个继承系统,当你死后可以在你的子孙中挑选一个继承人,用他的人物继续进行游戏。当你挑选继承人的时候一定会挑选能力最强,天赋最高的那一个来继承。这样你培养的时候也会重点培养天赋最高的那一个。某zf大侠有两个继承人,第一个天赋很高,第二个天赋比较平庸,zf大侠想重点培养第一个继承人,但是又怕第二继承人觉得不公平,所以他会在尽量公平的基础上来重点培养第一个继承人。Zf大侠有n种秘籍,每种秘籍都能提升某个人一定的能力,请你帮zf大侠决定怎么培养继承人吧。Input本题有多组输入,每组数据第一行输入由整数N(0 < N <= 50)组成,表示秘籍的种类。接下来N行,每行两个整数V(0 当N为负数时程序结束。Output每组数据输出一行,包含两个数字A和B,分别带表两个继承人最终获得的能力大小(一开始两个继承人的能力都为0),A和B用空格分开。Sample Input

2
10 1
20 1
3
10 1
20 2
30 1
-1

Sample Output

20 10
40 40

解析:dp[sum/2]是其全部的一半(能取到的话)或者为其最小的那一分
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5+10;
int dp[250005];
int a[10005];
int main()
{
    int n;
    while(~scanf("%d",&n)&&n>=0){
        memset(a,0,sizeof(a));
        memset(dp,0,sizeof(dp));
        int x,y,sum=0;
        int cnt=0;
        for(int i=1;i<=n;i++){
            scanf("%d%d",&x,&y);
            sum+=x*y;
            int t=1;
            while(y>=t){
                a[cnt]=x*t;
                cnt++;
                y-=t;
                t*=2;
            }
            if(y>0){
                a[cnt]=x*y;
            }
        }
        int v=sum/2;
        for(int i=0;i<=cnt;i++){
            for(int j=v;j>=a[i];j--){
                dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
            }
        }
        printf("%d %d\n",sum-dp[v],dp[v]);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/lipu123/p/12194500.html

时间: 2024-11-07 12:26:00

dp(武功秘籍)的相关文章

设计模式总结——程序员的武功秘籍(下)

设计模式总结--程序员的武功秘籍(上)介绍了设计模式产生的原因及其必要性. 那设计模式有什么具体内容呢?首先设计模式作为面向对象发展的产物,它需要面向对象基础,包括一些重要的概念啊.三大特性什么的.其次,根据面向对象思想,结合解决问题的实际情况衍生了五大原则.最后就是利用面向对象的基础和五大原则,总结出的GOF23. 用一张图来表示就是: 设计模式会贯穿面向对象开发过程,用好了能解决很复杂的问题,这是面向过程不能比拟的.用不好,不仅解决不好需求多变,还可能出现开发周期长,步骤多,代码过多等问题.

设计模式总结——程序猿的武功秘籍(上)

万年前,人类用肢体力量来扩展地盘.获取食物,那时候比的是发育.后来人们学会了使用工具.開始利用石头.棍棒. 再后来,人类有了文明,刀枪棍棒使得身体素养不是唯一决定强弱的唯一条件.再后来.一些聪明人依据人们的打斗习惯再增加哲学的思考,以攻守进退.运动疾徐.刚柔虚实为原则.发明了武术,即使一些身体素养不好的人.依据自己的情况学习对应的武术也能成为武术高手.这都要感谢发明武术秘籍的人,也要感谢社会的发展对武术人才的需求. 到如今,人类发明了火枪.即使一个残疾人也能把一个壮汉打死,这在曾经是不可想象的.

由内功心法到武功秘籍,重心会有所转变 - 能上能下,才是终极

由内功心法到武功秘籍,重心会有所转变 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 首先,庆祝本博粉丝超百 倒是有个小疑惑,我的粉丝 102 人,互相关注 101 人,而我的粉丝中如置顶转载说

设计模式总结——程序员的武功秘籍(上)

万年前,人类用肢体力量来扩展地盘.获取食物,那时候比的是发育.后来人们学会了使用工具,开始利用石头.棍棒.再后来,人类有了文明,刀枪棍棒使得身体素质不是唯一决定强弱的唯一条件.再后来,一些聪明人根据人们的打斗习惯再加入哲学的思考,以攻守进退.运动疾徐.刚柔虚实为原则,发明了武术,即使一些身体素质不好的人,根据自己的情况学习相应的武术也能成为武术高手.这都要感谢发明武术秘籍的人,也要感谢社会的发展对武术人才的需求.到现在,人类发明了火枪,即使一个残疾人也能把一个壮汉打死,这在以前是不可想象的. 几

设计模式总结——程序猿武功秘籍(下一个)

设计模式总结--籍(上)介绍了设计模式产生的原因及其必要性. 那设计模式有什么详细内容呢?首先设计模式作为面向对象发展的产物.它须要面向对象基础.包含一些重要的概念啊.三大特性什么的. 其次,依据面向对象思想,结合解决这个问题的实际情况衍生了五大原则. 最后就是利用面向对象的基础和五大原则,总结出的GOF23. 用一张图来表示就是: 设计模式会贯穿面向对象开发过程,用好了能解决非常复杂的问题,这是面向过程不能比拟的.用不好,不仅解决不好需求多变,还可能出现开发周期长.步骤多,代码过多等问题.相信

第一阶段:Java内功秘籍-线性表

前言 为什么要学习数据结构与算法,如果你学会了做安卓,javaweb,前端等,都是你的武功秘籍,但是如果你的内功不够好,再厉害的功夫也是白费. 数据结构和算法:什么是数据结构,什么是数据,在计算机内部数据为01010101...,数据是我们生活中一切的事务都可以表示为数据,如你和你朋友聊天的话都是数据,朋友圈的发表内容也是内容. 数据结构是数据之间相互存在的一种或多种特定的关系,数据之间的关系.数据结构的关系,要么一对一,或者一对多. er图,实体关联图.数据与数据之间的关系,分: 图形结构 树

.NET轻量级ORM组件Dapper葵花宝典

一.摘要 为什么取名叫<葵花宝典>? 从行走江湖的世界角度来讲您可以理解为一本"武功秘籍",站在我们IT编程的世界角度应该叫"开发宝典". 如果您在工作中主要接触的是操作MySQL数据库,但您又想学习和了解.NET轻量级ORM框架Dapper,那么就请跟着阿笨一起学习本次的分享课<.NET轻量级ORM框架Dapper葵花宝典>.Let's Go,Do It ,Dapper For MySQL! 废话不多说,直接上干货,我们不生产干货,我们只是

《疯狂程序员》有感

进入大学以来,几乎没有完整的看完过一本书.但是这本书不仅从头到尾的看完了,而且前后读了两遍.这本书就是<疯狂的程序员> 这正是<疯狂的程序员>的诞生之地--CSDN.所以也想借这个平台谈谈对该书的感受顺便分享一些『绝影』的经典语录. 读这本书的时候,总是给人一种身临其境的感觉,似乎自己就是那个「 疯狂的程序员」本人,这正是我能够坚持读下去的原因.也正是读了这本书,才真正的了解自己,了解程序员这个职业.并且决定矢志不渝的坚持做程序员,程序员是伟大的,他们把枯燥无味的代码变成丰富多彩的

零基础学习PHP心得

从开学到现在已经学习了半个月了,从一开始学习html,css,到现在的js,对一个初学者来说,难度在不断的增大,需要记忆的东西也越来越多.刚开始接触一个新的知识范畴,脑中还没有这样一个模式,会觉得无所适从,随后开始机械性的去记忆一些东西,但这样实在是事半功倍,不能很好的灵活运用. 初学者都有这样一个感受(包括我也是),上课时跟着老师的讲课思路基本都能听懂,但接下来自己动手写程序的时候会感到很困难,有时不知从哪开始下手. 学习js之后回过去看前面学习html和css的过程中遇到的困惑,解决起来并不