http://118.190.162.167/p1013.html

题目描述

小英开了一家咖啡厅,和他的基友们做服务员。每个人不能在咖啡厅服务自己,因此如果某个人想来咖啡厅喝咖啡时正好赶上自己值班,就会变得很尴尬了。为此,小英决定和他的基友们轮班,使这种情况不会发生。现在小英已经知道了咖啡厅接下来的客人名单,客人们到达咖啡厅有严格的先后顺序,同一时间只有一位客人需要服务。你帮助小英找到需要换班次数最少的一种排班方法。

数据范围

1 < T <= 10.

对于小数据, 0 < S, C < 1000.

对于大数据, 0 < S, C < 10 0000.

输入描述

第1行,一个整数T,代表共有T组数据。

第2行,一个整数S,代表服务员数量。

接下来的S行是服务员的名字,名字中可能含有空格。

第S+3行,一个整数C,代表客人数量。

接下来的C行是客人的名字,其中可能包括服务员的名字,名字中可能含有空格。

输出描述

对于每组数据,输出一行,包含一个整数,代表最少所需的换班数。

样例输入(精确内容)

12Small EightSmall Five5Small EightBurningZhouSmall Fivezmsj

样例输出(精确内容)

1

提示

样例中最优的排班方式是先由 Small Five 值班直到他想需要服务时再换到Small Eight。

解题思路:首先,对输入的客人数据进行处理,将客人数组中的服务员按顺序摘取出来,其他信息舍去(普通客人不影响排班)。其次以服务员数组为纵坐标,从客人信息中摘取出来的服务员数据为横坐标,生成一张表。

                         
表1                                                                                                        值班顺序
服务生冲突的地方置1,不冲突的置0,此时将该问题转化成了迷宫问题,可用DFS方法来求的结果(答案貌似没有问题,但超时了)。或者可以使用动态规划的方法来做:新生成一个DP数组,DP表对应位置表示换班次数,从表一的第一行为0的位置开始,进行DP数组补全。
针对DP某一位置(i,j),查找对应的表1 的(i,j)位置,当表1对应位置值为1 时,置DP表对应位置为MAX(MAX值自己定义,起标识作用),当表1对应的位置为0 ,此时需要查看DP表的第(i-1,j)位置的值。若值为MAX,则DP表的第(i,j)处值为DP表中第i-1行中的最小值+1(需要从别的列跳过来),若值不为MAX,则DP表的第(i,j)处值为DP表中第(i-1,j)的值(直接继承下来,不需要从别的列跳过来)。最后取DP表最后一行的最小值。
DP 表
代码:
由于代码大小限制,对DP表只用两行进行迭代
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<vector>
#include<algorithm>
#define MAX 10000
using namespace std;int Min(int *p,int len)
{int num=MAX;for(int i=0;i<len;i++){if(p[i]<num)num=p[i];}return num;
}int Map[2][100000]; //代码大小限制,只用两行迭代
int main()
{int num,num_e,num_g;//freopen("input.txt","r",stdin);cin>>num;while(num--){string str;vector<string>employee;vector<string>guest;cin>>num_e;cin.ignore();while(num_e--){getline(cin,str);employee.push_back(str);}cin>>num_g;cin.ignore();while(num_g--){getline(cin,str);for(int i=0;i<employee.size();i++){if(str==employee[i]){guest.push_back(str);break;}}}memset(Map,0,sizeof(Map));for(int i=0;i<employee.size();i++) //动态规划表初始化{if(employee[i]==guest[0])Map[0][i]=MAX;}for(int i=1;i<guest.size();i++){for(int j=0;j<employee.size();j++){if(employee[j]==guest[i]){Map[i%2][j]=MAX;}else{if(Map[(i-1)%2][j]==MAX){Map[i%2][j]=Min(Map[(i-1)%2],employee.size())+1;}else {Map[i%2][j]=Map[(i-1)%2][j];}}}}/*for(int i=0;i<hang;i++){   for(int j=0;j<employee.size();j++)cout<<Map[i][j];cout<<endl;}*/cout<<Min(Map[(guest.size()-1)%2],employee.size())<<endl;}return 0;
}

AI GOD:1013: 小英的咖啡厅相关推荐

  1. 加速AI应用落地,英特尔AI 2.0的进阶之道

    人工智能模型的复杂度不断增加,对内存的需求也越来越大.深度学习的进一步发展需要解决内存限制问题,而当前的解决方案无法利用所有可用计算,业内人士逐渐意识到需要专用芯片来支持深度学习训练和推理. 英特尔则 ...

  2. “明年AI会如何?”英伟达问了13位不同行业的专家

    原作 ROSIE BROWN Root 编译自 blog.nvidia 量子位 出品 | 公众号 QbitAI 2017年是属于AI的. 这一年,我们看到了AI在围棋德扑上的逆天表现,一举击败人类世界 ...

  3. 微软官方工具_英文写作在线工具推荐:微软官方免费打分评改网站微软小英

    好像给大家推这个工具的时间晚了点,因为四六级和考研已经结束了......不过没关系,如果你需要的话,可以从现在开始使用它备战下一次考试(没有恶意)!今天推荐的「微软小英写作网站」,是正儿八经由微软官方 ...

  4. Gartner:70%新应用由低代码开发,AI热潮后小数据崛起

    作者 | 宋慧 出品 | CSDN云计算 头图 | 付费下载于东方IC 国际研究机构Gartner在近日发布了2021年十大数据和分析趋势.纵观这十个趋势,基本可以归纳为三类主题,分别是: 加速数据和 ...

  5. 刘润、陈果、董小英、朋新宇、付晓岩等50余位专家力荐《精益数据方法论》重磅上市!...

    ▼ 史凯结合丰富的实战经验.深厚的理论基础,从底层逻辑出发深刻洞察并剖析了企业数 字化转型的方法和路径,总结了数据驱动的企业的六大能力模型,将创造价值.消除浪费的 精益思想融入数字化转型中,形成了精益 ...

  6. 定制海报、AI扣人像小程序

    大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识h ...

  7. 刘润、陈果、董小英、朋新宇、钱大群、付晓岩等50余位专家力荐,《精益数据方法论》重磅上市!...

    史凯结合丰富的实战经验.深厚的理论基础,从底层逻辑出发深刻洞察并剖析了企业数 字化转型的方法和路径,总结了数据驱动的企业的六大能力模型,将创造价值.消除浪费的 精益思想融入数字化转型中,形成了精益数据 ...

  8. 【AI创新者】小蚁首架张骏峰:让图像AI人尽可用

    [AI创新者]是CSDN人工智能频道精心打造的专栏,本期主人公是小蚁科技首席架构师,张骏峰. 记者:王艺 更多[AI创新者]征集中,采写AI领域杰出学者.资深专家.技术缔造者.顶尖团队.寻求报道请邮件 ...

  9. 【AI创新者】小蚁首架张骏峰:让图像AI人尽可用转载

    张骏峰,小蚁科技首席架构师,负责小蚁AI图像相关算法架构.主要包括:小蚁智能摄像机的智能报警服务.小蚁智能行车记录仪的辅助驾驶ADAS服务.小蚁运动相机App的图像风格迁移技术以及小蚁微单App的图像 ...

最新文章

  1. Could not open a connection to your authentication agent
  2. Gradle学习系列之十——自定义Plugin(本系列完)
  3. 电容充放电原理图_干货 | 入门开关电源,这些原理图一定要读懂
  4. CTRL+SHIFT
  5. nginx 获取header 请求参数_Nginx设置Header头信息
  6. 同样是卖票,为啥阿里卖电影票就不卡?技术上做了啥???
  7. avg最多用多少列 mysql_使用MySQL中的AVG函数求平均值的教程
  8. 对于当前时点不能进行事物的事后确认。
  9. 用vue.js学习es6(四):Symbol类型
  10. 社区团购微信小程序开发
  11. 华为基本法 读书笔记
  12. 用Keil+CMSIS DAP调试NXP S32系列单片机时遇到的问题
  13. Mysql 超键 候选键 主键 外键之间关系
  14. 提高你的Java代码质量吧:不要让类型默默转换
  15. Effie:沉浸写作,创造价值
  16. [Pandas] 缺失值删除 df.dropna()
  17. 【继上篇】云计算架构概念和技术基础
  18. 【滴水三期】--公开课
  19. vbscript能干什么
  20. 卷毛0基础学习Golang-并发编程,01 什么是并发

热门文章

  1. 因修改了用户文件夹名而无法使用pip安装python第三方模块的两种实用解决方法
  2. 打开lol一直连接服务器失败怎么回事,lol连接服务器失败:无法连接服务器最新解决方法...
  3. 【22】字体效果(阴影/浮雕)
  4. [SWPUCTF 2021 新生赛]no_wakeup
  5. python画情侣头像
  6. 热血江湖数据库MYSQL修改_求更多热血江湖私服 修改数据库语句
  7. 委内瑞拉石油币至今连“一毛钱”都没筹到,腾讯投资的轻松筹入局区块链 | 区块链日报
  8. 微型计算机的主板又称为,供电设计比7999元的主板还猛,ROG M11A主板首次亮相
  9. 有关国内的流氓软件和强制安装软件(网站黑名单一览表)
  10. 怎样提高员工的工作激情?