P1095-守望者的逃离

 1 #pragma GCC optimize("Ofast")
 2 #include <bits/stdc++.h>
 3 #define maxn 13003
 4 #define _for(i,a,b) for(int i = (a);i < b;i ++)
 5 typedef long long ll;
 6 using namespace std;
 7 
 8 inline ll read()
 9 {
10     ll ans = 0;
11     char ch = getchar(), last = ' ';
12     while(!isdigit(ch)) last = ch, ch = getchar();
13     while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
14     if(last == '-') ans = -ans;
15     return ans;
16 }
17 inline void write(ll x)
18 {
19     if(x < 0) x = -x, putchar('-');
20     if(x >= 10) write(x / 10);
21     putchar(x % 10 + '0');
22 }
23 int M,S,T;
24 int SS,TT;
25 int main()
26 {
27     M = read(),S = read(),T = read();
28     SS = S;TT = T;
29     int i;
30     for(i = 0;i < T;i ++)
31     {
32         if(S <= 0) break;
33         if(M >= 10)
34         {
35             M -= 10;
36             S -= 60;
37         }
38         else if(((T-i<=1||S<=17)&&M<10) || ((T-i<=2||S<=34)&&M<6)
39          || ((T-i<=3||S<=51)&&M<2) || ((T-i<=4||S<=68)&&M<2)
40          || ((T-i<=5||S<=85)&&M<2) || ((T-i<=6||S<=102)&&M<2)
41          || (S<=119&&M<2))
42             S -= 17;
43         else if(M >= 2)
44             M += 4;
45         else if(S >= 120 && T-i >= 7)
46         {
47             while(S >= 120 && T-i >= 7)
48             {
49                 i += 7;
50                 S -= 120;
51             }
52             i --;
53         }
54     }
55     if(S <= 0)
56         printf("Yes\n%d\n",i);
57     else
58         printf("No\n%d\n",SS-S);
59     return 0;
60 }

https://www.luogu.org/blog/Asurudo/solution-p1095

posted @ 2019-08-17 13:16  Asurudo  阅读(253)  评论(0编辑  收藏  举报