UCloud 机房的网络搭建(解题报告)
来源:互联网 发布:nginx 反向代理 静态 编辑:程序博客网 时间:2024/06/08 06:15
UCloud 刚刚建立一个新机房,近日正在进行网络搭建。机房内有 nnn 台服务器和 mmm 个分线器,整个机房只有一个网线出口。分线器的作用是将一根网线转换成多根网线。蒜头君也知道每个分线器输出的最大网线根数(不一定要将分线器输出的每根线都用上),问你至少需要使用多少个分线器才能使得每台服务器都有网线可用。
输入格式
第一行输入 n,m(0≤n,m≤100)n,m(0 \le n,m \le 100)n,m(0≤n,m≤100)。
第二行输入包含 mmm 个整数的数组 A(0≤Ai≤10)A(0 \le A_i \le 10)A(0≤Ai≤10) 表示每个分线器输出的最大网线根数。
输出格式
输出最少需要的分线器数量。若不能使得所有服务器都有网线可用,输出一行Impossible
。
样例说明
一共需要 333 个分线器,最大输出根数分别为 7,3,27,3,27,3,2,连接方法如下图所示:
样例输入
10 42 7 2 3
样例输出
3
思路:第一个分线器没有额外的开销,其余每个分线器都有额外的开销(需要1个接口)来连入网络,特别注意题目中如果只有1个机器,则不需要分线器的特殊情况。
package jisuanzhidao.chusai5;import java.util.Arrays;import java.util.Scanner;public class One {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);int n=scan.nextInt();int m=scan.nextInt();int [] a=new int[m];int sum=0;for(int i=0;i<m;++i){a[i]=scan.nextInt();sum+=a[i];}if(n<=1){System.out.println("0");}else{ Arrays.sort(a);int ans=1;n-=a[m-1];for(int i=m-2;i>=0&&n>0;--i){if(a[i]==0){break;}++ans;n-=(a[i]-1);}if(n<=0){System.out.println(ans);}else{System.out.println("Impossible");}}}}
阅读全文
0 0
- UCloud 机房的网络搭建(解题报告)
- A. UCloud 机房的网络搭建
- UCloud 机房的网络搭建(找规律 计蒜之道第五场)
- UCloud 的安全秘钥(简单)解题报告
- 2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建
- 2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建(贪心)
- 2017 计蒜之道 初赛 第五场——A. UCloud 机房的网络搭建
- 2017计蒜之道初赛第五场-UCloud 机房的网络搭建
- codevs 2370 小机房的树 LCA 解题报告
- 2017.8.28 机房测试 (博弈论) 解题报告
- 积木搭建解题报告
- E - Biorhythms解题报告(来自网络)
- F - Dividing解题报告(来自网络)
- F - Summits解题报告(来自网络)
- A - Wall解题报告(来自网络)
- E - Pipe解题报告(来自网络)
- N - TOYS解题报告(来自网络)
- [ZJOI2012]网络 解题报告
- 51. N-Queens
- Android的控件
- Sequence to Sequence model
- NTT和多项式各种基础运算模板
- 美团 生成器问题
- UCloud 机房的网络搭建(解题报告)
- Eclipse中调试Android技巧
- JAVA变量笔记
- [学习笔记]用户界面优化之2D翻转
- 0-1背包问题
- 一个例子来谈react的优势
- 学习Spring JPA时报的Not supported for DML operations 错误
- 牛顿插值(牛顿差商法)的Matlab实现
- Linux yum 安装mysql 两篇