CCF算法学习-1

news/2024/12/26 4:46:38/

1. B - Piano
问题描述
有一个无限长的钢琴键盘。是否存在一个连续的片段,其中包含 W 个白键和 B 个黑键?

设 S 为通过无限重复字符串 wbwbwwbwbwbw 形成的字符串。

是否存在 S 的一个子字符串,其中包含 W 个 w(白键)和 B 个 b(黑键)?

限制
W 和 B 都是整数.


思路
字串由完整的"wbwbwwbwbwbw"加上某个前缀,某个后缀组成。用两个列表存储当前有多少个w,多少个b。

代码

#include <bits/stdc++.h>
using namespace std;
char s[20] = " wbwbwwbwbwbw";
int bx, wx;
int w[] = { 0, 1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7 };
int b[] = { 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5 };
int main() {cin >> wx >> bx;//	cout<<w[12]<<" "<<b[12]<<endl;/*5*k  + b[j] +  5 - b[i] = b7*k  + w[j] +  7 - w[i] = w*/for (int i = 1; i <= 12; i++) {for (int j = 1; j <= 12; j++) {if ((bx - b[j] + b[i] - 5) * 7 == (wx - w[j] + w[i] - 7) * 5) {cout << "Yes" << endl;return 0;}}}cout << "No" << endl;return 0;
}

2. 造篱笆
【桶】

思路

代码:

#include<iostream>
#include<algorithm>using namespace std;const int N = 1e6 + 10;int n;
int h[N], m[N], ans[N];
int ma = 0, cnt = 0;
int main(){cin >> n;for (int i = 0; i < n; i++) cin >> h[i], m[h[i]]++;for (int i = 1; i <= 2000; i++){for (int j = 1; j <= 2000; j++){if (i != j){ans[i + j] = min(m[i], m[j]);}else{ans[i + j] = m[i] / 2;}}}for (int i = 1; i <= 4000; i++) ma = max(ma, ans[i]);for (int i = 1; i <= 4000; i++){if (ma == ans[i]) cnt++;}cout << ma << ' ' << cnt;return 0;
}

3. ABC枚举

代码:

#include<bits/stdc++.h>using namespace std;#define LL long longLL n, cnt;int main(){cin >> n;for (int i = 1; i * i * i <= n; i++){for (int j = i; j * j <= n / i; j++){cnt += (n / (i * j)) - j + 1;}}cout << cnt;return 0;
}

4.获取质数 

/*
试除法判定质数
*/#include<iostream>
#include<algorithm>
using namespace std;const int N = 1e2 + 10;int n;
int a[N];bool is_prime(int n){if (n < 2) return false;for (int i = 2; i <= n / i; i++){if (n % i == 0) return false;}return true;
}int main(){cin >> n;for (int i = 0; i < n; i++){cin >> a[i];}for (int i = 0; i < n; i++){if (is_prime(a[i])) cout << "Yes" << endl;else cout << "No" << endl;}return 0;
}

5.筛质数

/**
埃式筛法要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。给出要筛数值的范围n,找出以内的素数。
先用2去筛,即把2留下,把2的倍数剔除掉;
再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;
接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去…。
*/#include<bits/stdc++.h>using namespace std;const int N = 1e6 + 10;
int n, primes[N];
int st[N]; //标记是否为质数 
int cnt = 0;//一开始默认所有数都是质数 void get_prime(int n){for (int i = 2; i <= n; i++){if (!st[i]){//primes数组存储素数primes[cnt ++] = i; //如果i是质数,把i的倍数筛掉for (int j = i * 2; j <= n; j += i) st[j] = true; }}
} int main(){cin >> n;get_prime(n);cout << cnt; return 0;
} 

 


http://www.ppmy.cn/news/1558176.html

相关文章

新手SEO指南如何入门与实操技巧分析

内容概要 在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已成为网站流量获取的重要手段。针对新手&#xff0c;理解SEO的基础是入门的第一步。本文将从多个方面为新手提供系统性的知识&#xff0c;帮助他们掌握SEO的核心概念和实用技巧。 首先&#xff0c…

MongoDB教程002:文档(表)的增删改查

文章目录 1.4 文档基本CRUD1.4.1 文档的插入1.4.1.1 单个文档的插入1.4.1.2 批量插入 1.4.2 文档的基本查询1.4.3 文档的更新1.4.4 删除文档 1.4 文档基本CRUD 文档&#xff08;document&#xff09;的数据结构和JSON基本一样。 所有存储在集合中的数据都是BSON格式。 1.4.1…

【深入理解网络协议】

深入理解网络协议 一、基础模型 OSI模型 OSI模型是国际标准化组织&#xff08;ISO&#xff09;提出的一个参考模型&#xff0c;它将网络通信过程划分为7个层次&#xff0c;每一层都有特定的功能和责任。 [!TIP] 说明 层次&#xff1a; 物理层&#xff1a;负责传输原始比特流…

外连接转AntiJoin的应用场景与限制条件 | OceanBase SQL 查询改写系列

在《SQL 改写系列&#xff1a;外连接转内连接的常见场景与错误》一文中&#xff0c;我们了解到谓词条件可以过滤掉连接结果中的 null 情形的&#xff0c;将外连接转化为内连接的做法是可行的&#xff0c;正如图1中路径(a)所示。此时&#xff0c;敏锐的你或许会进一步思考&#…

“Content type ‘text/plain;charset=UTF-8‘ not supported“,

用postman进行新增数据时&#xff0c;如下提示&#xff1a; "Content type text/plain;charsetUTF-8 not supported" Content type text/plain 不支持 点击Headers我们看到Content-Type 支持的类型是json 所以问题出现在这个地方&#xff0c;要将Text切换成JSON…

RunCam WiFiLink连接手机图传测试

RunCam WiFiLink中文手册从这里下载 一、摄像头端 1.连接天线&#xff08;易忘&#xff09; 2.打开摄像头前面的盖子&#xff08;易忘&#xff09; 3.接上直流电源&#xff0c;红线为正&#xff0c;黑线为负 4.直流电源设置电压为14v&#xff0c;电流为3.15A&#xff0c; 通…

华为OD --- TLV解码

华为OD --- TLV解码 题目独立实现理解思路AC源码 题目 独立实现 理解 个人认为这题最大的难点就是理解题目 以测试用例举个&#x1f330; 31 32 01 00 AE 90 02 00 01 02 30 03 00 AB 32 31 31 02 00 32 33 33 01 00 CC题目需要找到tag 31对应的value值. 示例中第一个tag值为…

开源轮子 - Bean转换

开源轮子 - Bean转换 文章目录 开源轮子 - Bean转换一&#xff1a;JavaBean问题二&#xff1a;MapStruct1&#xff1a;入门使用1.1&#xff1a;依赖引入1.2&#xff1a;po,vo1.3&#xff1a;mapper1.4&#xff1a;测试一下 2&#xff1a;自定义映射3&#xff1a;映射方法级别4&…