B - AtCoder Amusement Park题解

原题翻译

翻译我已经在上篇翻译过了,详情

题目大意

n n n个小团体需要乘坐小船,第 i i i个团体有 a i a_i ai个人,而小船只有 k k k个座位。同时,小团体需要按照给出的顺序来乘坐小船,且同一个团体中的人必须乘坐同一艘小船,问,需要多少只小船,才能满足所有的小团体。

思路

模拟即可,每次检查当前小船是否还能放下当前的团体人数,如果够,就加入当前小船中,如果不够,开一艘新的小船,用于放置当前的小团体。

代码

int n, k;
int a[N];
void solve() {
	// 竞赛程序
	cin >> n >> k;
	for(int i = 1; i <= n; i++)
		cin>>a[i];
	int cnt = 0, sum = 0;
	for(int i = 1; i <= n; i++) {
		sum += a[i];
		if(sum > k)
			sum = a[i], cnt++;
	}
	if(sum > 0)
		cnt++;
	cout << cnt << endl;
}

挺快乐的因为今天心爱的学校开放日投了JL了^ W ^

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言中,创建一个简单的游乐场预约系统可能涉及到数据结构、文件操作以及用户交互。以下是一个简化的概念性示例,使用结构体和基本控制流程: ```c #include <stdio.h> #include <stdlib.h> // 定义游乐项目结构体 typedef struct { char name[50]; int capacity; int available_spots; } Amusement; // 预约函数 void reserve(Amusement *park, char *project, int spots) { if (spots > park->available_spots) { printf("该项目当前剩余座位不足!\n"); return; } park->available_spots -= spots; printf("您成功预约了 %s, 剩余座位 %d。\n", project, park->available_spots); } int main() { // 初始化游乐场数据 Amusement ferris_wheel = {"摩天轮", 50, 40}; Amusement roller_coaster = {"过山车", 30, 20}; // 文件操作(这里简化为硬编码,实际应用中可能需要读取或写入数据库) FILE *fp = fopen("amusement_parks.txt", "w+"); // 假设存在文件用于存储公园信息 fprintf(fp, "项目\t剩余座位\n"); fprintf(fp, "%s\t%d\n", ferris_wheel.name, ferris_wheel.available_spots); fprintf(fp, "%s\t%d\n", roller_coaster.name, roller_coaster.available_spots); fclose(fp); // 用户输入 char *project, choice; int spots; while (1) { printf("\n请选择游乐项目(F摩天轮/C过山车/Q退出): "); scanf(" %c", &choice); switch (choice) { case 'F': printf("请输入想要预约的摩天轮座位数: "); scanf("%d", &spots); reserve(&ferris_wheel, ferris_wheel.name, spots); break; case 'C': printf("请输入想要预约的过山车座位数: "); scanf("%d", &spots); reserve(&roller_coaster, roller_coaster.name, spots); break; case 'Q': printf("预约结束,感谢使用!\n"); return 0; default: printf("无效选择,请重新输入!\n"); } } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Digital_Enigma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值