怎样去思考问题 解决问题 zkc学长的福利
题目描述
又是一年ACM集训的时刻,zkc学长邀请n位同学来玩一个有奖游戏。首先,他让每个同学在左、右手上面分别写下一个整数,zkc学长自己也在左、右手上各写一个整数。然后,让这n位同学排成一排,zkc学长站在队伍的最前面。排好队后,所有的同学都会获得zkc学长分发的若干肉松饼,每位同学获得的肉松饼数分别是:排在该同学前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。 zkc学长不希望某一个同学获得特别多的福利,所以他想请你帮他重新安排一下队伍的顺序,使得获得福利最多的同学,所获福利尽可能的少。注意,zkc学长的位置始终在队伍的最前面。 【数据范围】 对于100%的数据,有1 ≤ n ≤,, < a、b < 输入
第一行一个n表示n个同学 第二行两个数字代表zkc学长左手和右手的数字 接下来的n行分别代表第n个同学左手和右手的数字 输出
一个数字代表获得福利最多同学所获得福利 样例输入 样例输出 提示 按1、、3号同学这样排列队伍,获得福利最多的同学所获得肉松饼数为2; 按1、、2这样排列队伍,获得福利最多的同学所获得肉松饼数为2; 按2、、3这样排列队伍,获得福利最多的同学所获得肉松饼数为2; 按2、、1这样排列队伍,获得福利最多的同学所获得肉松饼数为9; 按3、、2这样排列队伍,获得福利最多的同学所获得肉松饼数为2; 按3、、1这样排列队伍,获得福利最多的同学所获得肉松饼数为9。 因此,福利最多的同学最少获得2个肉松饼,答案输出2。
最重要的话就是 排在前面同学 左手上数字的成绩除以这个同学的右手数字 就是这个同学应有的饼干数 .
现在 如果A在B的前面 那么A 所获得的饼的数量 t/r.a B得到的饼的数量就是 t*la/rb
现在 如果B在A的前面 那么B 所获得的饼的数量 t/r.b A得到的饼的数量就是 t*lb/ra
假设 A必须在B的前面 那么 一定可以推导出来一个包含 四个变量的 表达式 用于排序
现在关键的就是 为什么 A必须排在B的前面 最外层的原因就是 为了得到 饼干数量最多的人 得到的饼干尽量的少
所以该问题可以简化为 前面的所有同学的左手只是一只A手 那只A手上面的数字是B前面所有同学的左手乘积 于是 现在就简化为了两个人的问题. 同样的一个人 是 排在前面的到 饼的数量多还是 排在后面得到的饼的数量多呢 . 很明显是排在 后面的 多 所以 为什么 A排在 B的前面 因为 t*la/rb<t*lb/ra (这样 最大的数量就尽量的小了 )
#include<stdio.h>
#include<algorithm>
using namespace std;
struct S
{
int r,l;
};
bool cmp(S a,S b)
{
return a.l*a.r<b.l*b.r;
}
int main()
{
S a[];
int i,j,m,n,t;
double maxn;
while(scanf("%d",&n)!=EOF)
{
maxn=;
for(i=;i<=n;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
}
sort(a+,a+n+,cmp);
for(i=;i<n;i++)
{
maxn*=a[i].l;
}
j=a[n].r;
maxn=maxn/j;
j=maxn;
if(j>maxn)
maxn=j-;
else
maxn=j;
printf("%.0lf\n",maxn);
}
return ;
}
好像数据变大了,我的方法过不掉了, 请等一下我修正后的代码。
怎样去思考问题 解决问题 zkc学长的福利的更多相关文章
- 14. Scala使用递归的方式去思考,去编程
14.1 基本介绍 -Scala饰运行在Java虚拟机(Java Virtual Machine)之上,因此具有如下特点 1) 轻松实现和丰富的Java类库互联互通 2) 它既支持面向对象的编程方式, ...
- 下篇:技术 Leader 的思考方式
作者: 朱春茂(知明) 技术 Leader 是一个对综合素质要求非常高的岗位,不仅要有解具体技术问题的架构能力,还要具备团队管理的能力,更需要引领方向带领团队/平台穿越迷茫进阶到下一个境界的能力.所以 ...
- 开博近一年的感想 by 程序员小白
/* 好吧,这里的写博客应该理解为更宏观的写文章. */ 在去年的这个时候,我所知道的平台只有 CSDN 和博客园..然而 CSDN 的广告实在是不想吐槽了,选择博客园是一件非常自然的事情.要说开 ...
- 为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二)[转]
前段时间,写了一个开发.实施.服务费用计算三部曲. 水清则无鱼--走出软件作坊:三五个人十来条枪 如何成为开发正规军(八) 实施费用也能DIY--走出软件作坊:三五个人十来条枪 如何成为开发正规军(九 ...
- windows类书的学习心得(转载)
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- Javascript的AMD规范
Javascript发展到今天,已经从一个小丑语言变成了不可替代的前端利器,已经脱离了低端的玩笑脚步,而转变为有规可依的强大语言. 本文主要讲述下如今被大力推广的AMD规范,为什么要AMD,什么场景是 ...
- 在WebForm中实现购物车思路
关于网站购物车的实现的思考 写在前面的话:刚来公司的的时候,老大安排了一个任务,企业站,但是需要实现购物车的功能,以前没做过,所有就向周围的人请教了一下如何实现购物车,自己也在网上搜了一下,有了些 ...
- javaScript 的AMD
转载:http://www.cnblogs.com/happyPawpaw/archive/2012/05/31/2528864.html#undefined 1. AMD的由来 前端技术虽然在不断发 ...
- windows类书的学习心得
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
随机推荐
- POJ-3041 Asteroids,二分匹配解决棋盘问题。
Asteroids Time Limit: 1000MS Memory Limit: 65536K Description Bessie wants to navigate her s ...
- 守卫者的挑战(codevs 1997)
题目描述 Description 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜寻着关押applepi的监狱的所在地.突然,眼前一道亮光闪过.“我,Nizem,是黑魔法圣殿的守卫者.如 ...
- 通过setContentView设置activity的不同样式
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle saved ...
- 牛客网 中南林业科技大学第十一届程序设计大赛J题 二分+线段树
https://www.nowcoder.com/acm/contest/124#question 题意 找第一个不小于K的数的下标,然后对它前一个数加一 解析 我们可以维护一个最大值数组 1 ...
- SOJ 3531_Number Pyramids
[题意]给定一个数top及最底层元素个数n,构成一个以给top为塔尖,层数为n的如杨辉三角的金字塔,求有多少种 [分析]最终种数其实只与最底层的n个数的组合数有关,上层的每个都数是由最底层数相加得来 ...
- x86CPU 实模式 保护模式 傻傻分不清楚? 基于Xv6-OS 分析CR0 寄存器
基于Xv6-OS 分析CR0 寄存器 之前一直认为晕乎乎的...啥?什么时候切换real model,怎么切换,为什么要切换? ------------------------------------ ...
- HTML5:理解head
HTML文档的head部分,通常包含指定页面标题.为搜索引擎提供关于页面本身的信息.加载样式表,以及加载JavaScript文件(出于性能考虑.多数时候放在页面底部</body>标签结束前 ...
- EXISTS 执行顺序 CLR-2-2-引用类型和值类型
EXISTS 执行顺序 select * from a where a.s_status=1 and exists (select orderid from b on a.orderid=b.or ...
- Python 批量修改root密码
#_*_coding:utf8_*_ from multiprocessing import Process, Pool import paramiko import sys,os host_list ...
- YII2 的授权(Authorization)
说明:翻译本不是我应该做的,由于我的英语水平实在太差.但由于对YII的兴趣.所以也做一点.同一时候也能显示出我的胆量还是有的...希望不误导您. 由于这里MD语法的内容显示不全.您能够去这里看看. A ...