链接:点击打开链接

题目描述

最可爱的applese生日啦,他准备了许多个质量不同的蛋糕,想请一些同学来参加他的派对为他庆生,为了不让一部分同学感到不爽,他决定把每个蛋糕都分割成几份(也可以不分割),使得最小的蛋糕的质量与最大的蛋糕的质量的比值不小于一个值。但是applese的刀功并不是很好,所以他希望切尽量少的刀数使得所得到的蛋糕满足条件。由于applese为了保证每一块蛋糕的质量和期望的没有偏差,所以他一刀只能切下一块蛋糕,即将一块蛋糕分成两块,同时,他不能一刀同时切两块蛋糕,也就是说,applese一次只能将一块蛋糕分割成两块指定质量的蛋糕,这两块蛋糕的质量和应等于切割前的蛋糕的质量。Applese还急着准备各种派对用的饰品呢,于是他把这个问题交给了你,请你告诉他至少要切割几次蛋糕

输入描述:

第一行包括两个数T,n,表示有n个蛋糕,最小的蛋糕的质量与最大的蛋糕的质量的比值不小于T
接下来n行,每行一个数wi,表示n个蛋糕的质量

输出描述:

输出包括一行,为最小切割的刀数
数据保证切割次数不超过500
示例1

输入

0.99 3
2000 3000 4000

输出

6

备注:

0.5 < T < 1
1 <= n <= 1000
1 <= wi <= 1000000

题解:

这题开始没做出来,因为感觉情况会非常的复杂,没有一点思路。但是看到了官方题解就很厉害了
首先有一个结论,每块蛋糕分成的每一块的大小都是相同的
基于这个结论,每次找到当前划分最大块所在的大块并将其划分数+1,
检查是否满足题目的要求考虑这个结论为什么是正确的:考虑一个蛋糕切的刀数不变,那么可以想到假如分割得到的块是不同的,那么可能的献是增加最大和最小之间的差值,那么这样答案只会更劣,所以可以想到分成的每个块的大小是相同的那么只要按照上面模拟就可以了,这题妥妥的送温暖。
基于这个思想,我使用了map
#include <bits/stdc++.h>
#define mp(a,b) make_pair(a,b)
using namespace std;struct Node{double ave,all;int div;
}E[1007];multimap<double,int> mp;
multimap<double,int>::iterator it,it2,i;void show(){i = mp.begin();for (;i != mp.end();i ++){cout << i->first << ',' << i->second << endl;}cout << "****************************" << endl;
}int main()
{ios::sync_with_stdio(false);double des;int n;cin >> des >> n;for (int i = 1;i <= n;i ++){cin >> E[i].all;E[i].div = 1;E[i].ave = E[i].all;mp.insert(mp(E[i].ave,i));}it = mp.begin();it2 = mp.end();it2--;//show();if (n == 1)cout << 0 << endl;else {int ans = 0;while (it->first/it2->first < des){int ID = it2->second;E[ID].div ++;E[ID].ave = E[ID].all/E[ID].div;mp.erase(it2);mp.insert(mp(E[ID].ave,ID));it2 = mp.end();it2--;it = mp.begin();ans ++;//show();}cout << ans << endl;}
}

牛客网习题集 - Wannafly挑战赛13- D applese生日相关推荐

  1. 牛客网习题集 - Wannafly挑战赛13- Jxc军训

    在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不爽. Jxc将天空看做一个n*n的矩阵,此时天上有m朵云,这些云会随机分布在m个不同的位置,同时太阳 ...

  2. 牛客网比赛-Wannafly挑战赛27

    无关前置 最近同学都在打牛客网的比赛并且博主也在写一下牛客网的题,博主就去看了看,打了一场,题目质量还是非常不错的.我才不会告诉你我没开long long错了好久QWQ 212A-灰魔法师 题意简述 ...

  3. Wannafly挑战赛13【A B C D】【逆元+数学+优先队列】

    A zzy的小号 链接:https://www.nowcoder.com/acm/contest/80/A 来源:牛客网 题目描述 学家zzy根据字体的特点,创建了一系列小号- I_Love_Chth ...

  4. 牛客网 Wannafly挑战赛8 A.小Y和小B睡觉觉

    写了一会不想写了... A-小Y和小B睡觉觉 链接:https://www.nowcoder.com/acm/contest/57/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制 ...

  5. 题解——牛客网Wannafly挑战赛23 B-游戏 (SG函数)

    前言 比赛的时候没学过SG函数的蒟蒻以为是道结论题,但是不是QwQ 和dummyummy巨佬一起推了快三个小时的规律 最后去问了真正的巨佬__stdcall __stdcall面带微笑的告诉我们,这是 ...

  6. 牛客网 Wannafly挑战赛20 A-染色

    链接:https://www.nowcoder.com/acm/contest/133/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...

  7. 牛客网 Wannafly挑战赛27 蓝魔法师

    蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...

  8. 牛客网wannafly挑战赛13-D(贪心)

    链接:https://www.nowcoder.com/acm/contest/80/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  9. 牛客网wannafly挑战赛13-E(线段树)

    链接:https://www.nowcoder.com/acm/contest/80/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

最新文章

  1. 服务器同步什么文件类型,不同服务器同步文件类型
  2. 用REDIS实现分布式缓存
  3. golang 学习笔记
  4. python123判断字符串结尾_Python学习教程:在字符串的开头和结尾处做文本匹配
  5. C#中List〈string〉和string[]数组之间的相互转换
  6. hive jdbc 访问 配置_Hive入门级教程(详细)
  7. Win8下用DOSBox编写汇编语言
  8. ibavformat.so.57: cannot open shared object file: No such file or directory
  9. windows入门Elasticsearch7.10(es)之3:本地集群搭建
  10. SDU-nachos安装及初步编译
  11. Navicat For Mysql软件注册机破解
  12. 计算机类和鼠标类是什么关系,什么是机械鼠标和光学鼠标?两者有什么区别?...
  13. 颜色,色相环知识分享
  14. 拉勾网爬取失败?试试这一招
  15. 计数器+按钮控制数码管显示
  16. Dynamic , Static or Seperate Schema Design (Convert No-SQL to ORDBMS)
  17. wps怎么减少行间距,WPS的word怎么不能缩小行间距
  18. 电商平台中的架构实践
  19. 2.数据类型--数值类型
  20. 荣耀x10max能否升级鸿蒙,坐拥豪华配置:荣耀X10 Max成今年唯一5G大屏手机

热门文章

  1. 邮件服务器怎么使用,Winmail Mail Server邮件服务器软件怎么使用
  2. pytorch 冻结参数
  3. 【Mac+Deepin系统】两台主机一个显示器如何切换显示?
  4. centos linux开机启动项,Centos 配置开机启动项
  5. EditText设置IME动作问题
  6. aden -接球游戏 2.0
  7. 小白从零开始:小程序阿里云平台控制stm32(小程序篇)
  8. 国内医院临床自闭症病例分享:大脑自闭了,为什么是肠道的锅?
  9. 内存和CPU匹配方法详解
  10. 峨眉派的创始人真的是郭襄吗?