药房管理

GitHub跳转原题关系图返回列表

按请求顺序扣减库存,库存不足时计数但不改变库存。

OJ: noi_openjudge

题目 ID: ch0105-23

难度:入门

标签:模拟循环python

日期: 2026-07-30 23:01

题意

给定初始库存和按顺序到来的取药请求,统计因库存不足而被拒绝的病人数。

思路

逐个处理请求。请求量超过当前库存时增加拒绝计数,库存不变;否则扣减库存。这是典型的单状态顺序模拟。

代码

Python代码

python
stock = int(input())
patient_count = int(input())
requests = map(int, input().split())
rejected = 0

for request in requests:
    if request > stock:
        rejected += 1
    else:
        stock -= request

print(rejected)

C++代码

cpp
#include <cstdio>
int main(){
	int m,n,a,i,cnt = 0;
	scanf("%d%d",&m,&n);
	for(i = 1;i<=n;i++){
		scanf("%d",&a);
		if( a > m )
			cnt++;
		else
			m = m - a;
	}
	printf("%d",cnt);
	return 0;
}

复杂度

时间复杂度为 O(n)O(n),额外空间复杂度为 O(1)O(1)

总结

库存模拟的关键是拒绝请求不能消耗库存,状态只在成功操作后更新。