CF550

CF550A

先find AB 替换一下 再找 BA
然后 两个串反过来再判一次即可

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inl inline
#define endl '\n'
#define gc cin.get
#define pc cout.put
const int N=2e6+5;
const int M=1e7+5;
const int inf=0x3f3f3f3f;
const int mod=998244353;
inl ll read(){
    ll x=0,f=1;char c=gc();
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=gc();}
    while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=gc();}
    return x*f;
}
inl void write(int x){
    if(x<0){pc('-');x=-x;}
    if(x>9)write(x/10);
    pc(x%10+'0');
}
inl void writei(int x){write(x);pc(' ');}
inl void writel(int x){write(x);pc('\n');}
int n,m,flag1,flag2;
string s;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>s;
    int x=s.find("BA");
    if(x!=-1){
        string t=s;
        t.replace(x,2,"kkksc03");
        int y=t.find("AB");
        if(y!=-1){cout<<"YES"<<endl;return 0;}
    }
    x=s.find("AB");
    if(x!=-1){
        s.replace(x,2,"kkksc03");
        int y=s.find("BA");
        if(y!=-1){cout<<"YES"<<endl;return 0;}
    }
    cout<<"NO"<<endl;
    return 0;
}

CF550B

注意到 \(n\le 15\) 那么直接爆搜。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inl inline
#define endl '\n'
#define gc cin.get
#define pc cout.put
const int N=2e6+5;
const int M=1e7+5;
const int inf=0x3f3f3f3f;
const int mod=998244353;
inl ll read(){
    ll x=0,f=1;char c=gc();
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=gc();}
    while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=gc();}
    return x*f;
}
inl void write(int x){
    if(x<0){pc('-');x=-x;}
    if(x>9)write(x/10);
    pc(x%10+'0');
}
inl void writei(int x){write(x);pc(' ');}
inl void writel(int x){write(x);pc('\n');}
int n,l,r,x,c[N],ans;
inl void dfs(int k,int sum,int mi,int ma){
    if(k>n){
        ans+=(ma-mi>=x&&l<=sum&&sum<=r);
        return;
    }
    dfs(k+1,sum,mi,ma);
    dfs(k+1,sum+c[k],mi?min(mi,c[k]):c[k],ma?max(ma,c[k]):c[k]);
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    n=read();l=read();r=read();x=read();
    for(int i=1;i<=n;i++)c[i]=read();
    dfs(1,0,0,0);
    cout<<ans<<endl;
    return 0;
}

CF550C

差点被橙题创飞
要求选出来的数为8的倍数 由小学奥数可知1000为8的倍数
所以最多选3位数 多的一定没用
\(n^3\) 暴力判即可

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inl inline
#define endl '\n'
#define gc cin.get
#define pc cout.put
const int N=2e6+5;
const int M=1e7+5;
const int inf=0x3f3f3f3f;
const int mod=998244353;
inl ll read(){
    ll x=0,f=1;char c=gc();
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=gc();}
    while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=gc();}
    return x*f;
}
inl void write(int x){
    if(x<0){pc('-');x=-x;}
    if(x>9)write(x/10);
    pc(x%10+'0');
}
inl void writei(int x){write(x);pc(' ');}
inl void writel(int x){write(x);pc('\n');}
int n;
string s;
inl int num(char c){return c-'0';}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(!num(s[i])||num(s[i])==8){
            cout<<"YES"<<endl<<num(s[i])<<endl;
            return 0;
        }
        for(int j=i+1;j<s.size();j++){
            if((num(s[i])*10+num(s[j]))%8==0){
                cout<<"YES"<<endl<<num(s[i])<<num(s[j])<<endl;
                return 0;
            }
            for(int k=j+1;k<s.size();k++){
                if((num(s[i])*100+num(s[j])*10+num(s[k]))%8==0){
                    cout<<"YES"<<endl<<num(s[i])<<num(s[j])<<num(s[k])<<endl;
                    return 0;
                }
            }
        }
    }
    cout<<"NO"<<endl;
    return 0;
}

CF550D

神奇构造。
要求无向图所有点度数为 \(k\) 并要求存在桥
\(k\) 为偶数时 图中一定存在欧拉回路 没有割边 无解
\(k\) 为奇数时 以桥为界把图分成完全相同的两部分
对于每部分 设点数为 \(2k-1\) 分成三部分: \(k-1\) \(k-1\) \(1\)
前两部分要求度数 \(k\) ,剩下一个点度数 \(k-1\) 连割边
第一部分向第二部分两两连边 然后第一部分编号奇数和偶数连边 这样第一部分就完事了
对于第二部分 每个点再向最后一个点连边 这样就完事了

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inl inline
#define endl '\n'
#define gc cin.get
#define pc cout.put
const int N=2e6+5;
const int M=1e7+5;
const int inf=0x3f3f3f3f;
const int mod=998244353;
inl ll read(){
    ll x=0,f=1;char c=gc();
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=gc();}
    while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=gc();}
    return x*f;
}
inl void write(int x){
    if(x<0){pc('-');x=-x;}
    if(x>9)write(x/10);
    pc(x%10+'0');
}
inl void writei(int x){write(x);pc(' ');}
inl void writel(int x){write(x);pc('\n');}
int n,k;
vector<pair<int,int>>v;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    k=read();
    if(!(k&1)){cout<<"NO"<<endl;return 0;}
    for(int i=1;i<=k-1;i+=2)v.push_back({i,i+1});
    for(int i=1;i<=k-1;i++)
        for(int j=1;j<=k-1;j++)
            v.push_back({i,k-1+j});
    for(int j=1;j<=k-1;j++)v.push_back({k-1+j,k*2-1});
    cout<<"YES"<<endl<<4*k-2<<' '<<k*(2*k-1)<<endl;
    for(auto i:v)cout<<i.first<<' '<<i.second<<endl;
    for(auto i:v)cout<<i.first+2*k-1<<' '<<i.second+2*k-1<<endl;
    cout<<k*2-1<<' '<<k*4-2<<endl;
    return 0;
}
posted @ 2023-12-08 11:06  xiang_xiang  阅读(2)  评论(0编辑  收藏  举报