首页 > 其他分享 >Hello 2023

Hello 2023

时间:2023-01-04 12:01:16浏览次数:58  
标签:cout int ++ cin -- solve 2023 Hello

Hello 2023 A-D

https://codeforces.com/contest/1779
后面的还没看

A. Hall of Fame

LR->RL,修改一个即可覆盖全部

#include <bits/stdc++.h>

using namespace std;

void solve () {
    int n;
    string s;
    cin >> n >> s;
    int cnt1 = count (s.begin (), s.end (), 'L'), cnt2 = count (s.begin (), s.end (), 'R');
    if (!cnt1 || !cnt2)     cout << -1 << endl;
    else {
        int cnt = 0, ans = 0; //LR->RL
        for (int i = 1; i < n; i++) {
            if (s[i] == 'R' && s[i-1] == 'L') {
                cnt ++;
                cout << i << endl;
                return ;
            }
        }
        if (cnt) cout << "-1\n";
        else    cout << "0\n";
    }
}

int main () {
    int t;
    cin >> t;
    while (t --)    solve ();
}

B. MKnez's ConstructiveForces Task

构造,偶数长度可使总和为 \(0\),奇数长度可使总和为 \(-1\):

\[-1=(\frac n2 + 1)\times(\frac n2 -1) - \frac n2\times\frac n2 \]

#include <bits/stdc++.h>

using namespace std;

void solve () {
    int n;
    cin >> n;
    if (n & 1) {
        if (n == 3)     cout << "NO\n";
        else {
            cout << "YES\n";
            for (int i = 0; i < n / 2; i++)     cout << n / 2 - 1 << ' ' << -1 * n / 2 << ' ';
            cout << n / 2 - 1;
            cout << endl;
        }
    }
    else {
        cout << "YES\n";
        for (int i = 0; i < n / 2; i++)     cout << "1 -1 ";
        cout << endl;
    }
}

int main () {
    int t;
    cin >> t;
    while (t --)    solve ();
}

C. Least Prefix Sum

#include <bits/stdc++.h>
#define int long long

using namespace std;
const int N = 2e5 + 5;
int a[N], n, m;

void solve () {
    cin >> n >> m;
    for (int i = 1; i <= n; i++)    cin >> a[i];
    if (n == 1) {
        cout << 0 << endl;
        return ;
    }
    
    //从m往两头出发,小于0就修正
    int ans = 0, sum = 0;
    priority_queue <int, vector<int>, greater<int>> q; //小
    for (int i = m + 1; i <= n; i++) {
        sum += a[i];
        q.push (a[i]);
        if (sum < 0) {
            auto it = q.top ();
            q.pop ();
            ans ++;
            sum += -2 * it;
        }
    }
       
    sum = 0;
    priority_queue<int> p; //大
    for (int i = m; i > 1; i--) {
        sum += a[i];
        p.push (a[i]);
        if (sum > 0) {
            auto it = p.top ();
            p.pop ();
            ans ++;
            sum += -2 * it;
        }
    }

    cout << ans << endl;
}

signed main () {
    int t;
    cin >> t;
    while (t --)    solve ();
}

//应该贪心改

D. Boris and His Amazing Haircut

ST表查找区间最小值

#include <bits/stdc++.h>

using namespace std;
const int N = 2e5 + 5;
int a[N], b[N], n, m;
int f[N][21], Log2[N];

void pre() {  // 准备工作,初始化
    for (int i = 2; i <= N; ++i)    Log2[i] = Log2[i / 2] + 1;
}

void build() {
    for (int i = 1; i <= n; i++)    f[i][0] = b[i];
    for (int i = 1; i <= 20; ++i) {
        for (int j = 1; j + (1 << i) - 1 <= n; ++j) {
            f[j][i] = max(f[j][i - 1], f[j + (1 << (i - 1))][i - 1]);
        }
    }
}

int query(int L, int R) {
    int len = Log2[R - L + 1];
    return max(f[L][len], f[R - (1 << len) + 1][len]);
}

void solve () {
    cin >> n;
    for (int i = 1; i <= n; i++)    cin >> a[i];
    for (int i = 1; i <= n; i++)    cin >> b[i];
    build ();
    cin >> m;
    map<int, int> cnt;
    while (m --) {
        int x;  cin >> x;
        cnt[x] ++;
    }
    
    map<int, vector<int>> pos;
    for (int i = 1; i <= n; i++) {
        if (b[i] > a[i]) {
            puts ("NO");
            return ;
        }
        if (b[i] < a[i])    pos[b[i]].push_back (i);
    }

    //for (auto i = s.rbegin (); i != s.rend (); i++)    cout << *i << ": " << L[*i] << ' ' << R[*i] << endl;   cout << endl;
    for (auto pii : pos) {
        vector <int> v = pii.second;
        int cur = pii.first, need = v.size ();
        for (int i = 1; i < v.size (); i++) {
            if (query (v[i-1], v[i]) <= cur)    need --; //省下一个刀片
        }
        if (need > cnt[cur]) {
            puts ("NO");
            return ;
        }
    }
    puts ("YES");
}

int main () {
    ios::sync_with_stdio (0);cin.tie (0);cout.tie (0);
    pre ();
    int t;
    cin >> t;
    while (t --)    solve ();
}

//ST表查找区间最小值

标签:cout,int,++,cin,--,solve,2023,Hello
From: https://www.cnblogs.com/CTing/p/17024373.html

相关文章

  • 2022再也不见,2023温柔以待!
    引用007电影里面的一句经典台词:世事难以预料啊。 一、5年的感情修炼,遗憾未能正果!  16年和她相识相知,那会儿她刚高考完,我已经是大学毕业工作了5年的中年大哥。从开着......
  • 2023/1/3
    好多天没更了...第三题卡住了,头大,不知道报告怎么写了...z3总要出来些奇奇怪怪的东西去攻防世界找了道菜鸡题,拿了一分,感觉还不错先搞点菜鸟网站找找自信吧...汇编嘛,还......
  • 2023.1.3
    本来今天是不想写得,但是明天不练车,所以说还是写了吧,嘿嘿。碎碎念:今天阳光明媚,心情很不错!去办理身份证,非常顺利,拍身份证之前洗了一把脸,冲拍照的小哥哥要的卫生纸,最后扔垃圾没......
  • 工作感受月记202301月
     2023年01月03日新年来了,新的工作态度呢?积极向上,好好学习。努力就能成功,坚持就是胜利。今天工作内容有:1/清理手中旧案例,跟进后,可以关闭两个。2/完成与Lucas的gi......
  • 1.2 SMU Winter 2023 蓝桥杯模拟赛 1
    [蓝桥杯2013省B]带分数题意:给n,使满足式子a+b/c=n,其中a,b,c共同恰好由1,2...9组成,求a,b,c的取值种数思路1:枚举出9个数的全排列(可使用next_permutation()),再用两重循环暴......
  • 2023年春季
    2023年1月第一周:1.3-1.62023年1月3日周二​​​​​​​​​​​记录闪现的灵感INSPIRATIONS​​​​​​​​​​​1、​​​​​​​​​​​本周书单  BOOKS......
  • 20230102用户生命周期模型
    一、目的用户生命周期本质是管理用户价值,基于用户生命周期制定策略提升用户在平台贡献的价值,价值主要体现:让新用户成长为成长用户,成长用户成长为成熟用户,不断提升每个......
  • 2023富而喜悦新品——青少年沙盘上市送好礼!
    1月1日网讯:2023年首日的举办的富而喜悦一年一渡新年主题直播盛典暨冬季新品发布,正如火如荼的进行中,据富而喜悦品牌创始人、财富流沙盘创作人唐乾九先生透露,今年我们给大家带......
  • 2023富而喜悦一年一渡直播盛典!全球分会场燃动元旦!
    1月1日网讯,第二首富而喜悦一年一渡新年主题直播盛典于今日上午11:11分开幕,来自全球数十个分会场用属于自己的方式表达了对富而喜悦一年一渡活动的热爱,尤其是“台湾”分会场!你......
  • 2023年春节放假通知
    新年的钟声悄然敲响是游子归乡的时节,是合家团圆的美满还有甜甜蜜蜜的暖心时刻将新春佳节化作更喜乐的时光​根据国务院办公厅放假规定,并结合公司实际情况,现将放假安排通知如......