Happy Programming Contest(ZOJ3703)(01背包+路径储存)
Happy Programming Contest ZOJ3703
老实说:题目意思没看懂。。。(希望路过的大神指点)
最后那个the total penalty time是什么意思啊!!!
还是学到点东西的。。。
解题的关键在于:要控制最后所用的时间最少,所以在程序的最开始应该先将输入的各种题目 以时间升序排列, 然后就可以保证每次都以时间小的优先选, 这样就可以保证最后相同的吸引值和解题数的情况下所花的时间最少。
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
struct Point
{
int t,v;
}p[];
bool cmp(Point left,Point right)
{
return left.t<right.t;
}
int dp[],pen[],pro[];
int main ()
{
int test;scanf("%d",&test);
while(test--)
{
int len,n;
scanf("%d%d",&len,&n);
memset(dp,,sizeof(dp));
memset(pro,,sizeof(pro));
memset(pen,,sizeof(pen));
for(int i=;i<=n;++i)
scanf("%d",&p[i].t);
for(int i=;i<=n;++i)
scanf("%d",&p[i].v);
int ans_val=,ans_p=,penalty=;
sort(p+,p++n,cmp);
for(int i=;i<=n;++i)
{
for(int j=len;j>=p[i].t;--j)
{
bool flag=false;
if(dp[j-p[i].t]+p[i].v>dp[j])
flag=true;
else if(dp[j-p[i].t]+p[i].v==dp[j] && pro[j-p[i].t]+>pro[j])
flag=true;
else if(dp[j-p[i].t]+p[i].v==dp[j] && pro[j-p[i].t]+==pro[j] && pen[j-p[i].t]+j<pen[j])
flag=true;
if(flag)
{
dp[j]=dp[j-p[i].t]+p[i].v;
pro[j]=pro[j-p[i].t]+;
pen[j]=pen[j-p[i].t]+j; }
}
}
for(int j=;j<=len;++j)
{
bool flag=false;
if(ans_val<dp[j])
flag=true;
else if(ans_val==dp[j] && ans_p<pro[j])
flag=true;
else if(ans_val==dp[j] && ans_p<pro[j] && penalty>pen[j])
flag=true;
if(flag)
{
ans_val=dp[j];
ans_p=pro[j];
penalty=pen[j];
}
}
printf("%d %d %d\n",ans_val,ans_p,penalty);
}
return ;
}
Happy Programming Contest(ZOJ3703)(01背包+路径储存)的更多相关文章
- ZOJ 3703 Happy Programming Contest(0-1背包)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3703 Happy Programming Contest Time Lim ...
- Gym 101102A Coins -- 2016 ACM Amman Collegiate Programming Contest(01背包变形)
A - Coins Time Limit:3000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Descript ...
- UVA 624 ---CD 01背包路径输出
DescriptionCD You have a long drive by car ahead. You have a tape recorder, but unfortunately your b ...
- Coderfroces 864 E. Fire(01背包+路径标记)
E. Fire http://codeforces.com/problemset/problem/864/E Polycarp is in really serious trouble — his h ...
- UVA--624 CD(01背包+路径输出)
题目http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- HDOJ 5188 zhx and contest 贪婪+01背包
zhx and contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- UVA 624 CD【01背包+路径记录】
You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music is o ...
- uva624 CD (01背包+路径的输出)
CD Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice UVA 624 ...
- HDU 6083 度度熊的午饭时光(01背包+记录路径)
http://acm.hdu.edu.cn/showproblem.php?pid=6083 题意: 思路: 01背包+路径记录. 题目有点坑,我一开始逆序枚举菜品,然后一直WA,可能这样的话路径记录 ...
随机推荐
- 关于Intent的七大重要属性
在Android 中,Intent用来封装两个Activity之间的调用意图,实现两个Activity之间的跳转,并传递信息. Intent的七大重要属性:ComponentName Action ...
- 快捷键的记录,Word和PPT的一些常用操作
1)PPT背景设置:右键->背景->背景填充下的下拉箭头->填充效果->图片- >选择图片->确定->选择应用或应用全部 2)Word,PPT求和符号怎么打 ...
- 关于oracle 10g creating datafile with zero offset for aix
参考文档: 1.创建oracle数据文件时需要注意的地方(OS Header Block) http://www.aixchina.net/Question/20406 2.oracle 创建数据文件 ...
- MySQL-Front 建表引发的一点小思考(数据表格模版)
我们建表的时候,有一些字段总是会常用到的.也就是每一张表都会有这些字段. 我用mysql有一点时间了,今天(2016-02-27 21:53:38)在用mysql-front建表的时候,感觉有点点不太 ...
- php单独编译扩展模块
以pdo_mysql为例: 1.下载 文件 或者 进入 在PHP源码包中进入ext/pdo_mysql http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 2.解压 ...
- command line
command line terminal vim 编辑工具 vim 编辑命令 j 光标上移 k 光标下移 l 光标左移 h 光标右移 x / dd 删除一行 v 多行模式 :w 保存 :q 不保存退 ...
- vmware安装linux6.3
安装信息: 1.vmware9.0下载地址:http://pan.baidu.com/share/link?shareid=1287299796&uk=2585121485 2.oraclel ...
- net软件自动生成开发编程框架编程机器人
有一个.net自动生成平台(编程机器人)推荐给大家,常规几天十几天的工作,机器人几分钟搞定,不写一行代码,留下大把休闲时光,适应于聪明人:不想太累的程序员(看看风景泡泡妞),不想多请人的老板(有限资金 ...
- C# 反转字符串方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 反转字符 ...
- 《第一本docker书》- 第一章笔记
环境: Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-30-generic i686) 第一章: 1 Docker客户端和服务器 2 Docker镜像 添加一个文件,执行一 ...