2022年桂林電子科技大學程式設計競賽(同步賽)
阿新 • • 發佈:2022-05-21
《星露穀物語》(Stardew Valley)是一款開放式鄉村模擬經營類遊戲。
你可以在星露谷度過一段有趣而充實的時光,清晨起床開啟電視看看近日天氣預報,跟著電視節目學習製作新的料理,上午給自己的農田澆水,去牧場給小雞喂飼料,順手摸摸自己的小貓咪。中午找個合適的垂釣點釣兩條魚,也可以去礦洞裡敲兩塊礦石,揮劍趕跑不懷好意的史萊姆,傍晚在小鎮的酒吧和鎮民們閒聊,找到自己喜歡的女孩子(或者男孩子)送一件她心儀的禮物,你看著揹包裡用來求婚的美人魚吊墜,等到時機成熟的時候.......眾所周知,星露穀物語是一款很休閒的遊戲,Dilhao最喜歡的做的事就是在家裡照料自己的花田。Dilhao的花田有n朵花,他們整齊的排成一排,每朵花有不同的高度,第i朵花的高度為hi。
題解:
#include <bits/stdc++.h> #define fo(i, x, y) for (int i = int(x); i <= int(y); ++i) #define fd(i, x, y) for (int i = int(x); i >= int(y); --i) #definefi first #define se second using namespace std; using ll = long long; using pii = pair<int, int>; int main() { //freopen("t.in", "r", stdin); //freopen("t.out", "w", stdout); ios::sync_with_stdio(0); cin.tie(0); ll n, r, sx, sy; cin >> n >> r >> sx >> sy; auto checkcir= [&](ll x, ll y)->bool { return (x - sx) * (x - sx) + (y - sy) * (y - sy) <= r * r; }; auto checkrec = [&](ll x, ll y, ll xx, ll yy)->bool { return x <= sx && sx <= xx && y <= sy && sy <= yy; }; while (n--) { char c; ll x, y, w; cin >> c >> x >> y >> w; if (c == 'U') { if (checkcir(x, y) || checkcir(x, y + w) || checkrec(x - r, y, x + r, y + w)) { cout << "YES\n"; return 0; } } else if (c == 'D') { if (checkcir(x, y) || checkcir(x, y - w) || checkrec(x - r, y - w, x + r, y)) { cout << "YES\n"; return 0; } } else if (c == 'L') { if (checkcir(x, y) || checkcir(x - w, y) || checkrec(x - w, y - r, x, y + r)) { cout << "YES\n"; return 0; } } else if (c == 'R') { if (checkcir(x, y) || checkcir(x + w, y) || checkrec(x, y - r, x + w, y + r)) { cout << "YES\n"; return 0; } } } cout << "NO\n"; return 0; }
執行結果: