首页 > 其他分享 >Educational Codeforces Round 141

Educational Codeforces Round 141

时间:2023-01-09 08:44:06浏览次数:51  
标签:sort Educational 题目 141 int res cin Codeforces --

A. Make it Beautiful

他想要变美 ,我们按照题目说的做就行,通过判断我们发现如果在sort一遍后

sort(a + 1 , a + 1 + n);
if(a[1] == a[n])
{
    cout << "NO" << "\n";
    return ;
}

其他的情况我们就可以用一大一小的方式插入,这样就可以满足整个序列可以为beautiful

ACcode

void solve()
{
    ios;//这个是一个宏定义,可以去掉没有影响
    int t;
    cin >> t;
    while(t -- )
    {
        
    
        cin >> n;
        for(int i = 1 ; i <= n ; i ++ )
        {
            cin >> a[i];
            
        }
        sort(a + 1 , a + 1 + n);
        if(a[n] == a[1])
        {
            cout << "NO" <<"\n";
            continue;
            
            
        }
        cout << "YES" << "\n";
        for(int i = 1 ; i <= n / 2 ; i ++ )
        {
            cout << a[i] << " " << a[n - i + 1] << " ";
            
        }
        if(n % 2 == 1)
        {
            cout << a[n / 2 + 1];
        }
        
        
        cout << "\n";
    }
}

B. Matrix of Differences

这个题目只要满足时蛇形矩阵就可以,而且构造方式很多,关键在于怎么输出,代码我就写一个我赛时写出来的

ACcode

void solve()
{
    ios;
    int t;
    cin >> t;
    while(t -- )
    {
        int n;
        cin >> n;
        int q = n * n;
        int w = 1;
        int flag = 1;
        for(int i = 1 ; i <= n ; i ++ )
        {
            if(i % 2 == 1)
            {
                for(int j = 1 ; j <= n ; j ++ )
                {
                    if(flag == 1)
                    {
                        a[i][j] = q;
                        q -- ;
                        flag = 0;
                    }
                    else
                    {
                        a[i][j] = w;
                        w ++ ;
                        
                        flag = 1;
                    }
                }
            }
            else
            {
                for(int j = n ; j >= 1 ; j -- )
                {
                    if(flag == 1)
                    {
                        a[i][j] = q;
                        q --;
                        flag = 0;
                    }
                    else
                    {
                        a[i][j] = w;
                        w ++ ;
                        flag = 1;
                        
                    }
                }
            }
        }
        for(int i = 1 ; i <= n ; i ++ )
        {
            for(int j = 1 ; j <= n ; j ++ )
            {
                cout << a[i][j] << " ";
            }
            cout << "\n";
            
        }
    }
}

C. Yet Another Tournament

这个题目其实是一个不是很难的题目,这个题目既可以贪心又可以二分,所以是一道完全可做题,只不过确实很困,然后打的又是小号所以就睡觉了

思路:

这个题目就可以先排序,维护一个前缀和就行,单独判断我们可以打败几个人

但是我们不想要并列,我们想要超越,所以没有必要去花时间和一些打不过的人打,我们可以花时间去超越他人

所以就会有以下代码

if(i < n && m >= s[i] + max(a[i + 1] - b[i] , (int)0))
{
    res = min(res , n - i);
}

ACcode

void solve()
{
    ios;
    int t;
    cin >> t;
        while(t -- )
    {
        int n , m;
        cin >> n >> m;
        for(int i = 1 ; i <= n ; i ++ )
        {
            cin >> a[i];
            b[i] = a[i];
            
        }
        sort(b + 1 , b + 1 + n);
        for(int i = 1 ; i <= n ; i ++ )
        {
            s[i] = s[i - 1] + b[i];
        }
        int res = n + 1; //有 n + 1 个人
        for(int i = 1 ; i <= n ; i ++ )
        {
            if(m >= s[i])
            {
                res = min(res , n - i + 1);
            }
            if(i < n && m >= s[i] + max(a[i + 1] - b[i] , (int)0))
            {
                res = min(res , n - i);
            }
        }
        cout << res << "\n";
    }
    
    
}    

 

标签:sort,Educational,题目,141,int,res,cin,Codeforces,--
From: https://www.cnblogs.com/codeforceshobby/p/17035964.html

相关文章

  • P1141 01迷宫
    这题数据有点高级啊(这么高级的数据能不能把它变成黄题呢?不然显得我很垃圾(虽然是事实))思路联通块,把周围四格与自己不同的联通起来,看成一个大块,知道要的坐标属于哪个大块并......
  • B. Kolya and Tandem Repeat -- codeforces
    B.KolyaandTandemRepeathttps://codeforces.com/problemset/problem/443/B 思路如果补充字符长度k大于等于s长度,则新的字符串,一份两半,前半分包括s,可能包括部分补......
  • Codeforces 1671 F Permutation Counting 题解
    题目链接把\(p_i>p_{i+1}\)的位置个数称为间隔数首先想到一个暴力做法。从小到大挨个添加1-n中的每个数,注意到添加数i时,只能添加到当前序列的最后11个位置中,否则逆序对数......
  • CodeForces - 835C Star sky
    CodeForces-835CStarsky题解:二维前缀和二维平面上给你点和坐标,让你求总亮度,很容易想到二维前缀和,但是题目很抽象,又给了你一个时间,就是说,每过一个单位时间,它的亮度......
  • CodeForces - 1303D Fill the bag
    CodeForces-1303DFillthebag题解:二进制+思维首先我们发现这肯定与二进制有关,n的二进制形式肯定有1,所以我们去从低位到高位遍历n的二进制的时候,加入现在这一位是1,......
  • CodeForces - 1225C p-binary
    CodeForces-1225Cp-binary题解:二进制+思维由题意得:让我们求出K的最小值使得\(\sum_{i=1}^{k}2^{a^i}+p=n\)成立,将式子改变一下形式得到\(n-k*p=\sum_{i=1}^{k}2^......
  • Codeforces 1305 F Kuroni and the Punishment 题解 (随机算法)
    题目链接首先注意到每个数最多操作1次就能让他变成2的倍数,所以答案\(\len\)。如果我们能枚举[1,1e12]中所有的质数,并对每个质数p求出把数组中所有数都变成它的倍数的最少......
  • codeforces水题记录
    完全不需要思考https://codeforces.com/gym/104101/problem/A只要输出“fengqibisheng,yingyueerlai!”就能AC。需要一点点思考https://codeforces.com/gym/104101......
  • CodeForces - 1698D Fixed Point Guessing
    CodeForces-1698DFixedPointGuessing题解:二分+交互题题目给出询问次数为15次,而\(3<=n<10^4\),很明显是二分题目想要我们找出在数组长度n为奇数的情况下,交换\(\fra......
  • CodeForces - 1701C Schedule Management
    CodeForces-1701CScheduleManagement题解:二分答案很显然如果你给的时间越长,所有工作就越容易被完成,所以时间存在二分性,我们直接二分时间但是我们现在需要解决一......