2022年桂林电子科技大学程序设计竞赛(同步赛)

《星露谷物语》(Stardew Valley)是一款开放式乡村模拟经营类游戏。

你可以在星露谷度过一段有趣而充实的时光,清晨起床打开电视看看近日天气预报,跟着电视节目学习制作新的料理,上午给自己的农田浇水,去牧场给小鸡喂饲料,顺手摸摸自己的小猫咪。中午找个合适的垂钓点钓两条鱼,也可以去矿洞里敲两块矿石,挥剑赶跑不怀好意的史莱姆,傍晚在小镇的酒吧和镇民们闲聊,找到自己喜欢的女孩子(或者男孩子)送一件她心仪的礼物,你看着背包里用来求婚的美人鱼吊坠,等到时机成熟的时候.......

众所周知,星露谷物语是一款很休闲的游戏,Dilhao最喜欢的做的事就是在家里照料自己的花田。Dilhao的花田有n朵花,他们整齐的排成一排,每朵花有不同的高度,第i朵花的高度为hi。这天Dilhao看着自己的花田突然犯了强迫症,他觉得这些花的高度参差不齐实在是太丑了,他希望自己的花田的高度是有序的,左边的花的高度要小于等于右边的花的高度。为了完成自己的目的,Dilhao决定斥巨资购入强力化肥,每一袋强力化肥可以让任意一段区间的花的高度+1,现在Dilhao想问问你,他最少需要买多少袋强力化肥才能让花田的高度变成单调不减的?

题解:

复制代码
#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)
#define fi 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;
}
复制代码

运行结果:

 

posted @   cszcoder  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示