• [luoguP1095] 守望者的逃离(DP)


    传送门

    这题。。。。得考虑一些奇奇怪怪的复杂情况

    不过也有简便方法。

    枚举时间,先算出来只用魔法走的时间。

    然后再枚举一遍时间,再算只走的时间,两个比较一下,取最游值。

    代码

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #define N 3000001
    
    int m, s, t;
    int f[N];
    
    inline int read()
    {
    	int x = 0, f = 1;
    	char ch = getchar();
    	for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
    	for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
    	return x * f;
    }
    
    int main()
    {
    	int i, j;
    	m = read();
    	s = read();
    	t = read();
    	for(i = 1; i <= t; i++)
    		if(m > 9)
    			f[i] = f[i - 1] + 60, m -= 10;
    		else
    			f[i] = f[i - 1], m += 4;
    	for(i = 1; i <= t; i++)
    	{
    		if(f[i] < f[i - 1] + 17) f[i] = f[i - 1] + 17;
    		if(f[i] >= s)
    		{
    			printf("Yes
    %d
    ", i);
    			return 0;
    		}
    	}
    	printf("No
    %d
    ", f[t]);
    	return 0;
    }
    

      

  • 相关阅读:
    算法笔记--支配树
    51Nod 1187 寻找分数
    ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer
    ACM-ICPC 2018 徐州赛区网络预赛 A. Hard to prepare
    HDU
    HDU
    Codeforces 1011E
    Codeforces 990D
    Codeforces 989C
    Codeforces 932E
  • 原文地址:https://www.cnblogs.com/zhenghaotian/p/7064783.html
Copyright © 2020-2023  润新知