zoukankan      html  css  js  c++  java
  • CCPC2020网络赛总结

    我们队解出了三道题:1003、1007、1010

    1011题做了一个多小时,卡在了第二个样例上面,也就是对t趋近于无穷时的处理上面,思考的思路一直是怎样用程序在数学上处理一个数趋向于无穷,看了题解才发现思路就错了,其实还是找规律。启发:如果在某一个题上卡的时间过长,要及时更换思路,用新的方法解题。

    1007题,开始读了半天没读懂题意,就直接放弃了,后来是李勇麒通过观察样例发现了规律,原来读不懂题意也能AC!启发:如果一个题的通过人数很多,但又读不懂题意,可以直接研究样例,通过样例找规律写程序。

    1010题,直接模拟,直接过。

    下面是1003的代码和思路:

    Problem 1003:

    根据题意,可以将快递所在的快递柜分成两部分,一部分是在特殊快递柜前面的快递柜,另一部分是在特殊快递柜后面的快递柜。对于在后面的快递柜,我们可以发现无论先取哪一个快递,最终所花费的距离都是一样的;而对于在前面的快递,只有按照编号从大到小的顺序取快递所花费的距离才是最小的。

    代码如下:

    #include<bits/stdc++.h>

    using namespace std;

    #define ll long long

    ll a[1000000+8];

    int main()

    {

        int t,i,j,m;

        ll n,k;

        cin>>t;

        while(t--)

        {

            ll dis=0;

            scanf("%lld%d%lld",&n,&m,&k);

            for(i=0;i<m;i++)

            {

                scanf("%lld",&a[i]);

            }

            sort(a,a+m);

            dis=k-1;

            for(i=m-1;i>=1;i--)

            {

                if(a[i]>k)

                {

                    dis+=a[i]-k;

                    dis+=a[i]-k;

                }

                else

                {

                    dis+=k-a[i];

                    dis+=k-a[i];

                }

            }

            if(a[0]<k)

            {

                dis+=k-1;

            }

            else

            {

                dis+=a[0]-k;

                dis+=a[0]-1;

            }

            printf("%lld ",dis);

        }

       return 0;

    }

  • 相关阅读:
    01 Windows编程——Hello World
    图像处理基础知识
    集成IDE anaconda
    Python中的正则表达式
    Introduction of Machine Learning
    Linux命令——diff、patch
    sed & awk 概述
    Linux行编辑器——ed
    Linux命令——w、who、whoami、lastlog、last
    【问题】统计系统上有多少个用户
  • 原文地址:https://www.cnblogs.com/chengxvzhishen/p/13736325.html
Copyright © 2011-2022 走看看