zoukankan      html  css  js  c++  java
  • UVALive6442_Coins on a Ring

    真正的水题,可惜无法当场机智一下。

    这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少?

    其实是这样来考虑的,我们可以随便设置一系列参考点,不妨直接假设为(0,n/m,2*n/m,……),这样我们直接记录所有的点依次移动到这些对应位置所需要的最大的步奏和最小的步奏,这样我们就得到了到这一系列的位置的最大和最小值。这样我们需要的最终目标位置就是在最大值和最小值的中点处。

    这里理解一下吧,就是答案了。。  智商拙计。、、、

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #define maxn 1000100
    using namespace std;
    
    int a[maxn],maxpos,minpos,n,m,cas=0,t;
    
    int main()
    {
        scanf("%d",&t);
        while (t--)
        {
            scanf("%d%d",&n,&m);
            for (int i=1; i<=m; i++) scanf("%d",&a[i]);
            sort(a+1,a+1+m);
            maxpos=0,minpos=~0U>>1;
            for (int i=1,cur=0; i<=m; i++,cur+=n/m)
                maxpos=max(maxpos,a[i]-cur),minpos=min(minpos,a[i]-cur);
            printf("Case #%d: %d
    ",++cas,(maxpos-minpos+1)/2);
        }
        return 0;
    }
    如有转载,请注明出处(http://www.cnblogs.com/lochan)
  • 相关阅读:
    javascript 犀牛书
    Hmtl/css
    SQL Server 查询中使用Union或Union All后Order by排序无效(嵌套查询乱序)
    CSS 动画
    CSS 文字排版
    CSS 太极图
    Amazon Products 服务费估算
    CSS3 结构伪类选择器
    JS 执行机制
    vue 生命周期函数的学习
  • 原文地址:https://www.cnblogs.com/lochan/p/3452820.html
Copyright © 2011-2022 走看看