极限卡常+o2还是有两个点TLE

P6188 [NOI Online #1 入门组] 文具订购

Rn_Lamsuly @ 2020-05-24 20:28:29

#include<bits/stdc++.h>
using namespace std;

inline int read(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
   return s*w;
}
int main()
{
    int n;
    int a=-1,b=-1,c=-1;
    n=read();
    if(n==0){
        cout<<0<<' '<<0<<' '<<0;
        return 0;
    }
    if(n<3){
        cout<<-1;
        return 0;
    }
    if(n%14==0){
        cout<<n/14<<' '<<n/14<<' '<<n/14;
        return 0;
    }
    for(register int i=0;i*7<=n;i++)
    {
        for(register int j=0;j<=(n-7*i)/4;j++)
        {
            for(register int k=0;k<=(n-((n-7*i)/4))/3;k++)
            {
                if(7*i+j*4+3*k!=n)continue;
                if(min(i,min(j,k))>min(a,min(b,c)))
                {
                    a=i;
                    b=j;
                    c=k;
                }
                if(i+j+k>a+b+c&&min(i,min(j,k))==min(a,min(b,c)))
                {
                    a=i;
                    b=j;
                    c=k;
                }
            }
        }
    }
    if(a==-1&&b==-1&&c==-1)cout<<-1;
    else cout<<a<<' '<<b<<' '<<c;
    return 0;
}

by Na2PtCl6 @ 2020-05-24 21:53:15

min 函数手写


by Na2PtCl6 @ 2020-05-24 21:53:40

你这根本不叫极限


by Na2PtCl6 @ 2020-05-24 21:57:31

头文件前面还要加上

#pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize("Ofast")


by Rn_Lamsuly @ 2020-05-25 13:37:03

谢谢各位大佬对我这么个蒟蒻的关心 orz


by lcyxds @ 2021-04-18 07:09:37

@肾小囊190350 你这复杂度都不对卡个锤子常。。。

正解 \Theta(1) 你这个 \Theta(n^3) 再卡常也是过不去的


by 崛起的滑稽 @ 2022-10-05 17:02:55

没极限。。*4可以改成<<2,cout<<改成快出,其他的我不知道了


by 崛起的滑稽 @ 2022-10-05 17:03:32

@崛起的滑稽 而且时间复杂度太高了


by ZGSZ_AviationLover @ 2023-08-20 00:25:20

@Na2PtCl6 你谷是online judge,在线判题系统,不能手动开启,只能在提交那勾选一下"O2优化",不然会CE,我亲自试过


上一页 |