题解 | #[NOIP2010]接水问题#

[NOIP2010]接水问题

https://ac.nowcoder.com/acm/problem/16600

解决此题的关键在于如何算出接水的总时间。我们先用一个数组接收每个人需要打水的量,接下来用for语句控制一次所承载同时接水的人数m,通过遍历得出数组中前m个元素中最小的那个,并用x记录其索引。接下来再用一个for循环来进行同时减最小值,此最小值就代表时间的流逝,也代表此时需要换人接水,也就是p[x]=p[k],下一个人紧跟上来接水,依次遍历完后面的所有人。但需要注意的是,最后一个人的时候,并不是取最小值,而是取最大值,只有当时间最长的人完成了接水,整个接水任务才算完成,这样即可解决此题。

import java.util.*; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); int[] p=new int[n]; int[] w=new int[m]; for(int i=0;i<n;i++) { p[i]=sc.nextInt(); }

int x=0;
int time=0;
for(int k=m;k<n;k++) {
	int min=100;
	for(int i=0;i<m;i++) {
	if(p[i]<min) {
		min=p[i];
		x=i;
	 }
	
    }
    for(int i=0;i<m;i++) {
	p[i]=p[i]-min;
	
    }
   p[x]=p[k];
   time=time+min;
}

int max=0;
for(int i=0;i<m;i++) {
	if(p[i]>max) {
		max=p[i];
	 }
	
    }
System.out.println(time+max);






}

}

全部评论

相关推荐

06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务