首页 > 其他分享 >【CodeForces训练记录】Codeforces Round 991 (Div. 3)

【CodeForces训练记录】Codeforces Round 991 (Div. 3)

时间:2024-12-08 14:13:27浏览次数:4  
标签:991 int Codeforces long CodeForces solve return 数位 define

训练情况

赛后反思

打到D题摆了,连续两道数位的智慧题?可能我比较缺观察

A题

记录一下字符串的长度,能塞到第一行的尽量塞到第一行。

#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    int n,m; cin>>n>>m;
    vector<string> s(n + 1);
    for(int i = 1;i<=n;i++) cin>>s[i];
    int now = 0;
    for(int i = 1;i<=n;i++){
        if(now + s[i].size() <= m) now += s[i].size();
        else {
            cout<<i-1<<endl;
            return;
        }
    }
    cout<<n<<endl;
}

signed main(){
    int T; cin>>T; while(T--)
    solve();
    return 0;
}

B题

奇数位置+1 -1,偶数位置+1 -1,我们发现无论如何操作,奇数位和偶数位上的总和都是不变的,所以我们只需要判断奇数位和偶数位能否均摊成对应的长度即可。

#include <bits/stdc++.h>
#define int long long
#define endl '\n'

using namespace std;

void solve(){
    int n; cin>>n;
    vector<int> a(n + 1);
    for(int i = 1;i<=n;i++) cin>>a[i];
    int ans1 = 0,ans2 = 0;
    for(int i = 1;i<=n;i++){
        if(i&1) ans1 += a[i];
        else ans2 += a[i];
    }
    int ji = (n+1)/2;
    int ou = n - ji;
    if(ans1%ji==0&&ans2%ou==0&&ans1/ji==ans2/ou) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}

signed main(){
    int T; cin>>T; while(T--)
    solve();
    return 0;
}

C题

显然,是 \(9\) 的倍数,必须所有数位的和都是 \(9\) 的倍数,对答案有贡献的只有数位 \(2\) 和数位 \(3\),他们对答案的贡献分别是 \(2\) 和 \(6\),所以我们只需要统计字符串中数位 \(2,3\) 出现的次数,再判断贡献是否能将数位和变成 \(9\) 的倍数。

#include <bits/stdc++.h>
#define int long long
#define endl '\n'

using namespace std;

void solve(){
    string s; cin>>s;
    int ans = 0;
    for(int i = 0;i<s.size();i++) ans += s[i] - '0';
    if(ans%9==0){
        cout<<"YES"<<endl;
        return;
    }
    int two = 0,three = 0;
    for(int i = 0;i<s.size();i++){
        if(s[i] == '3') three++;
        else if(s[i] == '2') two++;
    }
    int now = 9-ans%9;
    bool flag = false;
    for(int i = 0;i<=three;i++){
        if(i*6 > 18) break;
        for(int j = 0;j<=two;j++){
            if(i*6+j*2>18) break;
            if(i*6 + j*2 == now) flag = true;
            if(i*6 + j*2 == now+9) flag = true;
        }
    }
    if(flag) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}

signed main(){
    int T; cin>>T; while(T--)
    solve();
    return 0;
}

标签:991,int,Codeforces,long,CodeForces,solve,return,数位,define
From: https://www.cnblogs.com/longxingx/p/18593354

相关文章

  • Codeforces Round 991 (Div. 3)
    CodeforcesRound991(Div.3)2024.12.6rank1559rating1314->1381A模拟B给定一数组,你可以任意操作:a[i-1]+1&&a[i+1]-1或者a[i-1]-1&&a[i+1]+1。问是否可以使数组全为相同的数字。C给定一大数,可任意将2->4,3->9,问是否可被9整除。D给定一大数,你可任意操作:将某......
  • Codeforces Round 991 (Div. 3)
    CodeforcesRound991(Div.3)2024.12.6rank1559rating1314->1381A模拟B给定一数组,你可以任意操作:a[i-1]+1&&a[i+1]-1或者a[i-1]-1&&a[i+1]+1。问是否可以使数组全为相同的数字。C给定一大数,可任意将2->4,3->9,问是否可被9整除。D给定一大数,你可任意操作......
  • Codeforces Round 991 (Div. 3)
    复盘ing,b题由于细节wa许久,a题又是熟悉的逻辑错误,c题倒是相对轻松地ac了,d题两小时甚至来不及看......复盘后觉得d题有可做空间,随缘更新吧......
  • Educational Codeforces Round 157 (Rated for Div2)
    EducationalCodeforcesRound157(RatedforDiv.2)Problem-A-Codeforces构造签到题没啥好说的#include<bits/stdc++.h>usingnamespacestd;constintN=2e5+10;typedefpair<int,int>pii;voidsolve(){ intx,y,k;cin>>x>>y>>k; if(x......
  • Codeforces Round 991 (Div. 3) G(补题)
    G-TreeDestruction Code:#include<bits/stdc++.h>usingnamespacestd;typedefint64_ti64;constintN=2e5+5;vector<int>adj[N];intdp[N],ans=0,n;voiddfs(intfrom,intfa){dp[from]=adj[from].size();ans=max......
  • 【滑动窗口】codeforces 1290 A. Mind Control
    题意第一行输入一个正整数\(T(1\leqT\leq1000)\),表示共有\(T\)组测试用例。对于每一组测试用例:第一行输入三个正整数\(n,m,k(1\leqm\leqn\leq3500,0\leqk\leqn-1)\),且保证\(n\)之和不超过\(3500\),第二行输入\(n\)个整数\(a_i(1\leqa_i\leq10^9......
  • codeforces Round 971 div4
    A.Minimize!给你两个整数$$$a$$$和$$$b$$$($$$a\leqb$$$)。在$$$c$$$($$$a\leqc\leqb$$$)的所有可能整数值中,求(c-a)+(b-c)$$$的最小值。题目问(c-a)+(b-c)的最小值,由于c在a到b之间所以只需枚举a到b的每一个数来寻找最小值````#include<iostream>#i......
  • Educational Codeforces Round 80 (Rated for Div2)
    EducationalCodeforcesRound80(RatedforDiv.2)-CodeforcesProblem-A-Codeforces数学双钩函数,直接显然极值点是\(\sqrt{d}-1\),但要注意取整的时候可能存在偏差,暴力搜索一下附近的值就好了#include<bits/stdc++.h>usingnamespacestd;voidsolve(){ intn,d;......
  • Codeforces Round 990 (Div. 2) 题解 (A ~ E)
    A.AlyonaandaSquareJigsawPuzzle模拟即可#include<bits/stdc++.h>usingi64=longlong;voidsolve(){ intn;std::cin>>n; intcur=0; intans=0; for(inti=0,j=1;i<n;i++) { intx;std::cin>>x; cur+=x; ......
  • Educational Codeforces Round 172 (Rated for Div. 2)(A~D)
    比赛链接:https://codeforces.com/contest/2042这场爆了,卡死在C题了,QWQ.卡题得跳题啊!!!A.GreedyMonocarp题面:有\(n\)个箱子,第\(i\)个箱子最初包含\(a_i\)枚硬币。对于每个箱子,你可以选择任意非负数(0或更大)的硬币添加到该箱子中,有一个约束条件:所有箱子中的硬币总数必须变......