CF Round #629

CF Round #629

A.数学

给定a,b,现在问你最小让a加多少使得a能被b整除,可以为0

即算(b-(a%b))%b

B.数学

给定n和k

问以n-2个a和2个b组成的串中,以字典序升序排列,问第k个是几

这个有点类似康托展开,这个简化了很多

首先考虑第一个b,它处在从左往右数第p位,那么无论第二个b怎么放,它最大是(p-1)*p/2

所以只要找到第一个b为u,第二个b从u-1开始,每往后移一位就小一,找k即可

C.数学

给定n和x

x是一串开头必为2,由0,1,2组成的字符串,一共有n位

现在给定一种计算

类似于异或,只不过它mod3

现在问a与b为多少,使得他们进行上述运算得到x,并且max{a,b}最小

解法:

对于a,b而言,为了使他们尽可能的小,则要使得他们相同位上和不能超过3

那么问题就变得简单了

如果没有遇到1,那么a,b将0,2平分,一旦遇到了1,那么a给他1,b给他0,为了使之最小,把x剩下的位全部都塞给b即可

AC:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
using namespace std;
#define INF 1e10+5
#define maxn 105
#define minn -105
#define ll long long int
#define ull unsigned long long int
#define uint unsigned int
#define re register
inline int read()
{
	re int t=0;
	re char v=getchar();
	while(v<‘0‘)v=getchar();
    while(v>=‘0‘)
    {
        t=(t<<3)+(t<<1)+v-48;
        v=getchar();
    }
    return t;
}
void solve()
{
    string s;
    ll n;
    cin>>n>>s;
    string s1,s2;
    bool ok=0;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]==‘2‘&&!ok)
        {
            s1=s1+"1";
            s2=s2+"1";
            continue;
        }
        if(s[i]==‘2‘&&ok)
        {
            s2=s2+"2";
            s1=s1+"0";
            continue;
        }
        if(s[i]==‘1‘&&!ok)
        {
            s1=s1+"1";
            s2=s2+"0";
            ok=1;
            continue;
        }
        if(s[i]==‘1‘&&ok)
        {
            s1=s1+"0";
            s2=s2+"1";
            continue;
        }
        s1=s1+"0";
        s2=s2+"0";
    }
    cout<<s1<<endl;
    cout<<s2<<endl;
}
int main()
{
    int t;
    cin>>t;
    for(int i=0;i<t;i++)
    {
        solve();
    }
    return 0;
}

D.模拟

题意:

给定一个环,上面有不同的数

你现在要用k种颜色对他们染色,使得相邻的两个不同数他们染得色不一样

输出最小的k,并且输出染色方案(方案i用i表示,从1开始)

思路:

首先,如果全体一样,那么显然染成一种即可

如果,至少有两种数,并且如果总个数为偶数个,那么1 2交替染即可

如果有奇数个,考虑有没有连续出现的相同的,若有,让他们染一样的,其他照样交替染(注意特例:首尾要特判,可以写在上面那个分类里面)

最后上面什么情况都不满足,那么就是染成三种

1212交替最后一个是3即可

AC:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define INF 1e10+5
#define maxn 200005
#define minn -105
#define ll long long int
#define ull unsigned long long int
#define uint unsigned int
#define re register
int a[maxn];
inline int read()
{
    re int t=0;
    re char v=getchar();
    while(v<‘0‘)v=getchar();
    while(v>=‘0‘)
    {
        t=(t<<3)+(t<<1)+v-48;
        v=getchar();
    }
    return t;
}
void solve()
{
    int n;
    bool ok=0;
    int exist=0;
    n=read();
    for(int i=0;i<n;i++)
    {
        a[i]=read();
        if(i&&a[i]!=a[i-1])ok=1;
        if(i&&a[i]==a[i-1])exist=i;
    }
    if(!ok)
    {
        cout<<1<<endl;
        for(int i=0;i<n;i++)
        {
            cout<<1<<" ";
        }
        cout<<endl;
        return;
    }
    if((!(n&1))||a[0]==a[n-1])
    {
        cout<<2<<endl;
        for(int i=0;i<n;i++)
        {
            if(i&1)cout<<1<<" ";
            else cout<<2<<" ";
        }
        cout<<endl;
        return;
    }
    if(!exist)
    {
        cout<<3<<endl;
        for(int i=0;i<n-1;i++)
        {
            if(i&1)cout<<1<<" ";
            else cout<<2<<" ";
        }
        cout<<3;
        cout<<endl;
        return;
    }
    cout<<2<<endl;
    n-=1;
    for(int i=0;i<n;i++)
    {
        if(i+1==exist)
        {
            if(i&1)cout<<"1 1 ";
            else cout<<"2 2 ";
            continue;
        }
        if(i&1)cout<<1<<" ";
        else cout<<2<<" ";
    }
    cout<<endl;
}
int main()
{
    int t;
    cin>>t;
    for(int i=0;i<t;i++)
    {
        solve();
    }
    return 0;
}

原文地址:https://www.cnblogs.com/et3-tsy/p/12587813.html

时间: 2024-10-10 21:29:45

CF Round #629的相关文章

CF Round 594

CF Round 594(Div1) (A~D)简要题解 开学基本打不了cf了啊.. A Ivan the Fool and the Probability Theory 对于 $ 1 \times n $ 的情况,稍微推一推式子发现是斐波那契数列的两倍(因为第一个位置可以是0可以是1,就是两倍了,否则是一倍). 考虑第一行,第一行有两种情况: 如果第一行是 01010... 交错的,那么 0 开头可以看成一种颜色,1 开头可以看成一种颜色.然后就成了一个竖着的 $ 1 \times n $ 的

cf Round#273 Div.2

题目链接,点击一下 Round#273 Div.2 ================== problem A Initial Bet ================== 很简单,打了两三场的cf第一次在10分钟内过题 判平均数,且注意b为正 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int res = 0,n; 6 for(int i = 0; i < 5; i++) 7 { 8 cin>>

【codeforces】【比赛题解】#915 Educational CF Round 36

虽然最近打了很多场CF,也涨了很多分,但是好久没写CF的题解了. 前几次刚刚紫名的CF,太伤感情了,一下子就掉下来了,不懂你们Div.1. 珂学的那场我只做了第一题--悲伤. 这次的Educational Round打的还可以,虽然吧没有涨分(因为我是紫色的啊). 做了前4题,后面3题也比较简单,陆续也做完了. 所以心情好,来写一篇题解! [A]花园 题意: 长度为\(k\)的线段,用若干个长度为\(a_i\)的线段,正好覆盖.(\(a_i|k\)) 给定\(n\)个\(a_i\),求出最小的\

Codeforces Round #629 (Div. 3) D. Carousel(思维/贪心?)

The round carousel consists of nn figures of animals. Figures are numbered from 11 to nn in order of the carousel moving. Thus, after the nn -th figure the figure with the number 11 follows. Each figure has its own type — the type of the animal corre

【codeforces】【比赛题解】#854 CF Round #433 (Div.2)

cf一如既往挺丧 看丧题点我! [A]分数 Petya是数学迷,特别是有关于分数的数学.最近他学了所谓一个分数被叫做"真分数"当且仅当其分子小于分母,而一个分数被叫做"最简分数"当且仅当其分子分母互质.在闲暇时间,Petya在用计算器研究:如何把最简真分数转换为小数等问题.有一天他不小心把除号(÷)按成了加号(+),导致他得到了分子与分母的和.Petya想要得到他原来的分数,但他很快发现这不是唯一的.所以现在他想要知道最大的最简真分数使得其分子与分母的和为n. 输入

cf Round 613

A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个点距离多边形边缘最远的距离形成的圆面积减去这个点距离多边形边缘最近的距离形成的圆面积.我们可以得出距离最远的点一定是多边形的顶点.而距离最近的点不一定是多边形的顶点,但是在多边形的边上.我们用勾股定理判断点与每条边形成的三角形的两边角.如果有一个边角是钝角,则表示距离最近的点是顶点.如果都是锐角,则

【codeforces】【比赛题解】#849 CF Round #431 (Div.2)

cf的比赛越来越有难度了--至少我做起来是这样. 先看看题目吧:点我. 这次比赛是北京时间21:35开始的,算是比较良心. [A]奇数与结束 "奇数从哪里开始,又在哪里结束?梦想从何处起航,它们又是否会破灭呢?" 给定一个长度为n的序列.确定能不能将序列分成奇数个长度为奇数的非空字串,而且这其中每个子串以奇数开头,以奇数结尾.可以只分成一个(1也是奇数). 输入 第一行一个正整数n,表示序列长度. 第二行n个整数,表示序列中的元素. 输出 输出"Yes"或"

CF Round #631 题解

\(Codeforces\) \(Round\) \(631\) A.Dreamoon and Ranking Collection 题目大意: \(n\)轮比赛,每轮比赛排名已经给出,还可以进行额外的\(m\)场比赛 问:所有比赛进行完后,最多可以收集到从\(1\)开始的多少个连续名次 题解: 用一个数组统计一下排名的出现情况,然后扫一遍添加\(m\)个缺失名次即可 代码: #include<iostream> #include<cstdio> #include<cstdl

【解题报告】CF Round #320 (Div. 2)

Raising Bacteria 题意:盒子里面的细菌每天会数量翻倍,你可以在任意一天放任意多的细菌,最后要使得某天盒子里面的细菌数量等于x,求至少要放多少个细菌 思路:显然,翻倍即为二进制左移一位,那么放入一个细菌,到第二天就变成2个二进制下即为1->10对于任意二进制数 如:1001110,只需要在第一天放1个,第4.5.6天各放一个,再等一天,就可以了.所以答案显然是x在二进制下1的个数. Finding Team Member 题意:2n个人,每两个人组合的队伍有aij的力量.每个人都希