zoukankan      html  css  js  c++  java
  • 期末考试(正解:三分单峰函数 me~)

    好久没有水过杂题了!

    今天lsc终于刚过了三道考试题来水杂题了!

    期末考试

    首先一看还是一脸mb(这是正常现象,毕竟我不像一些大神可以一眼出正解)然后我就被颓了标签,知道是三分单峰函数,但是自己实在是太弱了,所以并不会使用三分来水题,就只能使用暴力来做;

    我们知道最后的恶心度(题里的不愉快度)是只和最后在那天出成绩有关,所以暴力枚举在哪天出成绩,然后使用前缀和就可以做到枚举1000000就可以出答案,其实就是取min就可以了!

    如果A<B,那么显然使用第一种方法更优秀,而且我们可以O(1)算

    然后就是要前缀和维护可以推迟的天数的和,最后再判一下就行了,注意long long 和 res>ans就跳出;

    具体的看代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 const int N=100005;
     5 ll ans=1ll<<62,A,B,C,s1,s2,s3,s4,res=0;
     6 int n,m,t[N],b[N];
     7 int main()
     8 {
     9     scanf("%lld%lld%lld%d%d",&A,&B,&C,&n,&m);
    10     for(int i=1,x;i<=n;i++)scanf("%d",&x),t[x]++;
    11     for(int i=1,x;i<=m;i++)scanf("%d",&x),b[x]++,s3+=x;
    12     for(int T=1;T<=100000;T++)
    13     {
    14         res+=s1*C;//恶心程度!
    15         s1+=t[T];//到这一天期望出分数的个数!其实是等待已经到达极点的人数!
    16         if(res>=ans)break;
    17         s4+=s2;//小于i天的可以退迟的总天数!
    18         s3-=(m-s2);//还没有出分的数目!
    19         s2+=b[T];//在这一天之前出分的数目!
    20         ll r;
    21         if(B<=A)r=s3*B;//显然使用第二种方法好使
    22         else if(s3<=s4)r=s3*A;//只有没有出分的小于出分的情况才可以使用一进行搞
    23         else r=s4*A+(s3-s4)*B;//不然的话就混合搞!
    24         ans=min(ans,res+r);
    25     }
    26     printf("%lld
    ",ans);
    27 }
    View Code
  • 相关阅读:
    iOS堆栈-内存-代码在据算机中的运行
    iOS self和super的区别
    php代码优化
    缓存雪崩现象解决方案
    缓存失效
    分布式memcache
    Linux下编译安装Memcache
    windows 下安装 php-memcached 扩展
    Linux下安装 php-memcache 扩展
    缓存之文件缓存
  • 原文地址:https://www.cnblogs.com/hzoi-lsc/p/11465130.html
Copyright © 2011-2022 走看看