zoukankan      html  css  js  c++  java
  • 长沙理工大学第十二届ACM大赛-重现赛

    年轮广场
    时间限制:1秒 空间限制:131072K

    题目描述

    在云塘校区,有一个很适合晒太阳的地方————年轮广场
    年轮广场可以看成n个位置顺时针围成一个环。
    这天,天气非常好,Mathon带着他的小伙伴们出来晒太阳。他们分别坐在A[i]位置上,每个位置上保证最多只有1个小伙伴。现在Mathon想让大家集合玩狼人杀,所以想选择一个位置集合,之后所有的人顺时针或逆时针移动到那里去,每移动两个相邻的位置需要1个单位时间,小伙伴们都很有素质所以不会插近路踩草坪,只会沿着位置走。
    Mathon想越快集合越好,于是他在群里发了QQ消息告诉大家集合位置,假设所有人都立刻接到了消息,然后都以最优的方法往集合位置移动。
    要把所有人集合到一个位置最少需要多少时间?

    输入描述:

    多组输入
    每组数据第一行输入n,m(1<=n,m<=1000),n表示年轮广场上位置的个数,m表示Mathon以及他的小伙伴总人数
    第二行m个数,第i个A[i](1<=A[i]<=n)表示第i个人的位置。

    输出描述:

    每组数据输出一行,表示所需要的最少时间。
    示例1

    输入

    5 3
    1 4 5
    3 2
    1 3

    输出

    1
    1

    说明

    第一组数据选择5为集合地点,第二组数据选择2为集合地点。

    这个题我本来想的是直接绝对值就行,打完发现错了,还是分情况讨论了下

    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    int a[1005];
    int main()
    {
        int n,m;
        while(~scanf("%d%d",&n,&m))
        {
            for(int i=0;i<m;i++)
            scanf("%d",&a[i]);
            int mi=1<<30;
            for(int i=1;i<=n;i++)
            {
                int s=0;
                for(int j=0;j<m;j++)
                {
                    int b;
                    if(a[j]>i)
                    b=min(a[j]-i,n-a[j]+i);
                    else
                    b=min(i-a[j],n+a[j]-i);
                    s=max(b,s);
                }
                if(s<mi)mi=s;
            }
            printf("%d
    ",mi);
        }
        return 0;
    }
    日历中的数字
    时间限制:1秒 空间限制:131072K

    题目描述

    ElemenT马上就要毕业了,他打开日历看了看时间。发现日历上的日期都是2017-04-04这样的格式的,月和日如果不足2位数,前面都会补充0。
    给定一个年份和月份,ElemenT把那个月的日期都按上述格式写到纸上,他现在想知道某种数字出现了多少次。

    输入描述:

    多组输入
    每组输入一行,有3个数字y,m,x(1000<=y<=3000,1<=m<=12,0<=x<=9),分别代表年份,月份,和他想知道哪个数字出现的次数。

    输出描述:

    每组输出一个整数,表示数字x在这个月的日期里出现了多少次。
    示例1

    输入

    2017 4 4
    2000 1 0

    输出

    33
    我也不知道,2333

    说明

    第一组样例中,日中有数字4的为2017-04-04,2017-04-14,2017-04-24,4月一共有30天,因为月份中有4,所以数字4一共出现了30 + 3 = 33次

    直接就可以水过了,就是可能判断闰年长时间不写感觉有点复杂

    #include<bits/stdc++.h>
    using namespace std;
    int mon[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
    int x;
    int la(int n)
    {
        int l=0,cnt=0;
        while(n)
        {
            l++;
            if(n%10==x)cnt++;
            n/=10;
        }
        if(l==1&&x==0)cnt++;
        return cnt;
    }
    int main()
    {
        int n,m;
        while(~scanf("%d%d%d",&n,&m,&x))
        {
            int ans=0;
            if(n%4==0&&n%100!=0||n%400==0)mon[2]=29;
            for(int i=1; i<=mon[m]; i++)
            {
                ans+=la(n)+la(m)+la(i);
            }
            mon[2]=28;
            printf("%d
    ",ans);
        }
        return 0;
    }

    其他题待补

  • 相关阅读:
    HTML入门(HB、DW)
    HTML入门(HB、DW)
    数据库流行度6月排行榜:Oracle飙升MySQL止跌回升
    The 'mode' option has not been set, webpack will fallback to 'production' for th is value
    Error: Cannot find module 'webpack/schemas/WebpackOptions.json'
    seafile python api requests
    Linux上复制tomcat启动需要注意的问题
    SQL优化:你真的知道国家字符集的性能影响吗?
    OpenCV3.4.1+VS2017安装教程(WINDOWS10)
    HTML入门(HB、DW)
  • 原文地址:https://www.cnblogs.com/BobHuang/p/7471065.html
Copyright © 2011-2022 走看看