博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ - 3703 Happy Programming Contest
阅读量:6360 次
发布时间:2019-06-23

本文共 1359 字,大约阅读时间需要 4 分钟。

思路:

背包dp

为了使最后的罚时最少,先按做题所需时间排序

运算符重载方便背包转移。

代码:

#include
using namespace std;#define fi first#define se second#define LL long long#define pb push_back#define pii pair
#define mem(a, b) memset(a, b, sizeof(a))const int N = 1e3 + 10;pii t[55];struct node { int x, y, z; bool operator < (const node & t) const { if(x == t.x) { if(y == t.y) { if(z == t.z) { return true; } else return z > t.z; } else return y < t.y; } else return x < t.x; }}dp[N];int main() { int cs, T, n; scanf("%d", &cs); while(cs--) { scanf("%d%d", &T, &n); for (int i = 1; i <= n; i++) scanf("%d", &t[i].fi); for (int i = 1; i <= n; i++) scanf("%d", &t[i].se); sort(t+1, t+1+n); for (int j = 0; j <= T; j++) dp[j].x = dp[j].y = dp[j].z = 0; for (int i = 1; i <= n; i++) { for (int j = T; j >= t[i].fi; j--) { dp[j] = max(dp[j],node{dp[j-t[i].fi].x+t[i].se, dp[j-t[i].fi].y+1, dp[j-t[i].fi].z+j}); } } node ans = {
0, 0, 0}; for (int j = 0; j <= T; j++) { ans = max(ans, dp[j]); } printf("%d %d %d\n", ans.x, ans.y, ans.z); } return 0;}

 

转载于:https://www.cnblogs.com/widsom/p/9015119.html

你可能感兴趣的文章
thinkphp模板中使用自定义函数
查看>>
TP复习3
查看>>
(Delphi) Using the Disk Cache 使用磁盘缓存
查看>>
用Feature的方式删除SharePoint2010的Page中重复的WebPart
查看>>
递归算法学习系列之三(快速排序)
查看>>
从TdataSet生成OleVariant
查看>>
预告和目录: Wayne Game Solution 0.1 网络游戏大厅 从最基础开始
查看>>
xBIM WeXplorer xViewer的导航,相机、剖切、隐藏 等操作
查看>>
(转)预编译头文件
查看>>
艾伟_转载:浅析IHttpModule和IHttpHandler
查看>>
百万级访问量网站的技术准备工作
查看>>
Gnome Tweak Tool 3.0.5发布
查看>>
杭州鼎家被曝破产:长租公寓过度金融化酿恶果
查看>>
刘慈欣点赞科幻电影《流浪地球》:震撼心灵
查看>>
香港将发展中央儿童数据资料库 研究整合各部门数据
查看>>
安徽凤阳警方打掉一假证团伙 成员多为校长和老师
查看>>
2018年末个人住房贷款余额25.75万亿元 同比增17.8%
查看>>
“中国女梅西”王霜的24岁:不负过去,不惧未来
查看>>
云南会泽举办高山滑雪公开赛
查看>>
美国东部遭冬季风暴侵袭 全美近2000航班取消
查看>>