JZOJ 2021.2.26上午新初一比赛

本文介绍了JZOJ初一编程比赛中涉及的四道题目,包括吃萝卜问题、增援前线问题、卡片游戏问题和合并线段问题。通过简洁的题解,阐述了解题思路和解决方案,如使用二分法、贪心策略和动态规划等。
摘要由CSDN通过智能技术生成

 

鸽了一个寒假的我,觉得我不能再这样颓废下去了,今天刚好考试,来讲讲题目。

T1:

吃萝卜

题目描述

在一个神奇的国度里,有一只编程兔,它每天都写很多的代码,各种编程语言如pascal、c、c++、java、basic 等等它都了如指掌,各种算法也都已经滚瓜烂熟了。小花是它的好朋友,经常和它一起玩耍。
某一天,小花给编程兔送来了很多的萝卜。编程兔很开心,决定把它的萝卜和其它的小兔子一起分享。小花共计送来了 n 袋萝卜(编号 1 到 n),每袋里面都有一定数量的萝卜。小兔子共计有 m 只,兔子们都很守规矩,按照编号 1 到 m 依次排好领取萝卜,萝卜按照编号从小到大的顺序依次发放(也就是编号小的兔子领取前面的萝卜,编号大的兔子领取后面的萝卜,萝卜一定要分完,不能有剩余),每只兔子都只能领取连续的若干袋萝卜,每只兔子至少领取一袋萝卜,一袋萝卜也只能分给一只兔子,不能分给两只以上的兔子。
编程兔希望萝卜尽量能分的平均一点(否则小兔子们要不开心的^_^),也就是它希望得到萝卜最多数量的兔子的萝卜要最少。这个问题对于编程兔来说很简单,亲爱的同学们,你们会么?

输入

第一行是两个正整数 n 和 m,表示萝卜的袋数和兔子的数量。
第二行是 n 个正整数,表示每袋萝卜的数量。

输出

输出只有一行一个整数,表示得到萝卜最多的那只兔子最少可以得到的萝卜数量,即让最大值最小。

样例输入

输入样例 1: 
9 3
1 2 3 4 5 6 7 8 9
输入样例 2: 
5 2
3 2 5 4 3

样例输出

输出样例 1: 
17
输出样例 2: 
 10

啊,这道题,灰常简单(虽然我刚开始没打出来),只需一个二分,轻松搞定~~~ 

#include<bits/stdc++.h>
using namespace std;
int m,n,a[100005];
int check(int mid)
{
	int sum=0,num=0;
	for(int i=1;i<=n;i++)
	{
		sum+=a[i];
		if(sum>mid)
		{
			num++;sum=a[i];
		}
	}
	num++;
	if(num>m)return 0;
	else return 1;
}
int main()
{
	freopen("eat.in","r",stdin);
	freopen("eat.out","w"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值