- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
下面这个问题是从 Topcoder 的 SRM 149 中提取的。即使在看了解决方案之后,我也不知道如何做这个问题。我已经尝试这个问题一个半小时了,然后又花了一个小时来解决这个问题,但我就是无法理解它到底在做什么....
如果有人可以就此解决方案的工作原理向我提供一些提示,我将不胜感激。
问题:http://topcoder.bgcoder.com/print.php?id=250
解决方案:http://apps.topcoder.com/forums//?module=Thread&threadID=575120&start=0
SRM 149(Division II 三级)中使用的 TopCoder 问题“定价”
问题陈述最简单形式的市场差异化是一种针对同一产品向不同客户收取不同价格的系统。为了最大化总销售收入,我们希望单独向每个客户收费,收取该客户愿意支付的最高价格。通常我们要把顾客分成几组,对一组中的每个人收取相同的价格(例如商务舱、经济舱等)。我们有一份 list ,上面列出了我们产品的所有潜在客户以及每个客户愿意支付的最高金额。我们决定将它们分成四个或更少(不重叠)的组。每个组中的每个人都将获得相同的价格。我们的目标是选择最优的组和价格,以最大化我们的总销售收入。
创建一个包含方法 maxSales 的 Pricing 类,该方法采用包含每个潜在客户愿意支付的最高价格的 int[] 价格,并返回我们通过将客户分为四个或更少的组可以产生的最大销售收入.
定义
类:定价方法:maxSales参数:int[]返回值:整数方法签名:int maxSales(int[] price)(确保你的方法是公开的)
约束
例子
0)
{9,1,5,5,5,5,4,8,80}返回:120向愿意支付 80 的客户收取 80。向愿意支付 8 或 9 的 2 个客户收取 8。向愿意支付 5 的 4 个客户收取 5。向愿意支付 4 的客户收取 4。总销售收入=1*80+2*8+4*5+1*4。 (我们可以将愿意支付 1 的客户放入这些组中的任何一个,因为他不会以这些价格购买任何东西。)1)
{17,50,2}返回:69我们只使用三个组,每个组包含一个客户。我们向每位顾客收取她愿意支付的最高费用。总销售收入=1*17+1*50+1*22)
{130,110,90,13,6,5,4,3,0}返回:346向愿意支付 4 到 13 的 4 位顾客中的每人收取 4 的价格,从而从他们那里总共得到 16。然后向愿意多付钱的三个客户中的每一个收取最多的费用。 4*4 + 90 + 110 + 130 = 346
SOLUTION:
Arrays.sort(price);
int ret = 0;
for(int i = 0; i<price.length; i++){
for(int j = i; j<price.length; j++){
for(int k = j; k<price.length; k++){
for(int m = k; m<price.length; m++){
int rev = 0;
for(int n = 0; n<price.length; n++){
if(price[n]>=price[m]){
rev+=price[m];
}else if(price[n]>=price[k]){
rev+=price[k];
}else if(price[n]>=price[j]){
rev+=price[j];
}else if(price[n]>=price[i]){
rev+=price[i];
}
}
ret=Math.max(ret,rev);
}
}
}
}
return ret;
最佳答案
这是蛮力。
每组 {i,j,k,m} 是四组的价格选择。 n
循环计算该选择的 yield ,ret
跟踪最大 yield 。
(这个解是O(N5)。我认为O(N)是可能的。)
关于c++ - Topcoder SRM 149 D2 Q3 : Pricing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35331614/
如果您熟悉 TopCoder,您就会知道您的源代码会获得最终的“成绩/分数”,这取决于时间、编译次数等,其中权重最高的一项是性能。但是他们如何测试,是否有某种简单的代码(java 或 c++)可以做到
我不知道如何使用顶级编码器的离线可视化工具。这是我第一次尝试进行 topcoder 挑战。割草机挑战: https://community.topcoder.com/longcontest/?modu
这段代码在 Topcoder 上给出了一个编译错误。在 code::blocks 上,它编译时有 0 个错误和 0 个警告,打印了 vector ,但它以非零值退出,这导致窗口显示“Interesti
我一直在努力解决the following TopCoder problem : You are playing a strategy game and you wish to train the s
我正在尝试理解问题 DivFreed2在 TopCoder 上: 它具体规定了数组 数组的长度为n。 每个元素都是 1 到 k 之间的整数,包括 1 和 k。 只要 A 和 B 是数组的两个连续元素(
这是一道来自 Topcoder SRM 566 Div2 的算法题。 问题可以查看here . 对于那些没有 topcoder 帐户的人,问题描述如下: Penguin Pals 是一项配对服务,使用
我正在尝试解决这个顶级编码器问题。看了解法分析还是看不懂。 解决方案的基本思路是逆向思考,插入元素而不是删除。但这如何降低问题的复杂性? 我明白这是一个动态规划问题。我在维基百科上读到,DP问题避免重
我正在尝试为 TopCoder 中的一个问题提交解决方案,这需要提交遵循其预定义的类和方法。由于我是 TopCoder 的新手,我主要是在尝试适应编码界面。这段代码在我的电脑上编译完美。不幸的是,在
下面的代码是一个流行的 topcoder 问题的答案 FourBlocks (您需要登录)。该解决方案使用位掩码内存来使用大小为 1 的 block 和大小为 4 的正方形 block 来查找网格中的
这是在 TopCoder 竞赛中使用的问题。我了解大部分解决方案,它本质上是在任何时间点跟踪特定节点的最佳解决方案,并且在到达目标节点后可以输出最佳解决方案。但是,该解决方案使用 BFS,我很困惑,因
自 HOURS 以来,我一直在努力思考这个 TopCoder 问题,但无法找到一个完美的解决方案,并找到了下面给出的一个使用得非常漂亮的解决方案! 我想弄清楚这个解决方案如何适用于给定的问题?而我当初
我最近加入了 TopCoder,过去几天一直在练习室练习。我遇到了这个我似乎无法解决的问题。任何帮助将不胜感激。 问题 The product value of a string is the pro
在TopCoder或ACM ICPC的比赛中编写中高难度程序的优秀程序员,在提交前必须确保算法的正确性。 虽然他们提供了一些示例测试用例来确保正确的输出,但是它如何保证程序会正确运行?他们可以自己写一
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我是TopCoder的新手,想登录TopCoder Arena时很迷茫。 我已经注册并选择了我想参加 TopCoder 比赛,然后当我打开从网站下载的 jnlp 文件时。它显示了当前的登录页面。但是,
我想构建一个可下载的桌面软件,向用户显示带有示例问题的 GUI。 然后用户继续编写解决方案并将其粘贴到空白屏幕。 程序对其进行评估并给用户打分。用户进入下一级别。 我的问题是,这些网站如何评估程序的正
我想实现一个测试用例,它将运行特定的 java 类,然后向它提供输入并从中获取输出。 所以,这里有三个问题: 1) 我们如何从 junit 运行另一个 java 类?我们需要运行命令行来执行此操作吗?
我的以下代码适用于其他 https 站点,但不适用于 TopCoder。输出文件如下: Can't connect to community.topcoder.com:443 LWP::Protoco
我一直卡在问题grafixMask现在一天。这是我按照 DFS 教程中的伪代码编写的代码。我认为我的代码不遵守决定包含哪个网格的条件,导致错误的答案,但我不知道如何解决它。 #include
我正在尝试解决 JanuszInTheCasino problem其中一个测试用例 (test_one) 失败。我无法弄清楚问题所在。有什么想法吗? 代码如下: import java.util.Ma
我是一名优秀的程序员,十分优秀!