• 洛谷题解P6188 [NOI Online #1 入门组]文具订购


    ( ext{Update On 2020.10.6}) 鉴于之前的题解写的不好,进行了重做

    原题传送门

    ( ext{Solution})

    首先想到的是 (O(n^3)) 的暴力。可是数据范围 (0≤n≤10^5) (又不是清北神机) 显然会 ( ext{TLE})

    所以说要对这个暴力进行优化。

    不难发现,在订购的原则里

    (7a+4b+3c=n)
    (a,b,c) 中的最小值尽可能大

    最小值最大换句话来说就是 ( o a,b,c的值尽量平均)
    不妨设 (a=b=c) ,此时关于 (a,b,c) 的方程 (7a+4b+3c=n) 的解为 (a=b=c=frac{n}{14})

    订购原则还有一句话:

    (a+b+c) 尽可能大

    所以,我们可以 a从 (frac{n}{14}) 开始 从大到小 枚举 (尽可能大,从大到小更快出结果)
    (b) 边界 (frac{n}{4})
    (c) 边界 (frac{n}{3})

    (Code)

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int n;
    int main(){
        scanf("%d",&n);
        if(n==0){      //一定注意特判 0 的情况
            cout<<"0 0 0"<<endl;
            return 0;
        }
        for(int i=n/14;i>=0;i--){      //a
        	for(int j=i;j<=n/4;j++){      //b
        		for(int l=i;l<=n/3;l++){      //c
        			if(i*7+j*4+l*3==n){      
        				printf("%d %d %d",i,j,l);
        				return 0;
    				}
    			}
    		}
    	}
        printf("-1");
        return 0; 
    }
    
    本文欢迎转载,转载时请注明本文链接
  • 相关阅读:
    数论
    平衡树
    矩阵儿快速幂
    分治
    考试
    考试
    匈牙利算法
    SPFA
    倍增
    MySql 技术内幕 (数据库组成和引擎)
  • 原文地址:https://www.cnblogs.com/-pwl/p/12524440.html
Copyright © 2020-2023  润新知