Codeforces Round 918 (Div. 4) A~E

A - Odd One Out

题意:

三个数,两个数相等,输出值只出现过一次的数

思路:

直接判断,easy

代码:

/*
 * @Author       :  
 * @LastEditTime : 2024-01-09 11:00:58
 */
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
#define pi pair<int,int>

void solve(){
    int a,b,c;cin>>a>>b>>c;
    if(a==b) cout<<c<<endl;
    else if(a==c) cout<<b<<endl;
    else cout<<a<<endl;
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int test;
    cin>>test;while(test--)
    solve();
    return 0;
}
B - Not Quite Latin Square

题意:

3个字符串,每行每列必须有A B C各一个自符,9个位置中有个位置呢是?,求出这里因该填什么

思路:

cnt=3('A'=0 'B'-1 'C'-2) vector<string> s(4) 两侧循环(内外层各3次,内层flag判断,如果这层循环结束flag=true 输出char(‘A'+cnt))

!输入(什么数据结构存)+逻辑处理+答案表示输出

代码:

/*
 * @Author       : 
 * @LastEditTime : 2024-01-09 11:16:05
 */
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
#define pi pair<int,int>

void solve(){
    vector<string> s(4);
    for(int i=1;i<=3;i++) cin>>s[i];
    bool flag=false;
    for(int i=1;i<=3;i++){
       int cnt=3;
       for(int j=0;j<3;j++){
          if(s[i][j]!='?') cnt-=s[i][j]-'A';
          if(s[i][j]=='?') flag=true;
       } 
       if(flag==true){
        char ans='A'+cnt;
        cout<<ans<<endl;
        break;
       }
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int test;
    cin>>test;while(test--)
    solve();
    return 0;
}
C - Can I Square?

题意:

判断完全平方数

思路:

sqrt-结果为浮点数 sqrt(9)等于3.000001->sqrt(x)sqrt(x)结果为浮点数(sqrt(3)sqrt(3)!=9)

直接先用int x=sqrt(x) 存起来再判断

代码:

/*
 * @Author       :  
 * @LastEditTime : 2024-01-09 11:25:44
 */
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
#define pi pair<int,int>

void solve(){
    int n;cin>>n;
    int sum=0;
    for(int i=1;i<=n;i++) {
        int x;cin>>x;
        sum+=x;
    }
    int tmp=sqrt(sum);
    if(tmp*tmp==sum) cout<<"yes"<<endl;
    else cout<<"no"<<endl;
    
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int test;
    cin>>test;while(test--)
    solve();
    return 0;
}
D - Unnatural Language Processing

题意:

a,b,c,d,e a,e-V元音 b,c,d-C辅音 规定拼音只有CV或者CVC格式 请将一串长度为n的字符串以上述格式用.隔开

思路:

模拟题。 区别在于是否存在两个连续的辅音。

如果是辅音: 最后一个字符,直接输出; 下一个是辅音,输出s[i]+'.' ;上一个是辅音,输出s[i]; 否则输出'.'+s[i]

如果是元音:直接输出s[i]

代码:

/*
 * @Author       :  
 * @LastEditTime : 2024-01-09 11:50:16
 */
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
#define pi pair<int,int>

void solve(){
    int n;cin>>n;
    string s;cin>>s;
    cout<<s[0]<<s[1];
    for(int i=2;i<n;i++){
        if(s[i]=='b' or s[i]=='c' or s[i]=='d'){
            if(i==n-1) cout<<s[i];
            else if(s[i+1]=='b' or s[i+1]=='c' or s[i+1]=='d'){
                cout<<s[i]<<'.';
            }
            else if(s[i-1]=='b' or s[i-1]=='c' or s[i-1]=='d')cout<<s[i];
            else cout<<'.'<<s[i];
        }
        else cout<<s[i];
    }
    cout<<endl;
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int test;
    cin>>test;while(test--)
    solve();
    return 0;
}
E - Romantic Glasses

题意:

长度为n的字符串,奇数位果汁a喝,偶数位果汁b喝,要求得一个字序列使得a喝的量和b喝的量一样多

思路:

前缀和 s[i]=s[i-1]+(a[i]-奇数 -a[i]-偶数)

答案处理:set存,判断s[i]是否存在,存在输出yes 注意存在0情况!初始set.insert(0)

代码:

/*
 * @Author       : 
 * @LastEditTime : 2024-01-09 16:00:51
 */
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
#define pi pair<int,int>

void solve(){
    int n;cin>>n;
    vector<int> a(n+1),s(n+1,0);
    set<int> tmp;tmp.insert(0); //易错
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) {
        if(i%2) s[i]=s[i-1]+a[i];//易错
        else s[i]=s[i-1]-a[i];
        if(tmp.count(s[i])==0) tmp.insert(s[i]);
        else{
            cout<<"yes"<<endl;
            return;
        }
    }
    cout<<"no"<<endl;
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int test;
    cin>>test;while(test--)
    solve();
    return 0;
}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值