#贪心,动态规划#洛谷 2577 BZOJ 1899 午餐

news/2024/12/22 13:36:21/

题目


分析

首先吃饭越长应该越先开始打饭
安排好顺序后
d p [ i ] [ j ] dp[i][j] dp[i][j]表示前 i i i个人,在1号窗口打饭总时间j,最早吃完饭的时间
那么 d p [ i ] [ j + a [ i ] . x ] = min ⁡ { d p [ i ] [ j + a [ i ] . x ] , m a x ( d p [ i − 1 ] [ j ] , a [ i ] . y + j + a [ i ] . x ) } dp[i][j+a[i].x]=\min\{dp[i][j+a[i].x],max(dp[i-1][j],a[i].y+j+a[i].x)\} dp[i][j+a[i].x]=min{dp[i][j+a[i].x],max(dp[i1][j],a[i].y+j+a[i].x)}
用滚动数组滚掉第一维


代码

#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm> 
#define rr register
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
struct rec{int x,y;}a[201];
int n,dp[40101];
inline signed iut(){rr int ans=0; rr char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();return ans;
}
bool cmp(rec a,rec b){return a.y>b.y;}
signed main(){n=iut(); memset(dp,42,sizeof(dp)); dp[0]=0;for (rr int i=1;i<=n;++i) a[i]=(rec){iut(),iut()};sort(a+1,a+1+n,cmp); rr int sum=0,ans=2147483647;for (rr int i=1;i<=n;++i){for (rr int j=sum;~j;--j){dp[j+a[i].x]=min(dp[j+a[i].x],max(dp[j],a[i].y+j+a[i].x));dp[j]=max(dp[j],a[i].y+a[i].x+sum-j);}sum+=a[i].x;}for (rr int i=1;i<=sum;++i) ans=ans<dp[i]?ans:dp[i];return !printf("%d",ans); 
}

http://www.ppmy.cn/news/772478.html

相关文章

1899 用迭代法求平方根

题目描述 用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数 输入 X 输出 X的平方根 样例输入 4 样例输出 2.000 #include<bits/stdc++.h> using namespace std; int main() {double…

网站数据用户行为分析 ---- A/B测试

分析A/B测试结果 目录 简介I - 概率II - A/B 测试III - 回归 简介 为了得出电子商务网站运行的 A/B 测试的结果,帮助公司弄清楚是否应该使用新的页面&#xff0c;保留旧的页面&#xff0c;或者应该将测试时间延长&#xff0c;之后再做出决定。 I - 概率 import pandas as p…

bzoj1899 zjoi 午餐

http://www.elijahqi.win/archives/543 描述 上午的训练结束了&#xff0c;THU ACM小组集体去吃午餐&#xff0c;他们一行N人来到了著名的十食堂。这里有两个打饭的窗口&#xff0c;每个窗口同一时刻只能给一个人打饭。由于每个人的口味&#xff08;以及胃口&#xff09;不同…

1899最大和难题

1899: 985的最大和难题 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 329 Solved: 41 Submit Status Web Board Description 985有2 * n - 1个整数&#xff0c;他每次可以将其中n个数变号&#xff0c;操作次数不限&#xff0c;问他可以得到的最大和。 Input 第一行输入…

A. Division?

time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Codeforces separates its users into 44 divisions by their rating: For Division 1: 1900≤rating1900≤ratingFor Division 2: 1600≤rating≤18…

bzoj 1899 贪心+dp

思路&#xff1a;这个贪心排顺序我居然没看出来。 吃饭时间长的在前面&#xff0c; 用反证法很容易得出。 剩下的就是瞎dp啦。 #include<bits/stdc.h> #define LL long long #define fi first #define se second #define mk make_pair #define PII pair<int, int> …

FJUT ACM 1899 Largest Rectangle in a Histogram

#include<bits/stdc.h> using namespace std; typedef long long ll; /** 【思路】&#xff1a;其实一开始维护一个单调的栈&#xff0c; 这个栈存储序号&#xff0c;然后判断是不是可以填入&#xff0c; 如果可以填进去&#xff0c;就是维护一个单调递增的栈 如果输入一…

深入理解Gin框架中Trie树的实现原理

本文将详细介绍Gin框架中Trie树的实现原理&#xff0c;并提供简单的代码示例帮助读者更好地理解。我们将从基本概念开始&#xff0c;逐步构建类似Gin框架中的Trie树&#xff0c;并演示如何使用该Trie树进行路由匹配。通过本文的阅读&#xff0c;读者将能够深入理解Gin框架中Tri…