首页 > 其他分享 >Codeforces Round 957 (Div. 3)

Codeforces Round 957 (Div. 3)

时间:2024-07-12 13:32:57浏览次数:20  
标签:const int res Codeforces 957 long Div define nw

E-Novice's Mistake
题意为寻找n*a-b=("n"+"n"+...){a个n的字符串-b的长度}
即为"2" ⋅20−18="22222222222222222222"−18=22=2⋅20−18
使用暴力枚举每个n相加的长度和 又因为n<=100 a<=100000
所有答案t的值必定小于1e6
所以对每个a进行枚举 对于每个答案t进行判断是否成立
其中如果确定了n,a和t那么b也可以求出
即简单的暴力枚举判断即可

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define pii pair<int,int>
using namespace std;
const int mod=998244353;
const int maxn=500050;
void solve(){
    int n;cin>>n;
    int pw=1;
    int len=to_string(n).size();
    for(int i=1;i<=len;i++)pw*=10;
    vector<int>p;
    int nw=n;
    for(nw=n;nw<=100000000;nw=nw*pw+n);
    while(nw){p.pb(nw),nw/=10;}
    reverse(all(p));
    vector<pii>ans;
    for(int a=1;a<=10000;a++){
        int x=a*n;
        for(auto &t:p){
            if(t>x)break;
            int b=x-t;
            if(len*a-b==to_string(t).size()){
                if(a>0&&b>0)ans.pb({a,b});
            }
        }
    }
    cout<<ans.size()<<'\n';
    for(auto [x,y]:ans){
        cout<<x<<" "<<y<<'\n';
    }
}
signed main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int _=1;
    cin>>_;
    while(_--)solve();
}

F. Valuable Cards 题目为判断每个子段中不能存在几个数的积为x 那么我们将每个x的因数加入 然后判断该子段是否能够将x表出 如果存在 那么对当前数前一个的子段进行切割
点击查看代码
#include<bits/stdc++.h>
#define int long long
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define pii pair<int,int>
using namespace std;
const int mod=998244353;
const int maxn=500050;
void solve(){
    int n,x;cin>>n>>x;
    vector<int>p;
    set<int>s,res;
    for(int i=0;i<n;i++){
        int nw;cin>>nw;
        if(nw==1)continue;
        if(x%nw==0)p.pb(nw);
    }
    int cnt=0;
    s.insert(1),res.insert(1);
    for(auto &t:p){
        res=s;
        for(auto &son:res){
            int nw=son*t;
            if(nw<=x&&x%nw==0)s.insert(nw);
        }
        if(s.count(x)){
            cnt++;
            s.clear();
            s.insert(1);
            s.insert(t);
        }
    }
//    if(s.size())cnt++;
    cout<<cnt+1<<'\n';
}
signed main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int _=1;
    cin>>_;
    while(_--)solve();
}

标签:const,int,res,Codeforces,957,long,Div,define,nw
From: https://www.cnblogs.com/archer233/p/18298185

相关文章

  • CodeForces - 1987F1 & CodeForces - 1987F2
    分析首先显然有dp状态\(g_i\)表示前\(i\)个数,能进行最大的操作次数。转移有\(g_i=\max\limits_{j=1}^{i-1}(g_j+\frac{i-j}{2})[2|(i-j)]\)但这里显然缺少转移条件。经过基本观察,发现若\(i\)操作过,满足条件:\(a_i\equivi(mod\2)\)\(i\)左侧操作过\(\frac{i-......
  • Codeforces Round 957 (Div. 3)
    推荐个C++编程仓库模板https://github.com/yxc-s/programming-templateA.OnlyPluses总结:为什么优先增加最小的数,它们的乘积会是最优的呢?可以这么理解,假如只有两个数a和b,b>a,那么a+1,就增加一份b。如果b+1,只能增加1份a。因为b>a,所以增加小的数是最优的。voidsolve(){......
  • Codeforces Round #956 (Div. 2)题解
    A.ArrayDivisibility需要让满足$k\midj$的所有\(a_j\)的和整除k,只需要让每个\(a_j\)整除k就可以了,可以让\(a_j=j\)#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineendl'\n'typedefpair<int,int>pii;typedefunsignedlonglo......
  • CodeForces - 1986G1 & CodeForces - 1986G2
    经过基本观察,可得当点对\((i,j)\)合法时,有\(a_i|b_j,a_j|b_i\),其中\(a_i=i/gcd(p_i,i),b_i=p_i/gcd(p_i,i)\),证明显然。如何维护?考虑开\(mp_{x,y}\)表示\(x=a_i\),\(y|b_i\)的个数。对于点\(i\)点对个数即为\(\sum\limits_{d|b_i}mp_{d,a_i}\)时间复杂度为\(O(nlog......
  • CodeForces - 1984E
    题目大意每次在每个联通块中选一个点\(u\),删除这个点使得联通块分成若干个联通块,再从联通块中选点\(v\),在新树上连接\(u,v\),求新树叶节点的最大个数。分析易转化为求原树的最大独立集,设\(f_{u,0/1}\)为以1为根时不选/选\(u\)的最大独立集。显然有:\[dp_{u,0}=\sum\li......
  • 高考后第一次Codeforces Round 952 (Div. 4)
    ACreatingWords思路:拿一个容器交换两数值即可#include<bits/stdc++.h>usingnamespacestd;constintN=100001;chara[N],b[N];intmain(){intn;scanf("%d",&n);while(n--){scanf("%s%s",a,b);charjia......
  • 研0 冲刺算法竞赛 day14 P1957 口算练习题
    思路:分别考虑以运算符或数字开头,为运算符,直接读入后面两个数字;为数字,在读入一个数字即可代码:#include<iostream>#include<cstring>#include<cstdio>usingnamespacestd;intmain(){ intN; cin>>N; charc[10],str[55],f; while(N--) { cin>>c; int......
  • div3E. Beautiful Array
    目录E.BeautifulArray原题链接题目思路代码E.BeautifulArray原题链接题目思路代码//https://codeforces.com/contest/1986/problem/E#include<bits/stdc++.h>#definecaseT\intT;\cin>>T;\while(T--)usingnamespacestd;usingll=lo......
  • Codeforces Round 954(Div. 3)
    CodeforcesRound954(Div.3)目录CodeforcesRound954(Div.3)\(C\).UpdateQueries\(D\).MathematicalProblem\(E\).BeautifulArray方法一:贪心+滑动窗口方法二:DP\(C\).UpdateQueries对索引数组\(ind\)去重排序对字符串\(c\)排序顺序遍历索引数组,将\(s[ind[i]......
  • Codeforces Round 916 (Div. 3)
    A.ProblemsolvingLog签到题,对于给出的字符串,记录每个字母出现的次数,然后遍历一遍,如果对应的字母出现的次数大于它的位次,则说明该题被解出来了,最后输出解题数量即可点击查看代码#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<vector>#......