天天看点

[题解|总结|补题] Codeforces Round #726 (Div. 2)前言A.(分类讨论)B.C.(贪心)

目录

  • 前言
  • A.(分类讨论)
    • CODE
  • B.
    • CODE
  • C.(贪心)
    • CODE(Acvv开始了 我告辞了)

前言

最近白天都很忙 每次晚上打cf都没感觉 emm (幸好是拿小号试水)

A.(分类讨论)

  • 如果 sum == n 那么输出0
  • 如果 sum < n 我们只需要补一个数即可 输出1
  • 如果 sum>n 我们需要补 sum-n个 0

总结

打的时候 太sb了 分错了好几次类

最后分出来这个自己都笑了 (主还是被 数据迷惑到了) 建议自己多搞几组数据

CODE

#include <bits/stdc++.h>
using namespace std;
void solve()
{
     int n;
     cin>>n;
     int sum = 0;
     for(int i=1;i<=n;i++)
     {
        int x;
        cin>>x;
        sum+=x;
     }
     if(sum == n)
     cout<<0<<endl;
     else
     {
        if(sum>n)
        cout<<sum-n<<endl;
        else
        cout<<1<<endl;
     }
}
int main()
{
    int t;
    cin>>t;
    while(t -- )
        solve();
    return 0;
}
           

B.

最大 那么我们就让这个人 绕着地图 跑一圈

所以我们很容易想到 是放四个对角 (因为要跑一圈嘛)

但是样例给的图 会迷惑你 但是其实和放对角是等效的

所以我们直接放对角即可

CODE

#include <bits/stdc++.h>
using namespace std;
void solve()
{
    int n,m,i,j;
    cin>>n>>m>>i>>j;
 
    if(i == n)
    cout<<1<<" "<<1<<" "<<1<<" "<<m<<endl;
    else if(i == 1)
    cout<<n<<" "<<m<<" "<<n<<" "<<1<<endl;
    else if(j == m)
    cout<<1<<" "<<1<<" "<<n<<" "<<1<<endl;
    else if(j == 1)
    cout<<1<<" "<<m<<" "<<n<<" "<<m<<endl;
    else
    cout<<1<<" "<<1<<" "<<n<<" "<<m<<endl;
 
 
}
int main()
{
    int t;
    cin>>t;
    while(t -- )
        solve();
    return 0;
}
           

C.(贪心)

先排序

我们 找出 绝对值最小的差值 并且 放左右两端即可

然后我们 输出 从右指针 到 右端的数 (这样就可保证一直往上爬)

我们在顺序的 从左端 到 左指针 输出(这样我们也可以保证一直往上爬)

CODE(Acvv开始了 我告辞了)

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
int a[N],n,t;
void solve()
{
    cin>>n;
    for(int i=1; i<=n; i++)
        cin>>a[i];

    sort(a+1,a+1+n);

    int x,y,minn =0x3f3f3f3f;
    for(int i=1; i<n; i++)
    {
        if(abs(a[i]-a[i+1])<minn)
        {
            x=i,y=i+1;
            minn = abs(a[i]-a[i+1]);
        }
    }

    cout<<a[x]<<" ";
    
    for(int i = y+1; i<=n; i++)
        cout<<a[i]<<" ";
        
    for(int i=1; i<x; i++)
        cout<<a[i]<<" ";
        
    cout<<a[y]<<endl;
}
int main()
{
    IOS;
    int t;
    cin>>t;
    while(t -- )
        solve();

    return 0 ;
}
           

继续阅读