• P3611 【[USACO17JAN]Cow Dance Show奶牛舞蹈】


    想了一下还是不发以前做过的水题了,意义也不是很大,现在的话大概只有洛谷黄题以上才会收录了哦~~~

    喵了个咪的题面~~

    洛谷题解dalao不是P党就是优先队列,看的我作为一个新手蒟蒻好慌啊。。。

    这题用二分加冒泡(你没有看错,用sort反而会超时)

    先用二分决定k的值,然后判断这个k可不可行,然后继续二分,重复刚才操作

    具体解释看代码:

     1 #include<cmath>
     2 #include<cstdio>
     3 #include<iostream>
     4 #include<cstring>
     5 #include<algorithm>
     6 using namespace std;
     7 int n,tmax,t,l,r;
     8 int a[10005],b[10005];//变量就不过多介绍了,大家自己看
     9 int shu(int k){//函数,判断当前k是否可行
    10     for(int i=1;i<=k;i++){
    11             b[i]=a[i];
    12 }//前k个奶牛 sort(b+1,b+1+k);//排序,因为当前数组是无序的,所以用sort
    13 
    14     for(int i=k+1;i<=n;i++){
    15         if(b[k]>tmax)return tmax+1;//如果当前已经超过了,就直接退出循环
    16         b[1]+=a[i];//定向思维是减去最小的时间,但未必必须这样做
    17         for(int j=2;j<=k;j++){//传说中的冒泡粉墨登场~~~此处用sort真的会超时,不信你们自己去试试
    18             if(b[j]>=b[j-1]){//如果已经在合适的位置,就退出循环
    19                 break;
    20             }
    21             int x=b[j];//否则交换
    22             b[j]=b[j-1];
    23             b[j-1]=x;
    24         }
    25     }
    26     return b[k];//返回最大的时间
    27 }
    28 int main(){
    29     freopen("cowdance.in","r",stdin);
    30     freopen("cowdance.out","w",stdout);//这两句话当废话处理,是我在USACO主网站上交的时候加上去的
    31     scanf("%d%d",&n,&tmax);
    32     for(int i=1;i<=n;i++){
    33         scanf("%d",a+i);
    34 }//读入 l=1,r=n;//二分的准备活动(- 一二三四,二二三四)
    35 
    36 while(l<r){//二分开始,在left小于(等于)right的时候执行
    37 
    38         int mid=(l+r)/2;//取中间值
    39         if(shu(mid)>tmax)l=mid+1;//如果当前k不满足要求,增大k的值
    40         else r=mid-1;//反之缩小
    41     }
    42     printf("%d
    ",l);//输出
    43     return 0;
    44 }

    嘿嘿~~~ 如果你们Ctrl C+Ctrl V的话,会发现一个很神奇的现象:我的程序不能AC!!!

    仔细看看注释,我相信你可以改出来的哦~~~

    嘻嘻新人开博鼓励一下啦!!!

  • 相关阅读:
    Jersey(1.19.1)
    Jersey(1.19.1)
    Jersey(1.19.1)
    Jersey(1.19.1)
    Jersey(1.19.1)
    Jersey(1.19.1)
    Jersey(1.19.1)
    Jersey(1.19.1)
    17. Letter Combinations of a Phone Number
    37.Sudoku Solver
  • 原文地址:https://www.cnblogs.com/hahaha2124652975/p/11123179.html
Copyright © 2020-2023  润新知