这里写目录标题

  • A Download More RAM
    • 题解
    • 代码
  • B GCD Arrays
    • 题目
    • 题解
      • 计算奇偶数的办法
    • 代码
  • C Meximum Array
    • Mex (mathematics)
    • 题意
    • 题解
    • 代码
  • D. Peculiar Movie Preferences
    • 题意
    • 题解
    • 代码

A Download More RAM

题解

有n个软件,最初有k个内存,每个软件运行需要ai的内存,运行完可以获得bi个内存,问最后可以获得多少内存?
通过排序先运行所需内存小的软件以获得内存,即排序。

代码

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 111;
struct ab
{int a, b;
} arr[maxn];
bool cmp(ab a, ab b){return a.a < b.a;
}
int main(){int t; cin >> t;while(t--){int n, k; cin >> n >> k;for(int i = 0; i < n; i++) {cin >> arr[i].a;}for(int i = 0; i < n; i++){cin >> arr[i].b;}ll ans = k;sort(arr, arr + n, cmp);int pos = 0;while(arr[pos].a <= ans && pos < n){ans += arr[pos].b;pos++;}cout << ans << '\n';}
}

B GCD Arrays

题目

给你lll到rrr这一段序列,在经过k次操作后,该段序列的最大公因数(即当前序列中的所有数字求解gcd)能否是大于1的数
操作:
从序列中取两个数字,将他们永久的从序列中删除,并加两者的乘积加入到队列中

题解

计算连续数字奇数的个数,即为可操作的最大个数,举例如下
初始状态3,4,5,6,73,4,5,6,73,4,5,6,7
第一次操作3∗5,4,6,73*5,4,6,73∗5,4,6,7
第二次操作3∗5∗7,4,63*5*7,4,63∗5∗7,4,6
可以发现如上两次操作所得序列的gcd都是1
第三次操作3∗5∗7∗4,63*5*7*4,63∗5∗7∗4,6
第四次操作3∗5∗7∗4∗63*5*7*4*63∗5∗7∗4∗6
显然从第三次操作起开始序列存在大于1的公因数了
那么解题思路就是所有奇数结合再加一个偶数序列即可得到大于1的公因数了

计算奇偶数的办法

     ll odd  = (r - l + 1) / 2;ll even = (r - l + 1) / 2;if ((r - l + 1) % 2 == 1 && r % 2 == 1) odd ++;else even ++;

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){//freopen("in.txt","r",stdin);int t; cin >> t;while(t--){ll l, r, k;cin >> l >> r >> k;if (l == r){if (l == 1)printf("NO\n");elseprintf("YES\n");continue;}ll odd  = (r - l + 1) / 2;ll even = (r - l + 1) / 2;if ((r - l + 1) % 2 == 1 && r % 2 == 1) odd ++;else even ++;//3个奇数可以操作三次//printf("%lld\n", odd);if (odd <= k){printf("YES\n");}else{printf("NO\n");}}
}

C Meximum Array

Mex (mathematics)

补集的最小值

题意

给你n个非负数字,你可以进行如下操作,每次选择连续的k个数字,求解这k个数字的Mex,然后放到b序列中,问最长长度为m的字典序的b序列里面的元素是什么?求解数字m和m个元素。

题解

题目要求是要字典序最大的,那么第一个位置一定是整个序列最大MEX,即满足
MEX(p,j)=MEX(p,n)MEX(p,j)=MEX(p, n)MEX(p,j)=MEX(p,n)
找到满足这个条件的第一个数字,然后消除前k个数,然后继续递归。

参考
假如是这一个序列 2 2 3 4 0 1 2 0 可以发现选择1 ~ 8和选择1 ~6所得到的结果是一样的,
那么我们就可以直接选择删除的是1 ~ 6

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e5 + 10;
int main(){//freopen("in.txt","r",stdin);int _;for(scanf("%d", &_); _; _--){ll n; cin >> n;std::vector<ll> arr(n + 1); // 输入n个元素std::vector<vector<ll> > idx(n + 1); //记录数字x出现的位置分别为多少for(int i = 0; i < n; i++) { cin >> arr[i];idx[arr[i]].push_back(i); //arr[i]出现的位置为i}std::vector<ll> res; //存储答案ll init = 0;ll mex = 0;ll cur = -1;while(init < n){mex = 0;cur = init;//0<=ai<=nfor(int i = 0; i <= n; i++){auto it = lower_bound(idx[i].begin(), idx[i].end(), init); //查找init位置上是否有iif (it == idx[i].end()){//如果没找到,mex就是imex = i;break;}else {cur = max(*it, cur);}}init = cur + 1; //找下一个位置res.push_back(mex);}cout << res.size() << '\n';for(int i = 0; i < res.size(); i++) cout << res[i] << " ";cout <<  '\n';}
}

D. Peculiar Movie Preferences

题意

给你n个字符串,每个字符串长度不超过3,问是否能组成回文串

题解

由于字符串长度不超过3,那么可以分类讨论出以下几种情况

  1. 本身就为回文字符串,例如a,aa,aaa,aba
  2. 两个子集构成回文串,例如ab和ba,aab和baa
  3. 两个子集构成回文串,例如ab和cba,或者是abc和ba

注意

2
ab
bad
NO

所以badab是不符合的,即相对顺序不变

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;#define rep(i, a, b) for (int i=a;i<=b;++i)
const int mod = int(1e9) + 7;
const int inf = 0x3f3f3f3f;
const ll inff = 0x3f3f3f3f3f3f3f3fLL;
const double pi = acos(-1.0); //M_PI;
const int maxn = 1e5 + 10;//给你n个字符串,每个字符串长度不超过3,问是否能组成回文串int main(){//freopen("in.txt","r",stdin);//freopen("aout.txt","w",stdout);int _;for(scanf("%d", &_); _; _--){int n; cin >> n;bool flag = false;std::vector<string> arr(n);multiset<string> suf, pre;//pre记录前面出现的,suf记录后面出现的,TLE5for(int i = 0; i < n; i++){cin >> arr[i];suf.insert(arr[i]);}for(int i = 0; i < n; i++){suf.erase(suf.find(arr[i]));string now = arr[i];reverse(now.begin(), now.end());//aba ab baif (suf.count(now)){flag = true;break;}if (arr[i].size() == 1){flag = true;break;}if (arr[i].size() == 2){if (arr[i][0] == arr[i][1]){flag = true;break;}}if (arr[i].size() == 3){if (arr[i][0] == arr[i][2]){flag = true;break;}}if (arr[i].size() == 3){//cb abc string t1 = arr[i].substr(1, 2);reverse(t1.begin(), t1.end());if (pre.count(t1)){flag = true;break;}//abc bastring t2 = arr[i].substr(0, 2);reverse(t2.begin(), t2.end());if (suf.count(t2)){flag = true;break;}}pre.insert(arr[i]);}if (flag){printf("YES\n");continue;}else {printf("NO\n");continue;}}
}

Codeforces Round #767 (Div. 2)题解相关推荐

  1. 【Codeforces Round #767 (Div. 2)】 C. Meximum Array 题解

    [Codeforces Round #767 (Div. 2) ]C. Meximum Array 题解 1629C: Meximum Array 题解 [Codeforces Round #767 ...

  2. Codeforces Round #514 (Div. 2)题解

    Codeforces Round #514 (Div. 2)题解 A 喵,直接模拟. B 枚举所有盖章时的,合法的,左上角的位置.能盖的话就盖一下.最后check一下图案是否相等即可 C 一轮一轮的扔 ...

  3. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  4. 【算法题解】Codeforces Round #817 (Div. 4)题解

    文章目录 Codeforces Round #817 (Div. 4)题解 A. Spell Check B. Colourblindness C. Word Game D. Line E. Coun ...

  5. Codeforces Round #747 (Div. 2)题解

    Codeforces Round #747 (Div. 2)题解 (本博客将持续更新以后每场CF div2的题解,喜欢ACM.OI的小伙伴记得点个关注哟) 昨天夜晚刷网络流刷入迷了,渐渐就忘记了我还要 ...

  6. Codeforces Round #789 (Div. 2)题解

    Codeforces Round #789 (Div. 2)题解 A. Tokitsukaze and All Zero Sequence 原题链接 算法标签 贪心 排序 思路 情况一:数组存在零 → ...

  7. Codeforces Round #748 (Div. 3) 题解 完整A~G

    Codeforces Round #748 (Div. 3) 题解 A. Elections 题意 已知竞选中三个候选人的当前得票数 a , b , c a,b,c a,b,c,现在可以增加任何一个人 ...

  8. Codeforces Round #533 (Div. 2)题解

    link orz olinr AK Codeforces Round #533 (Div. 2) 中文水平和英文水平都太渣..翻译不准确见谅 T1.给定n<=1000个整数,你需要钦定一个值t, ...

  9. Codeforces Round #734 (Div. 3) 题解

    Hello大家好,今天给大家带来的是 Codeforces Round #734 (Div. 3) 的全题目讲解. 本文链接:https://www.lanqiao.cn/questions/2040 ...

最新文章

  1. win7下的IP-主机名映射
  2. VMware Tools手动下载
  3. mht to html
  4. linux jdk配置环境变量
  5. C语言再学习 -- 循环语句
  6. 一份关于jvm内存调优及原理的学习笔记
  7. 谷歌大脑自门控激活函数Swish
  8. html超链接点不了_HTML、CSS、JS都有哪些区别?不看必悔
  9. 首发!《长安十二时辰背后的技术秘籍》正式公开,速来下载
  10. php email,两种PHP邮件发送的方式
  11. c/c++教程 - 1.5 运算符
  12. 2018双十一苏宁20+篇技术干货全整理
  13. 教你在win10系统开启和使用语音识别
  14. WPF界面设计—撸大师
  15. Web开发者和交互设计师必备的5大工具
  16. 相机PHP,C/C++、C#、PHP相机开发实例 大恒相机SDK
  17. 实现保留3位有效数字(四舍六入五成双规则)
  18. 2016年度最受欢迎中国开源软件评选 - 开源中国社区
  19. SHOW DBS在MongoDB中不显示我的自建库
  20. 清晨六问?静夜六思?

热门文章

  1. 如何扛住100亿次请求?后端架构应该这样设计!
  2. 如何获取所有股票代码
  3. springboot配置类中的bean名字能不能随便写
  4. matlab dmc控制代码,【原创】Matlab实现DMC控制加热炉程序
  5. 项目经理怎么评估工时?
  6. Promise 对象 异步 then 回调函数
  7. linux开机启动动画
  8. Code bloat has become astronomical
  9. 前端入门篇(八)表单
  10. txt文件编码批量转换器 2.11 官方版