IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 第十二届蓝桥杯省赛 C/C++ B 组 暴力题解 -> 正文阅读

[C++知识库]第十二届蓝桥杯省赛 C/C++ B 组 暴力题解

人们都知道,蓝桥杯B组就是暴力比赛。。。

试题 A: 空间

在这里插入图片描述

1GB=1024MB 1MB=1024KB 1KB=1024B 1B=8b(位)

答案:67108864

cout<<256*1024*1024/4;

试题 B: 卡片

在这里插入图片描述

0-9每个都有2021张,记录每一张的剩余个数,然后从1开始枚举,知道卡片不够用结束,输出当前数字-1。

答案:3181

int main() {
	map<int,int>x;
	for(int i=0;i<=9;i++)x[i]=2021;
	for(int i=1;;i++){
		int n=i;
		while(n){
			if(x[n%10]==0){
				cout<<i-1<<endl;
				return 0;
			}
			x[n%10]--;
			n/=10;
		}
	}
}

试题 C: 直线

在这里插入图片描述

斜率与截距确定一条直线,枚举出所有的直线,相差超过1e-8(10^ -8)就不是同一条直线了。

答案:40257

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;

const int N = 200000;

int n;
struct Line
{
    double k, b;
    bool operator< (const Line& t) const
    {
        if (k != t.k) return k < t.k;
        return b < t.b;
    }
}l[N];

int main()
{
    for (int x1 = 0; x1 < 20; x1 ++ )
        for (int y1 = 0; y1 < 21; y1 ++ )
            for (int x2 = 0; x2 < 20; x2 ++ )
                for (int y2 = 0; y2 < 21; y2 ++ )
                    if (x1 != x2)
                    {
                        double k = (double)(y2 - y1) / (x2 - x1);
                        double b = y1 - k * x1;
                        l[n ++ ] = {k, b};
                    }

    sort(l, l + n);
    int res = 1;
    for (int i = 1; i < n; i ++ )
        if (fabs(l[i].k - l[i - 1].k) > 1e-8 || fabs(l[i].b - l[i - 1].b) > 1e-8)
            res ++ ;
    cout << res + 20 << endl;

    return 0;
}

试题 D: 货物摆放

在这里插入图片描述

就是找3个数乘积得2021041820210418的个数,根据题目可以发现,三个数都是当前数的约数,所以,先找出所有的约数,再枚举就行了。

答案:2340

int main() {
	set<ll>a;
	ll n=2021041820210418;
	for(ll i=1; i*i<=n; i++)
		if(n%i==0) {
			a.insert(i);
			a.insert(n/i);
		}
	int res=0;
	for(auto i:a)
		for(auto j:a)
			for(auto k:a)
				if(i*j*k==n)res++;
	cout<<res;
}

试题 E: 路径

在这里插入图片描述

简单的最短路,利用Floyd -- Dijkstra...都可,因为是只提交答案,所以就用Floyd

答案:10266837

int a[2025][2025];
int main() {
	for(int i=1;i<=2021;i++){
		for(int j=1;j<=2021;j++){
			if(abs(i-j)>21)
				a[i][j]=a[j][i]=0x3f3f3f3f;
			else {
				a[i][j]=a[j][i]=i*j/__gcd(i,j);
			}
		}
	}
	for(int k=1;k<=2021;k++){
		for(int i=1;i<=2021;i++){
			for(int j=1;j<=2021;j++)
			a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
		}
	}
	cout<<a[1][2021];
}

试题 F: 时间显示

在这里插入图片描述

注意1s=1000ms 一天86400s 对86400求余即可

答案:

int main() {
	ll n;
	cin>>n;
	n/=1000;
	n%=86400;
	printf("%02d:%02d:%02d",n/3600,n%3600/60,n%3600%60);
}

试题 G: 砝码称重

在这里插入图片描述

不会DP就暴力求解 暴力二进制枚举拿一半分

暴力枚举:

int main() {
	int n;cin>>n;
	int res=0;
	set<int>b;
	for(int i=0;i<n;i++)cin>>a[i];
	for(int i=0;i<1<<n;i++){
		int sum=0;
		for(int j=0;j<n;j++){
			if(i&(1<<j)){
				sum+=a[j];
			}
		}
		if(sum>0)b.insert(sum);
		for(int j=0;j<n;j++){
			if(sum-a[j]>0)
			b.insert(sum-a[j]);
		}
	}
	cout<<b.size()<<endl;
}

满分DP做法:

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 110, M = 200010, B = M / 2;

int n, m;
int w[N];
bool f[N][M];

int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i ++ ) scanf("%d", &w[i]), m += w[i];

    f[0][B] = true;
    for (int i = 1; i <= n; i ++ )
        for (int j = -m; j <= m; j ++ )
        {
            f[i][j + B] = f[i - 1][j + B];
            if (j - w[i] >= -m) f[i][j + B] |= f[i - 1][j - w[i] + B];
            if (j + w[i] <= m) f[i][j + B] |= f[i - 1][j + w[i] + B];
        }

    int res = 0;
    for (int j = 1; j <= m; j ++ )
        if (f[n][j + B])
            res ++ ;
    printf("%d\n", res);
    return 0;
}

试题 H: 杨辉三角形

在这里插入图片描述

20%还是可以拿的。。。。

int main(){
	int c[52]={0,1,5,8,12,17,13,30,38,47,18};
	int n;
	cin>>n;
	cout<<c[n];
}

试题 I: 双向排序

在这里插入图片描述

自定义sort排序暴力做

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<set>
const double pi=3.14159265358979323846;
typedef long long ll;
using namespace std;
int a[5005];
bool cmp1(int a,int b){
	return a<b;
}
bool cmp2(int a,int b){
	return a>b;
}
int main() {
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)a[i]=i;
	while(m--){
		int x,y;
		cin>>x>>y;
		if(x==1){
			sort(a+y,a+n+1,cmp1);
		}	
		else {
			sort(a+1,a+1+y,cmp2);
		}
	}
	for(int i=1;i<=n;i++)cout<<a[i]<<" ";
}

试题 J: 括号序列

在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:05:26  更:2022-03-30 18:06:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:40:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码