zoukankan      html  css  js  c++  java
  • B. Train

    题意:火车有n节车厢,从头到尾1到n编号,偷渡者和监管者一开始在不同的两节车厢,每一分钟,火车会处于两个不同的状态-移动或者停靠在车站,每一分钟,监管者都在移动,偷渡者可以选择移动或者不动。

    控制者的移动如下:它有移动的方向,朝火车车头或者车尾,在移动中,它朝着移动的方向移动,如果到顶则换一个方向

    如果火车在移动,那么偷渡者会转移到相邻的车厢或者不移动,如果火车在停靠站,那么偷渡者可以下火车,并且再次任意选择一个车厢上火车

    让我们决定偷渡者的顺序:

    如果两人在统一车厢,就是控制者逮捕了偷渡者,输出抓捕的时间
    如果到了终点站,那么偷渡者胜利

    如何选择最佳的方式,使得偷渡者胜利?

    分析:我们可以贪心地选择,我们让偷渡者在下车的时候,选择的车厢是离监管者最远的,并且监管者在移动的时候,我们要尽可能地移动偷渡者,使得它不被抓。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    char op[20];
    char s[205];//火车行驶序列
    int main()
    {
    	int n, m, k;
    	//偷渡者位置、监管者位置
    	scanf("%d%d%d", &n, &m, &k);
    	getchar();
    	cin.getline(op, 15);
    
    	int dir;
    	//去头
    	if (op[3] == 'h')
    	{
    		dir = 0;//监管者方向
    	}//去尾
    	else
    	{
    		dir = 1;
    	}
    	scanf("%s", s);
    
    	//偷渡者方向
    	int dir2 = m < k ? 0 : 1;
    	int len = strlen(s);
    
    	bool flag = false;
    	int t = 0;//抓捕时间
    	for (int i = 0; i < len; ++i)
    	{		
    		++t;
    		//监管者的移动
    		int lastk = k;
    		if (dir == 0)//监管者方向
    		{
    			--k;
    			if (k == 0) k = 2, dir = 1;
    		}
    		else
    		{
    			++k;
    			if (k == n + 1) k = n - 1, dir = 0;//往车头走
    		}
    		//火车行驶
    		if (s[i] == '0')
    		{
    			if (dir == 0)//监管者方向
    			{
    				if (m > lastk && m < n) ++m;
    				else if (m < lastk && m > 1) --m;
    			}
    			else
    			{
    				if (m < lastk && m > 1) --m;
    				else if (m > lastk && m < n) ++m;
    			}
    
    		}//火车到站
    		else if(i != len - 1)
    		{
    			//*
    			if (dir == 0) m = n;
    			else m = 1;
    		}
    		//++t;
    		if (m == k && i != len - 1)
    		{
    			flag = true;
    			break;
    		}
    	}
    
    	if (!flag)
    	{
    		puts("Stowaway");
    	}
    	else
    	{
    		printf("Controller %d
    ", t);
    	}
    
    
    	return 0;
    }
    
  • 相关阅读:
    新手入门:python的pip安装(二)
    新手入门:python的安装(一)
    python解释器和环境安装
    Python基础入门总结
    Python环境搭建教程(windows10)
    漏洞重温之sql注入(三)
    漏洞重温之sql注入(二)
    漏洞重温之sql注入(一)
    漏洞重温之文件上传(FUZZ)
    漏洞重温之文件上传(总结)
  • 原文地址:https://www.cnblogs.com/pixel-Teee/p/12639062.html
Copyright © 2011-2022 走看看