UVa 10163 Storage Keepers

Excel灰屏原因与四步修复:GPU加速、加载项、系统组件深度解析 Excel灰屏并非文件损坏或软件崩溃,而是现代UI渲染引擎(基于Chromium Embedded Framework)在初始化阶段因底层依赖异常而主动降级的结果。其本质是图形渲染管线中断——当DirectX硬件加速不可用、WebView2加载项阻塞UI线程、Windows Media Foundation等系统组件缺失,或注册表文件关联错乱时,Excel为保障进程稳定性选择静默停绘界面。该问题在跨平台协作(如Markdown→Excel导出)、多插件办公环境及老旧显卡设备中高频出现,直接影响VBA宏执行、 阅读详情

题目链接:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1104


#include <cstdio>
#include <utility>
#include <cstring>
#include <algorithm>
using namespace std;

// s[i][j]代表从第i,i+1,...,m人中选,看管j个物品的最高safe line
int s[33][110];
// d[i][j]代表从第i,i+1,...,m人中选,看管j个物品,在最高safe line情况下的最少钱数
int d[33][110];


int n, m;

// array[i]代表第i个人的能力
int array[33];


int inf = (1<<30);

int get_max(int a, int b);
int get_min(int a, int b);

int safe_line;

int dollar;

int main()
{
	while(scanf("%d %d", &n, &m) == 2 && !(n == 0 && m == 0))
	{
		memset(s, -1, sizeof(s));
		memset(d, -1, sizeof(d));

		for(int i = 1; i <= m; i++)
		{
			scanf("%d", &array[i]);	
		}

		// 计算结果
		safe_line = get_max(1, n);
		if(safe_line == 0)
			dollar = 0;
		else
			dollar = get_min(1, n);
			
		printf("%d %d\n", safe_line, dollar);
	}	
	return 0;
}

// 计算s[a][b]代表从第a,a+1,...,m人中选,看管b个物品的最高safe line
int get_max(int a, int b)
{
	if(s[a][b] != -1)
		return s[a][b];

	// 如果不剩物品
	if(b == 0)
	{
		s[a][b] = inf;
		return s[a][b];
	}

	// 如果只剩一个人
	if(a == m)
	{
		s[a][b] = array[a] / b;
		return s[a][b];
	}			

	// 如果人数大于1且物品大于0

	// 不选第a个人
	int ans = get_max(a+1, b);

	// 选第a个人				
	// 尝试该人可以负责的物品情况
	for(int i = 1; i <= b && array[a] / i > 0; i++)
	{
		int k = array[a] / i;
		int r = get_max(a+1, b-i);
		int t_s = min(k, r);
		ans = max(ans, t_s);
	}	
	s[a][b] = ans;
	return s[a][b];			
} 


// 计算d[a][b]代表从第a,a+1,...,m人中选,看管b个物品的最高safe line下的最少钱数
int get_min(int a, int b)
{
	if(d[a][b] != -1)
		return d[a][b];

	// 如果不剩物品
        if(b == 0)
        {
                d[a][b] = 0;
                return d[a][b];
        }

        // 如果只剩一个人
        if(a == m)
        {
		if(array[a] / b >= safe_line)
                	d[a][b] = array[a];
		else
			d[a][b] = inf;
                return d[a][b];
        }

	// 如果人数大于1且物品大于0

        // 不选第a个人
        int ans = get_min(a+1, b);

        // 选第a个人                            
        // 尝试该人可以负责的物品情况
        for(int i = 1; i <= b && array[a] / i >= safe_line; i++)
        {
                int k = array[a] / i;
                int r = get_min(a+1, b-i);
  		if(r != inf)
		{
			r = r + array[a];
                	ans = min(ans, r);
        	}
	}
        d[a][b] = ans;
        return d[a][b];	
}



这道题一开始的想法是用状态d(i, j)代表从第i, ..., m个人中,负责j个物品的最高safe line和最少钱数。以为在计算最高safe line同时得到最少钱数即可。

后来发现错了,

考虑下面例子:

3 3
2 3 4

得到的将诶过为2, 7. 实际上应得结果为2,6. 原因在于d(i, j)的计算仅仅依赖于d(i+1, k). 但是有可能最小safe line在第i个人出现,那么只要d(i+1, k)的safe line不小于这个最小值时,

取钱数最小即可,并非需要safe line取最大值。

因此得到最大safe line后,需要另外一次动态规划求解最少钱数。

以后做题当求两个量时,需要想清楚其中的依赖关系。

【DP 训练】Storage Keepers, UVa10163 #include using namespace std; #define maxn 110 #define INF 0x3f3f3f3f int n,m;int p[40]; int f[40][maxn],g[40][maxn]; //status:考虑到第i个人,分配了j个仓库的解 int main() { while(scanf("%d%d",&n,&m)==2&&(n||m)) { 阅读详情

相关推荐

PredFormer实战:用Transformer搞定交通流量预测(附TaxiBJ数据集代码)

本文详细介绍了如何利用PredFormer这一基于Transformer的先进模型进行交通流量预测,特别针对TaxiBJ数据集提供了完整的实战代码和优化策略。PredFormer通过门控Transformer块(GTB)的创新设计,在时空预测任务中展现出显著优势,相比传统方法将MSE降低33.1%,推理速度提升4.4倍。文章还涵盖了模型轻量化、部署优化等实用技巧,为智慧城市建设中的交通预测提供了高效解决方案。

weixin_29194817的博客 445

uva 10163 Storage Keepers (DP)

uva 10163 Storage Keepers有N个仓库,M个管理员,M个管理员每个人的工资都不一样,工资与他们的能力值(P)相同。一个管理员可以看管多个(n)仓库,但是仓库的安全值就会变为P / n。现在要是的最小的安全值最大,并且还要求出该状况下的最小花费。两次DP,第一次dp求出最大的最小安全值ans,第二次dp根据第一次dp求出的ans求出最小的花费。#include <cstdio>

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 722

应用软件——Altium Designer 19 Gerber/坐标文件

如何输出Gerber文件 步骤如下: 打开需要输出的PCB文件 2. 设置原点坐标 3. 打开Gerber Files 选项,File–>Fabrication Opuputs–>Gerber Files。 4. General参数设置。 用于指定输出Gerber文件中使用的单位(Units)和格式(Format)。单位可以是公制(Millimeters)和英制(Inches);格式栏中2:3,2:4,2:5代表文件中使用的不同数据精度,其中2:3表示数据含2位整数3位小数;相应的,另外两个分

染血黑兔的博客 7203

【UVa】【二分】【DP】10163 Storage Keepers

UVa 10163 Storage Keepers 题目 ◇题目传送门◆(由于UVa太慢,这里提供一个vjudge的链接) ◇题目传送门(vjudge)◆ 题目大意 有NNN个相同的仓库需要一些看守。现有MMM个管理员来应聘,第iii个人的能力值为pipip_i,所需工资也是pipip_i。若将第iii个人派去看守kkk个仓库,则每个仓库的安全系数为⌊pik⌋⌊pi...

IDDFS 214

DIY天文摄影:如何用NMP溶剂安全去除佳能CMOS传感器的拜耳滤镜(附详细步骤)

本文为天文摄影爱好者提供了一份详尽的DIY指南,介绍如何使用NMP溶剂安全去除佳能CMOS传感器的拜耳滤镜,将其改造为高灵敏度单色相机。文章深入剖析了NMP溶剂的作用原理与关键风险,并系统性地拆解了从材料准备、分步操作到后期验证的完整实践流程,旨在帮助具备动手能力的爱好者实现深空天体摄影的进阶目标。

w3x4y的博客 308

深入NAND Flash信号与接口:结合ONFI 5.0协议,聊聊DBI、ODT和差分信号到底在解决什么实际问题

本文深入探讨了NAND Flash信号与接口设计,结合ONFI 5.0协议,详细解析了DBI、ODT和差分信号等技术如何解决高速数据传输中的信号完整性问题。通过实际案例和数据,展示了这些技术在降低功耗、减少噪声和提升抗干扰能力方面的显著效果,为存储工程师提供了宝贵的实践参考。

weixin_33736649的博客 343

UVA 10163 Storage Keepers(两次DP)

UVA 10163 Storage Keepers(两次DP) http://uva.onlinejudge.org/index.php? option=com_onlinejudge&Itemid=8&page=show_problem&problem=1104 题意: 有n个仓库(最多100个),m个管理员(最多...

weixin_34166472的博客 122

保姆级教程:用Python+MM-Agent搭建自己的数学建模AI助手(支持GPT-4o/DeepSeek)

本文提供了一份详细的教程,教你如何使用Python和MM-Agent框架搭建数学建模AI助手,支持GPT-4o和DeepSeek-R1等LLM后端。从环境配置、HMML知识库集成到多LLM适配和建模流程实现,手把手教你构建智能建模系统,提升数学建模效率。

k6l7m8n9的博客 452

DP(两次) UVA 10163 Storage Keepers

题目传送门 1 /* 2 题意:(我懒得写,照搬网上的)有n个仓库,m个人看管。一个仓库只能由一个人来看管,一个人可以看管多个仓库。 3 每个人有一个能力值pi,如果他看管k个仓库,那么所看管的每个仓库的安全值为 pi/k(向下取整) 4 如果某个仓库没有人看管,那么它的安全值为0。所有仓库的安全值L = min{ 每个仓库...

weixin_30662011的博客 118

PC 端微信页面拆分及 JavaFx 使用

一、前言 对于一个知识点的学习过程来说,往往使用自己熟悉的工具或方式才更易于上手。因为所有同类型的知识点在抛出复杂的流程拨云见日后,所能得到的几乎都是同样的设计思想和实现理论。 在 Java 语言桌面版开发中,直至目前共提供了三套 UI 开发方式;Awt、Swing、JavaFx,以及一些扩展组件 SWT 等。在这三套 UI 组件中,JavaFx 是最新也是最为好用的,因为他提供了丰富的功能,以及...

bugstack虫洞栈 3609

[Dify实战] 做企业内部助手时,最容易被低估的不是提示词,而是权限、状态同步和反馈回写

这篇文章围绕“做企业内部助手时”这个具体问题展开,很多团队做企业内部助手时,最先优化的是提示词,但真正决定系统能不能上线长期跑下去的,往往是权限边界、状态同步和反馈回写闭环。正文会结合Dify拆解节点设计、配置建议和测试样例,补充关键步骤、检查点和常见坑,帮助读者判断第一版该怎么落地,并把经验复用到自己的真实业务场景中。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 68

uva 10163——Storage Keepers

题意:给定n个相同的仓库,有m个人轮流值守,第i个人的应聘者的能力为pi,如果应聘者看守k个仓库,则仓库安全指数为pi/k的整数部分,求使得所有最小安全系数最大且工人pi最小的设计。 思路:二分+01背包。01背包找到x安全系数下是否能守住n个仓库,不断的二分k,找出最小安全系数最大的值,01背包维护最小的工资。 code: #include using namespace

坚持不懈 666

华为OD机试双机位C卷-组装新的数组(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【组装新的数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 组装新的数组。

qq_45776114的博客 1145

【Uva 10163】Storage Keepers

【Link】: 【Description】 你有n(n≤100)个相同的仓库。有m(m≤30)个人应聘守卫,第i个应聘者的能力值 为Pi(1≤Pi≤1000)。每个仓库只能有一个守卫,但一个守卫可以看守多个仓库。如果应聘 者i看守k个仓库,则每个仓库的安全系数为Pi/K的整数部分。没人看守的仓库安全系数为0。 你的任务是招聘一些守卫,使得所有仓库的最小安全系数...

AWCXV 142

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

UVA 10163 Storage Keepers

背包DP 题意: 有n个仓库需看管,现在有m个人应聘,每个人有一个价值p[i],雇佣这个人需要花费p[i],问最大的保险值是多少,以及保证最大保险值时的最小花费。 一个仓库保险值就是看管每个仓库的人的价值,但是管理员可以同时看管多个仓库,这时对应仓库的保险值为p[i]/x,x为该管理员同时看管的仓库数。 总的保险值为所有仓库保险值的最小值。一个仓库只能有一个看管者。 如果不能保证保险值大于

= = 966

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

UVA - 10163 Storage Keepers

题目大意:给出m为仓库的数量, 给出n为有守夜人的数量, 然后给出n个数值,为对应守夜人应付的酬劳,每个守夜人的能力与他需要的酬劳是相等的,并且守夜人可以同时负责多个仓库的安全,不过这样子安全值就变为val[i]/k(val[i]表示第i个守夜人的能力值,k表示他负责的仓库数量, /为取整),先在要的出方案,使得所有仓库中安全值最低的那个仓库的安全值越高, 并且要使得酬劳越低。 解题思路

Bingo 1646

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

uva 10163 Storage Keepers

题意:有N个仓库,让M个人守,使每个仓库安全值尽量高的同时,花费最小。 思路:如果两个一起更新的话,当安全值相等,更细花费,或者安全值更大,一起更新,这样会导致问题就是,因为题目安全值是所有值中的最小值,有可能前面其实取更下花费的人就能达到最小值,但是你前面已经更新成了较大的。 所以应该分两步,第一步,先求出能够使仓库达到的最大值,第二步,求出使每个仓库达到这个值的最小花费。 第一个状态表示

catfish的专栏 412

uva 10163 - Storage Keepers(01背包)

题目链接:10163 - Storage Keepers 题目大意:给出m为仓库的数量, 给出n为有守夜人的数量, 然后给出n个数值,为对应守夜人应付的酬劳,每个守夜人的能力与他需要的酬劳是相等的,并且守夜人可以同时负责多个仓库的安全,不过这样子安全值就变为val[i]/k(val[i]表示第i个守夜人的能力值,k表示他负责的仓库数量, /为取整),先在要的出方案,使得所有仓库中安全值最

不慌不忙、不急不躁 2560

UVA - 10163 Storage Keepers 多重背包

问题 仓库守卫,一共有N个仓库,有M人应聘首位,每个仓库最多一个守卫,一个守卫可以看管多个仓库,守卫i的能力值是PiP_iPi​,薪资等于能力值,仓库的安全系数L等于Pi/KP_i/KPi​/K的整数部分,KKK是守卫iii看守的仓库数量 求最小安全系数的最大值,和此前提下的最小能力值总和 分析 和多重背包思路有点相似 分开计算,首先求最大最小安全系数 L,再求最小的能力值总和Y L(i,j)代表...

zpf1998的博客 243

Storage Keepers UVA - 10163

动态规划一共需要做两次,第一次是计算出所有最小安全系数的最大值,然后再计算出在此前提下能力值总和的最小值。在第一次中dp[i][j]表示i个人看守j个仓库最小的安全系数。那么在加入第i个人的时候,就分配j个仓库中的某一部分让第i个人看守,同时计算并且保存在这种情况下power[i]/(j-k)以及dp[i-1][k]两者的最小值,枚举所有的情况,保存所有的这种情况的最大值,最终得出的dp[M][N

zju2016的博客 276

uva10163 Storage Keepers

习题9-9 注意前提是最小值最大。很少做两次dp的题。 初始化要细心。 #include<iostream> #include<cmath> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; ...

dengdouweng1282的博客 147

UVA 10163 - Storage Keepers

动态规划

Muti-Agent 2632

uva 10163 Storage Keepers (dp)

Background    Randy Company has N (1 1.       Each keeper has a number Pi (1 2.       All storages are the same as each other. 3.       A storage can only be lookd after by one keeper. But a keepe

勿忘初衷 867
上一篇: UVa 1632 Alibaba
下一篇: UVa 12589 Learning Vector
c21c21
博客等级 码龄12年 0粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值