• 洛谷 P8741 [蓝桥杯 2021 省 B] 填空问题 题解


    题目分析

    A 空间

    简单的单位换算题:
    1 MB = 1024 KB = 1048576 B = 8388608 b 256 × 8388608 ÷ 32 = 67108864 1\text{MB}=1024\text{KB}=1048576\text{B}=8388608\text b\\ 256\times8388608\div32=67108864 1MB=1024KB=1048576B=8388608b256×8388608÷32=67108864
    故答案为 67108864 67108864 67108864

    B 卡片

    用一个数组存储每种卡片剩余的数量,再从 1 1 1 开始,一个个判断每个数需要的卡片是否够用,如果不够用了就输出结果。最终可以得到答案为 3181 3181 3181

    C 直线

    枚举每一种组合然后去掉重复的部分即可。

    对于去重,可以使用 set 来实现。

    代码如下:

    #include
    #include
    #include
    #include
    using namespace std;
    signed main() {
    	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    	vector<pair<int,int>>vec;
    	set<pair<pair<int,int>,int>>ans;
    	for(int i=1;i<=20;++i) for(int j=1;j<=21;++j) vec.push_back({i,j});//枚举组合
    	for(int i=0;i<vec.size()-1;++i)
    		for(int j=i+1;j<vec.size();++j) {
    			int x1=vec[i].first,y1=vec[i].second,x2=vec[j].first,y2=vec[j].second;
    			int a=x2-x1,b=y1-y2,c=x1*y1-x2*y2;
    			int gcd=__gcd(__gcd(a,b),c);
    			ans.insert({{b/gcd,a/gcd},c/gcd});//去重
    		}
    	cout<<ans.size();//输出答案
    	return 0;
    }
    

    得到答案为 40257 40257 40257

    D 货物摆放

    计算出 n n n 的所有因数储存起来,再枚举所有的组合,如果乘积刚好等于 n n n,就累加答案。最终可以得到答案为 2430 2430 2430

    E 路径

    就是一个求最短路径的板子题,可以使用 Dijkstra 算法。最终得到答案是 10266837 10266837 10266837

    Code

    #include
    using namespace std;
    signed main() {
    	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    	string ans[]={
    		"67108864",
    		"3181",
    		"40257",
    		"2430",
    		"10266837"
    	};
    	cout<<ans[getchar()-'A'];
    	return 0;
    }
    
  • 相关阅读:
    单例模式之「双重校验锁」
    【python量化】将Transformer模型用于股票价格预测
    智能座舱概述
    【UniApp】-uni-app-内置组件
    C# .NET CORE .NET6 RSA 公钥加密 私钥解密
    【hexo】butterfly主题魔改之天气插件
    11 JSP
    秋招面试题系列- - -Java工程师(十)
    JavaWeb整合Mybatis更新删除操作后查询返回数据相同的问题解决
    内存函数的
  • 原文地址:https://blog.csdn.net/xzz_0611/article/details/139449850