怎样去思考问题 解决问题 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 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
随机推荐
- Python模块:Re模块、附软件开发目录规范
Re模块:(正则表达式) 正则表达式就是字符串的匹配规则 正则表达式在多数编程语言里都有相应的支持,Python里面对应的模块时re 常用的表达式规则:(都需要记住) “ . ” # 默认匹配除 ...
- java中使用Protobuf的实例(Demo)
由于Protobuf受到推崇,故尝试采用protobuf来摒弃传统的xml进行传输数据. 首先,需要下载的关于Protobuf的文件: 1.到http://code.google.com/p/prot ...
- codevs1792 分解质因数
题目描述 Description 编写一个把整数N分解为质因数乘积的程序. 输入描述 Input Description 输入一个整数 N 输出描述 Output Description 输出 分解质 ...
- ***mysql 用一个表的一列,去更新另一表的一列
需求: 老板给了一个EXCEL数据,是本人提供的一个模板,含ID,现在相当于要导入这新增的一列数据到数据库中的某一个表. 方法一:用navicat,在excel中复制一列,再粘贴到navicat中的一 ...
- HDU 5640 King's Cake【模拟】
题意: 给定长方形,每次从中切去一个最大的正方形,问最终可以得到多少正方形. 分析: 过程类似求gcd,每次减去最小的边即可. 代码: #include <cstdio> #include ...
- Servlet开发(1)
Servlet开发 Servlet引入: 百度百科详细servlet介绍: 重点概括:servlet运行在服务器上,处理用户请求. 我们使用response来获取一个写方法 PrintWriter o ...
- Java电商项目-6.实现门户首页数据展示_Redis数据缓存
目录 项目的Github地址 需求介绍 搭建Redis集群环境 下面先描述单机版redis的安装 下面将进行Redis3主3从集群环境搭建 基于SOA架构, 创建门户ashop-portal-web门 ...
- Redis持久化方式--RDB和AOF
转载于:https://www.cnblogs.com/xingzc/p/5988080.html Redis提供了RDB持久化和AOF持久化 RDB机制的优势和略施 RDB持久化是指在指定的时间间隔 ...
- linux 用 rsync 快速删除大量小文件
假设我们在目录 /tmp/to_delete 下有很多小文件 a1 a2 a3 f1 f2 f3 现在我们想快速的删除f 开头的文件. 如果文件量大,用rm 可能会失败,而且会很慢, 所以用rsync ...
- linux 硬件中断调节
什么是中断 中断interrupts是指硬件主动的来告诉CPU去做某些事情.比如网卡收到数据后可能主动的告诉CPU来处理自己接受到的数据,键盘有了按键输入后会主动告知CPU来读取输入. 硬件主动的打扰 ...