codeforces522 div3 20190416

时隔许久再次参与Codeforces比赛,尽管时间不合适,但决心保持训练,即使只解一题。昨晚解决了1154/A和1154/B两道数学题目,过程中学习了vector数组的使用,体会到了学习的重要性。每一步的进步都值得珍视,将继续努力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好久不打CF了,虽然时间点不match,但仍希望可以好好坚持下去,哪怕只做一题也可以,目的是获得成就感。

1.题目链接:

http://codeforces.com/problemset/problem/1154/A

代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

int main()
{
    //cout << "Hello world!" << endl;
    long long data[4];
    long long x1,x2,x3,x4;
    while(scanf("%lld%lld%lld%lld",&x1,&x2,&x3,&x4)!=EOF)
    {
        memset(data,0,sizeof(data));
        data[0]=x1;
        data[1]=x2;
        data[2]=x3;
        data[3]=x4;
        //for(int i=0;i<)
        sort(data,data+4);
        //cout<<data[0]<<endl;
        //cout<<data[3]<<endl;
        cout<<data[3]-data[0]<<" "<<data[3]-data[1]<<" "<<data[3]-data[2]<<endl;

    }
    return 0;
}

2.题目链接:

http://codeforces.com/problemset/problem/1154/B

代码:

#include <iostream>
#include <cstdio>
#include <vector>
#include <set>

using namespace std;
//Problem:522B
int main()
{
    //cout << "Hello world!" << endl;
    int n;
    int data;
    vector<int> vec;
    while(scanf("%d",&n)!=EOF)
    {
        vec.clear();
        for(int i=0; i<n; i++)
        {
            scanf("%d",&data);
            vec.push_back(data);
        }

        //利用set集合把vector中的元素去重
        set<int> st(vec.begin(), vec.end());
        vec.assign(st.begin(), st.end());

        /*
        //使用迭代器的方法遍历vector数组
        vector<int>::iterator it;
        for (it = vec.begin(); it != vec.end(); it++)
            cout << *it<<endl;
        */
        if(vec.size()==2)
        {
            int kkk1;
            int kkk2;
            if((vec[0]+vec[1])%2==0)
            {
                kkk1=vec[1]-vec[0];
                kkk2=vec[1]-(vec[0]+vec[1])/2;
                if(kkk1>kkk2)
                {
                    cout<<kkk2<<endl;
                }
                else
                {
                    cout<<kkk1<<endl;
                }
            }
            else
            {
                kkk1=vec[1]-vec[0];
                cout<<kkk1<<endl;
            }

        }
        else
        {
            int sum=0;
            int kkk1;
            int kkk2;
            //应用数组的方式遍历vector数组
            for(int i=0;i<vec.size();i++)
            {
                sum+=vec[i];
            }

            if(sum%vec.size()==0)
            {
                kkk1=sum/vec.size()-vec[0];
                cout<<kkk1<<endl;
            }
            else
            {
                cout<<"-1"<<endl;
            }
        }
    }
    return 0;
}

昨天晚上只做了两道容易题,都是数学的,过程还比较顺利,还学习了一下vector数组的用法,之前正式比赛时还因为觉得麻烦不想去学,现在来看是多么的简单又必要。所以每一步都算数,请好好努力吧!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值