怎样去思考问题 解决问题 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 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
随机推荐
- [Oracle, MySQL] Oracle通过dblink连接MySQL
http://blog.csdn.net/dbanote/article/details/10488581 版权声明:本文为博主原创文章,未经博主允许不得转载. 业务上有这么一个需求,需要把Oracl ...
- hdu 4771好题
#include<stdio.h> #include<string.h>//通过只记录每一步此时点的状态.题非常好 #include<queue> using na ...
- 网络编程进阶:并发编程之协程、IO模型
协程: 基于单线程实现并发,即只用一个主线程(此时可利用的CPU只有一个)情况下实现并发: 并发的本质:切换+保存状态 CPU正在运行一个任务,会在两种情况下切走去执行其他任务(切换有操作系统强制控制 ...
- oracle将查询到的数据插入到数据库的表中
一.Oracle数据库中,把一张表的查询结果直接生成并导入一张新表中. 例如:现有只有A表,查询A表,并且把结果导入B表中.使用如下SQL语句: create table b as selec ...
- 网页js粘贴截图
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- [bzoj1578][Usaco2009 Feb]Stock Market 股票市场_完全背包dp
Stock Market 股票市场 bzoj-1578 Usaco-2009 Feb 题目大意:给定一个$S\times D$的大矩阵$T$,其中$T[i][j]$表示第i支股票第j天的价格.给定初始 ...
- JSP的Cookie处理
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/Cookies-handling.html: Cookies是存储在客户端计算机的文本文件,保存各种跟踪目 ...
- Android GIS开发系列-- 入门季(12) 显示载天地图
在项目中可以经常需要动态加载一些图层,像投影地图服务.投影地图服务器.其实网上有大量这样的服务,比如天地图官网, . 随便点开一个服务,里面有相关的信息.那如何加载这样图层服务呢. 一.首先感谢这篇博 ...
- 在ASP.NET Core 中使用Cookie中间件 (.net core 1.x适用)
在ASP.NET Core 中使用Cookie中间件 ASP.NET Core 提供了Cookie中间件来序列化用户主题到一个加密的Cookie中并且在后来的请求中校验这个Cookie,再现用户并且分 ...
- python异步回调函数的实现
#coding:utf-8 from socket import * import time #简单的服务器程序 监听用户连接,接收用户发来的信息,并返回反馈 def main(): HOST = & ...