关注
03题的代码: #include <stdio.h>
#include <vector>
#include <algorithm>
#include <string.h>
#include <limits.h>
#include <string>
#include <iostream>
#include <queue>
#include <math.h>
#include <map>
#include <stack>
#include <set>
#include <list>
#include <forward_list>
#define left (now<<1)
#define right ((now<<1)+1)
#define mid ((l + r) >> 1)
#define midmid ((r + mid) >> 1)
#define LONG_LONG_MIN -9223372036854775808ll
#define LONG_LONG_MAX 9223372036854775807ll
using namespace std;
typedef long long int ll;
const int MAXN = 2e6 + 10;
const int MOD = 1e9 + 7;
ll dp[MAXN];
ll dl[30],cost[30];
int sum,n;
ll dfs(int now){
if(dp[now] != -1){ return dp[now];}
if(now == sum){
return dp[now] = 0;
}
dp[now] = LONG_LONG_MAX / 2;
ll nowday = 0;
for(int i = 0; i <= n - 1; ++i){
int p = 1 << i;
if((p & now) == 0){
nowday = nowday + cost[i + 1];
}
}
for(int i = 0; i <= n - 1; ++i){
int p = 1 << i;
if((p & now) == 0){
int st = p | now;
ll need = max(0ll,nowday - dl[i + 1]);
dp[now] = min(dp[now],dfs(st) + need);
}
}
return dp[now];
}
int main(){
while(scanf("%d",&n)!=EOF){
for(int i = 1; i <= n; ++i){
scanf("%lld%lld",&dl[i],&cost[i]);
}
memset(dp,-1,sizeof(dp)); sum = (1 << n) - 1;
dfs(0);
printf("%lld\n",dp[0]);
}
return 0;
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
124658次浏览 2088人参与
# 实习简历求拷打 #
17384次浏览 198人参与
# 作业帮求职进展汇总 #
84215次浏览 554人参与
# 秋招被挂春招仍然能投的公司 #
8020次浏览 109人参与
# 实习要如何选择和准备? #
128597次浏览 1486人参与
# 外包能不能当跳板? #
54350次浏览 256人参与
# 诺瓦星云求职进展汇总 #
233592次浏览 1736人参与
# mt对你说过最有启发的一句话 #
39474次浏览 454人参与
# 公司情报交流地 #
126762次浏览 1227人参与
# 为了找工作你花了哪些钱? #
74927次浏览 361人参与
# 你觉得机械有必要实习吗 #
69872次浏览 485人参与
# 投格力的你,拿到offer了吗? #
153606次浏览 822人参与
# 一起聊美团 #
307802次浏览 1767人参与
# 什么是优秀的实习经历 #
9555次浏览 227人参与
# 摸鱼被leader发现了怎么办 #
104361次浏览 660人参与
# 京东开奖 #
632178次浏览 3180人参与
# 秋招特别不鸣谢 #
16832次浏览 187人参与
# 考研失败就一定是坏事吗? #
202880次浏览 1392人参与
# 选实习,你更看重哪方面? #
15550次浏览 231人参与
# 安克创新求职进展汇总 #
62507次浏览 541人参与

美的集团公司福利 798人发布