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)相关推荐

  1. Codeforces Round #494 (Div. 3)【未完结】

    2022.3.4 题目地址:https://codeforces.com/contest/1003 目录 A. Polycarp's Pockets[模拟] B. Binary String Cons ...

  2. Codeforces Round #494 (Div. 3) D. Coins and Queries(贪心

    题目链接 题目大意:给你n个物品,第iii个物品价值aia_iai​,询问q次,问你能不能凑出价值为qiq_iqi​的物品. 小贪心吧.从大到小找,能拿就拿就行了. #include<bits/ ...

  3. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  4. 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 ...

  5. 构造 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 的例子可以 ...

  6. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  7. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  8. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  9. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

最新文章

  1. MVC案例-架构分析
  2. 北科大计算机小学期,北京科技大学小学期计算机实践(C++源代码)
  3. 年薪50万,副职级别!注册安全工程师的前途如此光明?
  4. Solr4.7新建core
  5. FAST UA API
  6. centos7安装Metricbeat7.6.0采集nginx指标
  7. 17家银行工资单:招行人均45万夺冠
  8. python输入姓名 性别身高_python简单实现学生管理系统
  9. python123组合数据类型_Python的组合数据类型-字典
  10. [老文章搬家] 插件化软件设计的头疼问题以及可能的解决思路
  11. SVN 创建分支,分支与主干的合并
  12. 简单的Charles抓包ios微信网页
  13. android课程设计的需求分析,安卓课程设计心得体会.doc
  14. AUTOSAR DCM
  15. [USACO 1.2.1] Milking Cows
  16. 【程序人生】1024 程序员节——闲言鹤语
  17. DOM文档树和节点操作
  18. 爬虫加tkinter做的中英互译小软件
  19. 凤凰网读书频道源代码泄露漏洞
  20. Win7如何禁用安全模式 如何禁止进入安全模式?

热门文章

  1. Linux 的进程状态
  2. Angular 下的 function
  3. 【JavaScript】理解与使用Javascript中的回调函数
  4. 深入浅出之虚函数原理篇(笔记三)
  5. 牛客网(剑指offer) 第二十二题 从上往下打印二叉树
  6. data too long for column的解决方法
  7. [Python人工智能] 三十三.Bert模型 (2)keras-bert库构建Bert模型实现文本分类
  8. Git之深入解析如何交互式暂存
  9. 1.1 什么是Hive
  10. torch.nn.functional.pad(input, pad, mode=‘constant‘, value=0)