Codeforces Round #815 (Div. 2)

给小猫咪顺毛 2022-08-26 18:48:42

A. Burenka Plays with Fractions

题意:

给出两个分数,将其分子或分母任意乘一个数,求使两数相等的变换次数。

分析:

稍加模拟可知,最多只需要变换两次。

因为分数不便处理,令t1=a*d,t2=b*c,相乘记得开long long.

情况1:t1==t2,0次;

情况2:大数能整除小数,1次;

情况3:没有任何特殊,只能变换2次;

记得对0特殊处理。

代码:

#include<bits/stdc++.h>
using namespace std;
int t;
#define ll long long
void _()
{
    ll a,b,c,d;
    cin>>a>>b>>c>>d;
    ll t1=a*d,t2=b*c;
    if(t1<t2) swap(t1,t2); 
    if(t1==t2) cout<<"0\n";
    else if(t2==0) cout<<"1\n";
    else if(t1%t2==0) cout<<"1\n";
    else cout<<"2\n";
}
int main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--) _();
    return 0;
}

B. Interesting Sum

题意:给出一串数,将其分为两个区间,求两区间内最大值与最小值之差

分析:找到最大值、次大值、最小值、次小值,分割区间一定可以使一对大值与小值在一个区间。

代码:

#include<bits/stdc++.h>
using namespace std;
int t;
#define ll long long
void _()
{
    int n;
    cin>>n;
    vector<int> a(n+1);
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a.begin()+1,a.end());
    int res=a[n]+a[n-1]-a[1]-a[2];
    cout<<res<<endl;
}
int main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--) _();
    return 0;
}

C. Corners

题意:给定一个n*m的矩阵,每次操作可以消除一个L形内所有的1,每次保证消除一个1,求操作最大值

分析:由题可知,尽可能一次操作消灭最少的1,所以尽量保证一次操作取一个1

找出取一个1,两个1和三个1的情况

代码:

#include<bits/stdc++.h>
using namespace std;
int t;
int n,m;
char c[510][510];
#define ll long long
int st[][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};
bool _ck(int x,int y)
{
    for(int i=0;i<8;i++)
    {
        int xx=x+st[i][0],yy=y+st[i][1];
        if(xx>0&&xx<=n&&yy>0&&yy<=m&&c[xx][yy]=='0') return true;
    }
    return false;
}
void _()
{
    int cnt=0;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>c[i][j];
            if(c[i][j]=='1') cnt++;
        }
    }
    if(cnt==n*m) {cout<<cnt-2<<endl;return;}
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(c[i][j]=='0'&&_ck(i,j))
            {
                cout<<cnt<<endl;
                return;
            }
        }
    }
    cout<<cnt-1<<endl;
}
int main()
{
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--) _();
    return 0;
}

 

...全文
37 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,040

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧