2022年第十三届蓝桥杯c++ b组 总结

2022年第十三届蓝桥杯c++ b组 总结,第1张

两个字概括,寄了!

目录

A 九进制转十进制

B 顺子日期

C 刷题统计

D 修建灌木

E X进制减法

F 统计子矩阵 

G 积木画

H 扫雷

I 李白打酒加强版

J 砍竹子


A 九进制转十进制

 签到题

答案为:1478

B 顺子日期

 题意不明确,答案不确定是14还是4

我写了14

C 刷题统计

 第三题我直接用一个for循环暴力写的,考完试才发现数据量是1e18,。






(暴力杯一去不复返了)

 暴力代码
#include
using namespace std;
typedef long long ll;
ll a, b, n;
ll sum;
ll d;
ll i;
int main() {
	cin >> a >> b >> n;
	for ( i = 1; i <= n; i++) {
		if ((d + i) % 7 == 6 || (d + i) % 7 == 0) sum += b;
		else sum += a;
		if (sum >= n) break;
	}

	cout << i;
	return 0;
}

D 修建灌木

 规律题,考完后发现写错了,白丢了10分

E X进制减法

 

 

 

 考时想了50分钟没看懂题意(太傻了。




)没做

F 统计子矩阵 

 

 

 考时脑抽忘记二维前缀和怎么算了,也没骗到分,寄

G 积木画

 

 

 

 看了一眼感觉不会,跳过了

H 扫雷

 

考时直接暴力枚举了,应该能过部分数据点 

暴力代码 
#include
using namespace std;
const int N = 1e5 + 10;
int n, m;
int x[N], y[N], r[N];
int xx[N], yy[N], rr[N];

bool check(int x, int y, int r, int a, int b) { //判断能否炸到
	if (sqrt((x - a) * (x - a) + (y - b) * (y - b)) <= r) return 1;
	return 0;
}
bool check1(int x, int y, int r, int xx, int yy, int rr) { //判断炸雷能否引爆炸雷
	if (sqrt((x - xx) * (x - xx) + (y - yy) * (y - yy)) <= r + rr) return 1;
	return 0;
}
bool p[N];
int ans;
int main() {
	cin >> n >> m;
	for (int i = 1; i <= n; i++) { //炸雷
		cin >> x[i] >> y[i] >> r[i];
	}
	for (int i = 1; i <= m; i++) { //排雷火箭
		cin >> xx[i] >> yy[i] >> rr[i];
	}
	for (int i = 1; i <= m; i++) {//枚举排雷火箭
		for (int j = 1; j <= n; j++) {
			if (check(xx[i], yy[i], rr[i], x[j], y[j]) && p[j] != 1) {//未炸过的
				ans++;
				p[j] = 1;//该炸雷标记会爆
			}
		}
	}

	for (int i = 1; i <= n; i++) {//枚举已炸的
		for (int j = 1; j <= n; j++) {//未炸的
			if (!p[i]) break;
			else {
				if (!p[j]) {//之前没炸过
					if (check1(x[i], y[i], r[i], xx[j], yy[j], rr[j])) {
						ans++;
						p[j] = 1;
					}
				}
			}
		}
	}
	cout << ans;
	return 0;
}
I 李白打酒加强版

 

 

考试的时候全排列了一波骗分 

 代码
#include
using namespace std;
const int N = 100;
long long mod = 1000000007;
int n, m;
int a[N];//记录遇见物品
int res = 0;
int sum;
bool flag;
int main() {
	cin >> n >> m;
	for (int i = 0; i < m; i++) {//花
		a[i] = 0;
	}
	for (int i = m; i < n + m; i++) { //店
		a[i] = 1;
	}
	int l = m + n;
	do {
		flag = 0;
		sum = 2;

		for (int i = 0; i < l; i++) {
			if (sum <= 0) {
				flag = 1;
				break;
			}
			if (a[i] == 0) sum--;
			else if (a[i] == 1) sum *= 2;
		}

		if (flag == 0 && sum == 0) res++;


	} while (next_permutation(a, a + l));

	cout << res % mod;
	return 0;
}
 J 砍竹子

 

不会写 

 

总结一下,这次蓝桥杯表现极其不好,估了一下分数好像只有30几分,会的没做对,不会的也没骗到分,简直就是从头炸到尾 ,学算法的兴趣都快被打没了🤣

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/584898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存