• RC-u2 智能服药助手(raicom睿抗机器人CAIP编程技能赛)


    RC-u2 智能服药助手

    题目描述

    智能看护中很重要的环节是安排需要服药的老年人的服药计划。

    已知机器人需要照顾的某位老年人需要服用 N 种药物,但某些药物不宜间隔过短服用 —— 比如降糖药一般遵医嘱日服 3 次,两次之间需要间隔至少 4 小时。当需要服用的药物比较多,医嘱比较复杂时,如何保证每位老人的服药计划是安全合理的,就成为一个挑战。

    本题给定一套服药计划,请你检查一下计划是否存在问题。

    输入格式:
    输入第一行给出两个整数 N,M(1≤N,M≤103 ),表示老人需要服用 N 种药物(药物种类从 1 到 N 编号),对应的服药计划有 M 条记录。

    接下来首先在一行中给出 N 个用空格隔开的整数 Ti (−1≤Ti ≤100,Ti≠0),表示编号为 i 的药物需要间隔至少 Ti 个单位时间服用。如果 Ti 为 −1,则说明这种药物没有间隔要求。

    接下来的 M 行,每行给出一条服药计划中的记录,格式为:首先给出两个非负整数 t 和 k (0≤t≤109 ,0≤k≤N),表示服药的时刻为 t,服用了 k 种药物;然后紧接着列出 k 个数,每个数对应 t 时刻要吃的药物种类的编号。一行中的数字之间以空格分隔。

    题目保证:记录按照服药时刻 t 的递增顺序给出;每一时刻服用的药物种类各不相同。注意:同一种药物可能需要在不同的时刻重复服用。如果一位老人在 ti 时刻和 tj 时刻服用了同一种药物,则他服用的间隔时间为 ∣ti −tj∣。

    输出格式:
    按照输入顺序检查每一条记录中的每一种药物。如果在 Y 时刻不宜服用药物 X,则在一行中输出:

    Don't take X at Y!

    注意:老人收到提醒后会按照提醒不服用指定的药物。

    输入样例:

    10 6
    1 2 3 4 5 -1 -1 -1 -1 -1
    0 1 1
    1 2 1 2
    2 1 2
    3 2 1 3
    5 3 1 3 4
    6 2 1 4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    输出样例:

    Don't take 2 at 2!
    Don't take 3 at 5!
    Don't take 4 at 6!
    
    • 1
    • 2
    • 3

    模拟

    #include // 引入所有标准库
    using namespace std; // 使用标准命名空间
    
    // 定义一个结构体node来存储每种药物的信息
    struct node
    {
    	int tim; // 服用该种药物需要间隔的最小时间单位
    	int qian=-1; // 上一次服用该药物的时间,初始化为-1
    }p[1010]; // 定义结构体数组,最多支持1010种药物
    
    int main()
    {
    	int n,m; // n表示药物种类数量,m表示服药计划的记录条数
    	cin>>n>>m; // 读取n和m的值
    	for(int i=1;i<=n;i++)
    		cin>>p[i].tim; // 读取每种药物间隔时间的要求
    	while(m--) // 循环m次,读取每条服药记录
    	{
    		int t,k,id[1010]; // t表示服药的时刻,k表示同时服用的药物数量,id数组存储服用的药物编号
    		cin>>t>>k; // 读取服药时刻和药物数量
    		for(int i=0;i<k;i++) // 循环读取每种要服用的药物编号
    		{
    			cin>>id[i]; // 读取药物编号
    			if(p[id[i]].tim==-1) continue; // 如果这种药物没有间隔时间的要求,则跳过
    			if(p[id[i]].qian==-1) // 如果这是第一次服用这种药物
    				p[id[i]].qian=t; // 记录下服药的时间
    			else // 如果之前服用过这种药物
    			{
    				if(t-p[id[i]].qian<p[id[i]].tim) // 检查服药时间间隔是否少于要求
    					printf("Don't take %d at %d!\n",id[i],t); // 如果是,则输出不应该服用的警告信息
    				else
    					p[id[i]].qian=t; // 否则,更新上一次服药时间为当前时间
    			}
    		}
    	}
    	return 0; // 程序结束
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
  • 相关阅读:
    Dockerfile详解
    招投标系统软件源码,招投标全流程在线化管理
    实践练习六(必选):查看 OceanBase 执行计划
    FTP响应代码全面解析:逐个代码详解与应用场景
    微信小程序 实现滑块是矩形的slider组件
    Maven 使用IDEA环境操作
    【Leetcode】134.加油站
    二维码智慧门牌管理系统引领未来
    _linux 进程间通信(命名管道)
    电商网站选择云服务器要考虑什么?
  • 原文地址:https://blog.csdn.net/m0_73841621/article/details/138169227