zoukankan      html  css  js  c++  java
  • CF1360D

    题目大意

    • (k) 种包裹
    • (i) 种包裹中有 (i) 个物品((1le ile k)
    • 需要购买 恰好 (n) 个物品
    • 只能购买一种包裹,但是可以购买无数次该包裹
    • 问最少的购买次数

    解法

    (m=min{lfloor sqrt{n} floor,k}),其意义是买若干次包裹后 可能 得到 恰好 (n) 个物品 的最小购买次数 的最大值(因为若有一个数 (a)(n) 的因子,必然有 (ale lfloorsqrt{n} floor))。
    故从 (1sim m) 枚举,统计答案即可。复杂度 (tsqrt{n})

    代码

    #include <bits/stdc++.h>
    #define ll long long
    const int INF=0x3f3f3f3f;
    //const ll INF=0x3f3f3f3f3f3f3f3fll;
    using namespace std;
    void rdt(int&),solve();
    int check(int);
    int n,k;
    int main() {
        int t; rdt(t);
        for (;t;t--) solve();
        return 0;
    }
    void rdt(int& t) {
        //t=1;
        scanf("%d",&t);
    }
    void solve() {
        scanf("%d%d",&n,&k);
        if (k>=n) {puts("1"); return;}
        int m=min((int) sqrt(n),k);
        printf("%d
    ",check(m));
    }
    int check(int nn) {
        int ret=INF;
        for (int i=nn;i;i--) {
            if (n%i) continue;
            int x=i,y=n/i;
            ret=min(ret,n/x);
            if (y<=k) ret=min(ret,n/y);
        }
        return ret;
    }
    
  • 相关阅读:
    double相加(減)结果会有些误差
    创建表,操作表
    删除数据库
    DDL语句
    HCDA-12-配置基本静态路由
    HCDA-11-配置直连路由
    1-5配置STelnet登录系统
    HCDA-9-管理设备文件系统
    HCDA-8-了解设备系统文件
    Java生成随机汉字
  • 原文地址:https://www.cnblogs.com/Xray-luogu/p/12960774.html
Copyright © 2011-2022 走看看