诗者才子酒中仙 2023-05-15 20:50 采纳率: 58.8%
浏览 23
已结题

C++ 历届蓝桥杯——最大值

题目背景
手工课上拿同学出N张长方形彩纸,且每张彩纸上都画着W * H的网格(网格铺满整张彩纸)。现在同学将N张彩纸裁剪出K张大小相同的正方形,并且要使裁剪出的正方形的边长最大(裁剪的正方形边长必须为整数)。

例如:N=2, 有2张彩纸,第一张彩纸W = 4, H = 3:第二张彩纸W = 5,H = 4; K = 6,裁剪的6个正方形边长最大是2。

img

当给出N张长方形彩纸W和H,及K的值,请计算出将N张彩纸裁剪出K张大小相同的正方形,正方形的边长最大是多少(裁剪的正方形边长必须为整数)。

输入格式

第一行输入两个正整数N,K(1<N<100,1<K<100), N表示彩纸数量,K表示需裁剪的正方形数量,两个正整数之间一个空格隔开. 第二行开始,输入N行,每行输入两个正整数Wi,Hi (1 < Wi < 1000,1 < Hi < 1000,且 Wi≠Hi,,Wi表示彩纸的长度,Hi表示彩纸的宽度,两个正整数之间一个空格隔开.

**输出格式
**
输出一个正整数,表示将N张彩纸裁剪出K张大小相同的正方形的边长最大是多少(裁剪的正方形边长必须为整数),如果不能裁剪出K张正方形就输出“-1”

输入输出样例
输入样例
2 6
4 3
5 4
输出样例
2

  • 写回答

2条回答 默认 最新

  • Leodong. 2023-05-15 21:13
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    以下是一个C++的程序,可以解决该问题:

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    const int MAXN = 105;
    
    int n, k;
    int w[MAXN], h[MAXN];
    
    bool check(int len) {  // 判断能否裁剪出k个边长为len的正方形
        int cnt = 0;
        for (int i = 1; i <= n; i++) {
            cnt += (w[i] / len) * (h[i] / len);
            if (cnt >= k) {
                return true;
            }
        }
        return false;
    }
    
    int main() {
        cin >> n >> k;
        for (int i = 1; i <= n; i++) {
            cin >> w[i] >> h[i];
        }
    
        int ans = 0;
        for (int len = 1; len <= 1000; len++) {  // 枚举边长
            if (check(len)) {
                ans = max(ans, len);
            }
        }
    
        if (ans == 0) {  // 无解
            cout << -1 << endl;
        } else {
            cout << ans << endl;
        }
    
        return 0;
    }
    

    在上述代码中,我们首先读入输入数据,然后枚举正方形的边长len,对于每个边长,我们判断是否能够裁剪出k个边长为len的正方形。具体地,我们遍历每张彩纸,计算出该彩纸能够裁剪出多少个边长为len的正方形,然后累加起来,如果累计的正方形数量大于等于k,则认为能够裁剪出k个边长为len的正方形。最后输出最大的能够裁剪出的正方形的边长即可。

    需要注意的是,如果无法裁剪出k个正方形,则输出-1。此外,由于题目中给出了1 < Wi < 1000,1 < Hi < 1000的限制,因此我们可以枚举边长len从1到1000。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月23日
  • 已采纳回答 5月15日
  • 创建了问题 5月15日

悬赏问题

  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开