题目链接:https://codeforces.ml/contest/1461/problem/E
题意:给定6个数k,l,r,t,x,y。(1<=l<=k<=r<=1e18,1<=t<=18,1<=x<=1e6,1
<=y<=1e18)。k表示初始水位,l,r表示水位必须在任何时刻在这个范围内,t表示判断是否能待满的天数,x表示每日用水量,y表示每日可加水量(可加可不加)。
题解:题意真的很简单,就是不知道怎么才300多人过,以至于我也比较懈怠了,不应该啊!!
讨论最多能维持res天.
if x==y:要么0天,要么无数天。
elif x<y:每次肯定是要先加y,再减x。
elif x>y:每次加y(可以加就加)之后减x到不能减,然后mp[k-l]=1(遇到之前就已经mp[k-l]就跳出无穷大)。因为x<=1e6所以最多跑1e6次。
总结:唉,思路还是不够清晰,感觉水平应该是在1800以上了,但是赛场上开题还是得重视,不能得了个差不多的名次就懈怠了。只有拥有最好的状态,才能够不断的去突破自己。
唉,终究是状态不好,思路也不够清晰。上一次有比赛大概是5,6天前而且这一周复习专业课也没有碰代码,稍微生疏了一些。
代码还是很简单的,可能文字题解不够,看代码一下子就懂了:
#include <bits/stdc++.h>
#define ll long long
#define ld double
#define pi acos(-1)
#define pb push_back
#define mst(a, i) memset(a, i, sizeof(a))
#define pll pair<ll, ll>
#define fi first
#define se second
#define mp(x, y) make_pair(x, y)
#define rep(i, a, n) for (ll i = a; i <= n; i++)
#define per(i, n, a) for (ll i = n; i >= a; i--)
#define dbg(x) cout << #x << "===" << x << endl
using namespace std;
template<class T>void read(T &x){T res=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){res=(res<<3)+(res<<1)+c-'0';c=getchar();}x=res*f;}
inline void print(ll x){if(x<0){putchar('-');x=-x;}if(x>9)print(x/10);putchar(x%10+'0');}
const ll maxn = 1e6 + 10;
const ll mod = 1e9 + 7;
ll k, l, r, t, x, y;
ll mp[maxn];
bool ok(ll x) {
if (x >= l && x <= r)
return true;
else
return false;
}
ll solve1(){
ll res=0;
if(ok(k+y)) k+=y;
if(x==y){
if(ok(k)&&ok(k-x)) return 8e18;
else return res;
}
else if(y<x){
if(!ok(k-x)) return res;
else k-=x,res++;
ll z=x-y,tt=(k-l)/z;
res+=tt,k-=tt*z;
}
else if(y>x){
if(!ok(k-x)) return res;
else k-=x,res++;
//
ll tt;
while(ok(k)){
tt=(k-l)/x;res+=tt,k-=tt*x;
if(mp[k-l]==0) mp[k-l]=1;
else if(tt>0) return 8e18;
k+=y;
}
}
return res;
}
int main() {
ll _s = 1;
// read(_s);
// freopen("testdata.in","r",stdin);
// freopen("testout.out","w",stdout);
for (ll _ = 1; _ <= _s; _++) {
read(k), read(l), read(r), read(t), read(x), read(y);
// ll mx=0;
ll mx=solve1();
bool f = false;
if (t <= mx) f = true;
// dbg(mx);
puts(f ? "Yes" : "No");
}
return 0;
}