Codeforces Round #494 (Div. 3)
get
- 高效位运算 * __builtin _ __builtin_ll(函数名后加ll表示longlong)*
- __builtin_ffs(unsigned int x) 返回x最后一个1是从右往左第几位
- __builtin_clz(unsigned int x) 返回x前导零的个数
- __builtin_ctz(unsigned int x) 返回后面零的个数
- __builtin_popcount(unsigned int x) 返回二进制1的个数
A. Polycarp’s Pockets
题意
将一堆硬币分配到不同的口袋,相同的硬币不能放到一个口袋,问最少需要多少个口袋
AC
- 答案就是相同硬币数量的最大值
#include <bits/stdc++.h>
#define N 5005
#define ll long long
#define mem(a, b) memset(a, b, sizeof(a))
using namespace std;
int main() {// freopen("in.txt", "r", stdin);int n;scanf("%d", &n);vector<int> sum(105);for (int i = 0; i < n; ++i) {int x;scanf("%d", &x);++sum[x];}sort(sum.begin(), sum.end(), [&](const int &a, const int &b){return a > b;});cout << sum[0] << endl;}
B. Binary String Constructing
题意
给定a, b, x; 构造长度为(a + b)的“01”串,满足里面一共有x个 (si ≠ si + 1),例如“010100”共有4个
AC
- 可以得出满足X个需要长度为(x + 1)的“01”串,先构造满足x的“01”串让后将剩下的“0” 和 “1” 加入到不影响的位置
#include <bits/stdc++.h>
#define N 5005
#define ll long long
#define mem(a, b) memset(a, b, sizeof(a))using namespace std;
int main() {// freopen("in.txt", "r", stdin);int a, b, x;string t, ans;scanf("%d%d%d", &a, &b, &x);// 构造满足X的“01”串if (a > b) t = "01";else t = "10";++x;int sum = x / 2;for (int i = 0; i < sum; ++i) {ans += t;}a -= sum;b -= sum;if (x % 2) {if (t == "01") ans += "0", --a;else ans += "1", --b;}// 将剩下的“0” “1” 加上int len = ans.size();int l = ans.find('0');if (a) ans.insert(l, a, '0');int r = ans.find("1");if (b) ans.insert(r, b, '1');cout << ans << endl;
}
C. Intense Heat
题意
给N个整数,求最大的连续数的平均数,连续数大于等于K
AC
- 暴力
#include <bits/stdc++.h>
#define N 5005
#define ll long long
#define mem(a, b) memset(a, b, sizeof(a))
using namespace std;
int main() {// freopen("in.txt", "r", stdin);int n, k;scanf("%d%d", &n, &k);vector<int> v(n + 1);vector<int> sum(n + 1);for (int i = 1; i <= n; ++i) {scanf("%d", &v[i]);sum[i] = sum[i - 1] + v[i];}double ans = 0;for (int i = k; i <= n; ++i) {for (int j = i; j <= n; ++j) {double t = (sum[j] - sum[i - k]) * 1.0 / (j - i + k);if (t - ans > 1e-6) ans = t;}}printf("%.15lf\n", ans);
}
D. Coins and Queries
题意
给你N个硬币,每个硬币的价值是2的次方,一共Q次询问,每次询问给定X,求构成X最少需要多少个硬币,如果不能构成输出-1
AC
- 先将给定的硬币的二进制位数统计下,每次处理X时,从高位向下贪心,如果最后X的值大于0,则为-1
#include <bits/stdc++.h>using namespace std;
int main() {// freopen("in.txt", "r", stdin);int n, q;scanf("%d%d", &n, &q);vector<int> v(33);// 可用++v[__builtin_ctz(x)] 代替for (int i = 0; i < n; ++i) {int x;scanf("%d", &x);int sum = 0;while (x) {++sum;x /= 2;}++v[sum - 1];}for (int i = 0; i < q; ++i) {int x, ans = 0;scanf("%d", &x);for (int j = 31; j >= 0; --j) {if (v[j] && (1 << j) <= x) {int sum = x / (1 << j);if (v[j] < sum) sum = v[j];ans += sum;x -= (1 << j) * sum;}if (x == 0) break;}if (x > 0) ans = -1;printf("%d\n", ans);}}
#include <bits/stdc++.h>using namespace std;
int main() {// freopen("in.txt", "r", stdin);int n, q;scanf("%d%d", &n, &q);vector<int> v(33);// ++v[__builtin_ctz(x)] 代替for (int i = 0; i < n; ++i) {int x;scanf("%d", &x);++v[__builtin_ctz(x)];}for (int i = 0; i < q; ++i) {int x, ans = 0;scanf("%d", &x);for (int j = 31; j >= 0; --j) {int need = min(x >> j, v[j]);ans += need;x -= (1 << j) * need;}if (x > 0) ans = -1;printf("%d\n", ans);}}
Codeforces Round #494 (Div. 3)相关推荐
- Codeforces Round #494 (Div. 3)【未完结】
2022.3.4 题目地址:https://codeforces.com/contest/1003 目录 A. Polycarp's Pockets[模拟] B. Binary String Cons ...
- Codeforces Round #494 (Div. 3) D. Coins and Queries(贪心
题目链接 题目大意:给你n个物品,第iii个物品价值aia_iai,询问q次,问你能不能凑出价值为qiq_iqi的物品. 小贪心吧.从大到小找,能拿就拿就行了. #include<bits/ ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- Codeforces Round #563 (Div. 2)/CF1174
Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...
- 构造 Codeforces Round #302 (Div. 2) B Sea and Islands
题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...
- Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...
- Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...
- Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...
最新文章
- MVC案例-架构分析
- 北科大计算机小学期,北京科技大学小学期计算机实践(C++源代码)
- 年薪50万,副职级别!注册安全工程师的前途如此光明?
- Solr4.7新建core
- FAST UA API
- centos7安装Metricbeat7.6.0采集nginx指标
- 17家银行工资单:招行人均45万夺冠
- python输入姓名 性别身高_python简单实现学生管理系统
- python123组合数据类型_Python的组合数据类型-字典
- [老文章搬家] 插件化软件设计的头疼问题以及可能的解决思路
- SVN 创建分支,分支与主干的合并
- 简单的Charles抓包ios微信网页
- android课程设计的需求分析,安卓课程设计心得体会.doc
- AUTOSAR DCM
- [USACO 1.2.1] Milking Cows
- 【程序人生】1024 程序员节——闲言鹤语
- DOM文档树和节点操作
- 爬虫加tkinter做的中英互译小软件
- 凤凰网读书频道源代码泄露漏洞
- Win7如何禁用安全模式 如何禁止进入安全模式?
热门文章
- Linux 的进程状态
- Angular 下的 function
- 【JavaScript】理解与使用Javascript中的回调函数
- 深入浅出之虚函数原理篇(笔记三)
- 牛客网(剑指offer) 第二十二题 从上往下打印二叉树
- data too long for column的解决方法
- [Python人工智能] 三十三.Bert模型 (2)keras-bert库构建Bert模型实现文本分类
- Git之深入解析如何交互式暂存
- 1.1 什么是Hive
- torch.nn.functional.pad(input, pad, mode=‘constant‘, value=0)