首页 > 其他分享 >Acwing 第 66 场周赛 A-C

Acwing 第 66 场周赛 A-C

时间:2022-08-27 21:57:27浏览次数:55  
标签:周赛 25 int cin solve mp 66 fo Acwing

2A,来晚 + 中间有事,第三题没写,但是写第三题的时候也感觉犯迷糊,读懂题意就好了

A AcWing 4606. 奇偶判断

题意:判断末位是偶数还是奇数

跳过

 

B AcWing 4607. 字母补全

题意:一段包含问号的字符序列,可以将问号改为任何字符,使一段长度为26的区间包括['A','Z']之间的所有字符

挨个遍历,类似滑动窗口,当新的第i 个进入的时候,将i - 26 删除,判断当前段有没有重复的非问号字符,如果没有,说明这一段可以修改

修改方式:把所有的字符存到set,再把已经存在的非问号字符删掉,把每个字符变成set的第一个字符,并删除

//-------------------------代码----------------------------

//#define int ll
const int N = 1e5+10;
int n,m;

    string a;
    
void get(int x) {
    int l = x - 25,r = x;
    set<char> s;
    fo(i,0,25) {
        s.insert('A' + i);
    }
    
    fo(i,l,r) {
        if(s.count(a[i]))
        s.erase(a[i]);
    }
    fo(i,l,r) {
        if(a[i] == '?') {
            a[i] = *s.begin();
            s.erase(s.begin());
        }
    }
}
void solve()
{
    cin>>a;
    map<char,int> mp;
    set<char> q;
    bool ok = 0;
    int dsad  = a.size() - 1;
    for(int i = 0;i<=dsad;i ++ ) {
        mp[a[i]] ++ ;q.insert(a[i]);
        if(i >= 25) {
            if(q.size() == 26 || mp['?'] + q.size() - 1== 26) {
                ok = 1;get(i);
                break;
            }
            else {
                mp[a[i-25]]--;
                if(mp[a[i-25]] == 0) {
                    q.erase(a[i-25]);
                }
            }
        }
    }
    
    if(!ok) {
        None;rt;
    } 
    fo(i,0,dsad) {
        if(a[i] == '?') {
            a[i] = 'A';
        }
    }
    cout<<a<<endl;
}
void main_init() {}
signed main(){
    AC();clapping();TLE;
    cout<<fixed<<setprecision(12);
    main_init();
//  while(cin>>n,n)
//  while(cin>>n>>m,n,m)
//    int t;cin>>t;while(t -- )
    solve();
//    {solve(); }
    return 0;
}

/*样例区


*/

//------------------------------------------------------------

C AcWing 4608. 整数分组

题意:将整数分成两组,每组只出现过一次的数被称为特殊数,问能不能使两组特殊数数量相同,如果相同输出每个数字属于哪一组,(A?B?)

先预处理出所有只出现一次的数字,如果这种数字有偶数个,就一半放在A,剩下的所有数放在B

如果有奇数个,如果剩下的数有数量大于2的,就把这个数放一个在A,剩下的放在B

不然就是“NO”

//-------------------------代码----------------------------

//#define int ll
const int N = 1e5+10;
int n,m;
string s;
void solve()
{
    int n;cin>>n;
    V<int> v(n);
    int cnt = 0;
    map<int,int> mp;
    fo(i,0,n-1) {
        cin>>v[i];
        mp[v[i]] ++ ;
        if(mp[v[i]] == 1) cnt ++ ;
        else if(mp[v[i]] == 2) cnt -- ;
    }
    if(cnt % 2 == 0) {
        int x = cnt / 2;
        fo(i,0,n-1) {
            if(x!= 0 && mp[v[i]] == 1) {
                s += 'A';
                x -- ;
            } else s += 'B';
        }
        cout<<"YES"<<endl;
        cout<<s<<endl;
    } else {
        int num = -1;
        for(auto it:mp) {
            if(it.second > 2) {
                num = it.first;
                break;
            }
        }
        if(num == -1) {
            cout<<"NO"<<endl;
        } else {
            int x = cnt / 2;
            fo(i,0,n-1) {
                if(x!= 0 && mp[v[i]] == 1) {
                    s += 'A';
                    x -- ;
                } else if(num != -1 && num == v[i]) {
                    s += 'A';
                    num = -1;
                } else s += 'B';
            } 
            cout<<"YES"<<endl;
            cout<<s<<endl;
        }
    }
}
void main_init() {}
signed main(){
    AC();clapping();TLE;
    cout<<fixed<<setprecision(12);
    main_init();
//  while(cin>>n,n)
//  while(cin>>n>>m,n,m)
//    int t;cin>>t;while(t -- )
    solve();
//    {solve(); }
    return 0;
}

/*样例区


*/

//------------------------------------------------------------

 

标签:周赛,25,int,cin,solve,mp,66,fo,Acwing
From: https://www.cnblogs.com/er007/p/16631581.html

相关文章

  • 第 66 场周赛 ABC
    A-奇偶判断#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PII;constLLN=200200;LLa[N],b[N];#definexfirst#defi......
  • 2022网鼎杯网鼎杯web669wp
    大致思路:1.任意文件读取2.session伪造3.untar目录穿越,任意文件写4.yaml反序列化5.sudidd提权任意文件读取题目代码importosimportreimportyamlimporttime......
  • 战66 WIN11 亮度热键 快捷键无效
    型号:HPZHAN66ProA14G3。用FN调节音量是正常的,唯独亮度无效。 参考:怎样调节笔记本电脑屏幕亮度(惠普笔记本亮度调节快捷键失灵)|说明书网(shuomingshu.cn)。打......
  • NC16663 合并果子
    题目原题地址:合并果子题目编号:NC16663题目类型:队列、堆时间限制:C/C++1秒,其他语言2秒空间限制:C/C++131072K,其他语言262144K1.题目大意n堆果子,需要两两合并直至......
  • AcWIng 86. 分隔链表
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListN......
  • CF1066C 题解
    前言题目传送门!更好的阅读体验?本题是简单的双端队列练手题。思路题意大致如下:执行双端队列push_front()操作。执行双端队列push_back()操作。查询\(\min\{m......
  • NC14661 简单的数据结构
    题目原题地址:简单的数据结构题目编号:NC14661题目类型:双端队列时间限制:C/C++1秒,其他语言2秒空间限制:C/C++131072K,其他语言262144K1.题目大意双端队列的应用2.......
  • 做题记录:P3166 [CQOI2014]数三角形
    题目链接题意:给定 (n+1)(m+1)(n+1)(m+1) 个点的网格图,任意投三个点,求三角形的个数。首先,不考虑三点共线的情况,方案数可以很轻松的得出来。在 (n+1)(m+1)(n+1)(m+1) ......
  • 可信计算学习笔记 - 服务器可信支撑平台【GB/T 36639-2018】
    服务器可信支撑平台主要由物理可信根、可信基础组件和虚拟可信组件等部分组成根据服务器软硬件组成的不同,服务器可信支撑平台包含的部分也不同服务器硬件系统:应包......
  • 【luogu AT2366】Prefix Median(DP)
    PrefixMedian题目链接:luoguAT2366题目大意给你一个长度为2n-1的序列,你可以任意排序它们,问你有多少个不同的b数组。b数组的第i位为a数组1~2i-1区间的数的......