您当前的位置: 首页 > 

HeartFireY

暂无认证

  • 1浏览

    0关注

    334博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[GYM103660] The 19th Zhejiang University City College Programming Contest 浙大城市学院校赛VP/S

HeartFireY 发布时间:2022-07-16 14:20:58 ,浏览量:1

后面俩小时吃饭睡觉去了…

ABCDEFGHIJKLACACAC补补ACACACACAC–AC GYM103660A.Who is The 19th ZUCCPC Champion 题目思路

拼手速

Code
print("Monster Tower")
GYM103660B.Jiubei and Overwatch 题目思路

伤害为群体伤害,因此直接找到最大值讨论即可。

Code
#include 
#define int long long
#define endl '\n'
using namespace std;

const int N = 1e5 + 10;
int a[N], s[N];

inline void solve(){
    int n, k, x, y; cin >> n >> k >> x >> y;
    for(int i = 1; i > a[i];
    int maxx = *max_element(a + 1, a + 1 + n), ans = 0;
    if(k * x >= maxx) {
        ans = maxx / x + (maxx % x == 0 ? 0 : 1);
    } else {
        maxx -= k * x;
        ans = k + maxx / y + (maxx % y == 0 ? 0 : 1);
    }
    cout  n;
    for(int i = n; i >= 1; i--) cout  n; ans = 0;
    for(int i = 1; i  u >> v;
        g[u].emplace_back(v);
        g[v].emplace_back(u);
    }
    dfs(1, 0);
    int path = ((n * (n + 1)) / 2) % MOD, all = ((path * (path + 1)) / 2) % MOD;
    ans = ((all - ans) % MOD + MOD) % MOD;
    cout  n >> k;
    if(k == 0) cout > c[i] >> d[i];
    for(int i = 1; i > w[i];
    auto calc = [&](){
        p[n] = lines[n].w;
        for(int i = n - 1; i >= 1; --i) p[i] = max(p[i + 1], lines[i].w);
        for(int i = 1; i  r;
        if(r  rightq.top()){
            ans += l - rightq.top();
            leftq.emplace(rightq.top()); rightq.pop();
            rightq.emplace(l), rightq.emplace(r);
        } else {
            leftq.emplace(l), rightq.emplace(r);
        }
        cout  \sum^r_{i = l}b_i 
       
      
    ∑i=lr​ai​>∑i=lr​bi​。

考虑合法的方案:令 c i = a i − b i c_i = a_i - b_i ci​=ai​−bi​,显然满足区间 ∑ a i > ∑ b i \sum a_i > \sum b_i ∑ai​>∑bi​即满足 ∑ c i > 0 \sum c_i > 0 ∑ci​>0。不妨对 c [ ] c[] c[]做前缀和,得到前缀和数组 d [ i ] d[i] d[i],于是满足条件的区间 [ l , r ] [l, r] [l,r]变为 d [ r ] − d [ l ] > 0 d[r] - d[l] > 0 d[r]−d[l]>0即为 d [ r ] ≥ d [ l ] d[r] \geq d[l] d[r]≥d[l]。所以问题可以转化为对 d [ ] d[] d[]求最长上升子序列的长度。

Code
#include 
#define int long long
#define endl '\n'
using namespace std;

const int N = 6e3 + 10;
int a[N], b[N], c[N], dp[N];

inline void solve(){
    int n = 0; cin >> n;
    memset(dp, 0, sizeof(dp));
    for(int i = 1; i > a[i];
    for(int i = 1; i > b[i];
    for(int i = 1; i             
关注
打赏
1662600635
查看更多评论
0.0412s