Educational Codeforces Round 97 (Rated for Div. 2)
补了一场Edu round。
A : Marketing Scheme
水题
- #include <cstdio>
- #include <algorithm>
- typedef long long ll;
- int T,l,r;
- template <typename T>
- inline void read(T &x){
- x = 0; char ch = getchar(); int f = 1;
- for(;ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
- for(;ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
- x *= f;
- }
- int main(){
- read(T);
- while(T--){
- read(l); read(r);
- if(l * 2 > r) printf("YES\n");
- else printf("NO\n");
- }
- return 0;
- }
B :Reverse Binary Strings
水构造
- #include <cstdio>
- #include <algorithm>
- typedef long long ll;
- const int M = 200010;
- int T,n,cnt1,cnt2;
- int a[M];
- template <typename T>
- inline void read(T &x){
- x = 0; char ch = getchar(); int f = 1;
- for(;ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
- for(;ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
- x *= f;
- }
- int main(){
- read(T);
- while(T--){
- read(n); cnt1 = cnt2 = 0;
- for(int i = 1;i <= n; i++){
- char ch = getchar();
- for(;ch != '0' && ch != '1'; ch = getchar()) ;
- a[i] = ch - '0';
- if(i != 1){
- if(a[i] == a[i - 1] && a[i] == 1) cnt1++;
- else if(a[i] == a[i - 1] && a[i] == 0) cnt2++;
- }
- }
- printf("%d\n",std::max(cnt1,cnt2));
- }
- return 0;
- }
C : Chef Monocarp
比较奇怪的背包,照理压成一维。
- #include <cstdio>
- #include <algorithm>
- #include <cmath>
- #include <cstring>
- typedef long long ll;
- const int M = 210;
- int T,n;
- int t[M], dp[M];
- template <typename T>
- inline void read(T &x){
- x = 0; char ch = getchar(); int f = 1;
- for(;ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
- for(;ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
- x *= f;
- }
- int main(){
- read(T);
- while(T--){
- read(n);
- for(int i = 1;i <= n; i++) read(t[i]);
- std::sort(t + 1,t + n + 1);
- memset(dp,0x3f,sizeof(dp));
- dp[0] = 0;
- for(int i = 1;i <= n << 1; i++)
- for(int j = n;j >= 1; j--)
- dp[j] = std::min(dp[j],dp[j - 1] + abs(i - t[j]));
- printf("%d\n",dp[n]);
- }
- return 0;
- }
D :Minimal Height Tree
因为是bfs,所以直接按照性质模拟即可。
- #include <cstdio>
- #include <algorithm>
- typedef long long ll;
- const int M = 200010;
- int T,n;
- int a[M];
- template <typename T>
- inline void read(T &x){
- x = 0; char ch = getchar(); int f = 1;
- for(;ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
- for(;ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
- x *= f;
- }
- int main(){
- read(T);
- while(T--){
- read(n);
- for(int i = 1;i <= n; i++) read(a[i]);
- int dep = 0, cur = 0, sum = 1;
- for(int i = 2,j;i <= n; i++){
- if(!cur){
- cur = sum; dep++;
- }
- cur--; j = i;
- while(j <= n){
- if(a[j] < a[j + 1]){
- j++; sum++;
- }
- else break;
- }
- i = j;
- }
- printf("%d\n",dep);
- }
- return 0;
- }
E :Make It Increasing
贪心。直接在每个被b圈定的区间内贪心,记录不需要更改的点个数。
还有一个明显的转化,具体见代码。
- #include <cstdio>
- #include <algorithm>
- typedef long long ll;
- const int M = 500010;
- int n,k,ans;
- int a[M], b[M];
- template <typename T>
- inline void read(T &x){
- x = 0; char ch = getchar(); int f = 1;
- for(;ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
- for(;ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
- x *= f;
- }
- int sta[M], top = 0;
- int main(){
- read(n); read(k);
- for(int i = 1;i <= n; i++)
- read(a[i]), a[i] -= i;
- for(int i = 1;i <= k; i++) read(b[i]);
- a[n + 1] = 1e9; a[0] = -1e9;
- b[k + 1] = n + 1;
- for(int i = 0,l,r;i <= k; i++){
- l = b[i]; r = b[i + 1];
- if(a[l] > a[r]){
- printf("-1\n"); return 0;
- }
- top = 0;
- for(int j = l + 1;j < r; j++)
- if(a[l] <= a[j] && a[j] <= a[r]){
- int it = std::upper_bound(sta + 1,sta + top + 1,a[j]) - sta;
- if(it == top + 1) sta[++top] = a[j];
- else sta[it] = a[j];
- }
- ans += r - l - 1 - top;
- }
- printf("%d\n",ans);
- return 0;
- }
F :Emotional Fishermen
既然是记录方案数,那应该是dp了。具体见代码,注意特判。
- #include <cstdio>
- #include <algorithm>
- typedef long long ll;
- const int M = 5010, mod = 998244353;
- int n;
- int a[M], pre[M];//表示最大的j使得a[j] * 2 <= a[i]
- int dp[M];//表示以i点为最大值的方案数
- template <typename T>
- inline void read(T &x){
- x = 0; char ch = getchar(); int f = 1;
- for(;ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
- for(;ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
- x *= f;
- }
- inline ll q_pow(ll x,ll num){
- ll ret = 1;
- for(;num; num >>= 1){
- if(num & 1) ret = (1ll * ret * x) % mod;
- x = (1ll * x * x) % mod;
- }
- return ret;
- }
- int fac[M], ifac[M];
- inline void pre_work(){
- fac[0] = fac[1] = ifac[0] = 1;
- for(int i = 2;i <= n; i++) fac[i] = (1ll * fac[i - 1] * i) % mod;
- ifac[n] = q_pow(fac[n],mod - 2);
- for(int i = n - 1;i >= 1; i--) ifac[i] = (1ll * ifac[i + 1] * (i + 1)) % mod;
- }
- inline int A(int i,int j){
- if(i > j || i < 0 || j < 0) return 0;
- return (1ll * fac[j] * ifac[j - i]) % mod;
- }
- int main(){
- read(n);
- for(int i = 1;i <= n; i++) read(a[i]);
- std::sort(a + 1,a + n + 1);
- int l = 0;
- for(int i = 1;i <= n; i++){
- while(a[l + 1] << 1 <= a[i]) l++;
- pre[i] = l;
- }
- if(pre[n] != n - 1){
- printf("0\n"); return 0;
- }
- dp[0] = 1; pre[0] = -1;
- pre_work();
- for(int i = 1;i <= n; i++)
- for(int j = 0;j <= pre[i]; j++)
- dp[i] = (1ll * dp[i] + 1ll * dp[j] * A(pre[i] - pre[j] - 1,n - pre[j] - 2) % mod) % mod;
- printf("%d\n",dp[n]);
- return 0;
- }
G :Death DBMS
后缀自动机,不会。
Educational Codeforces Round 97 (Rated for Div. 2)的更多相关文章
- Educational Codeforces Round 97 (Rated for Div. 2) E. Make It Increasing(最长非下降子序列)
题目链接:https://codeforces.com/contest/1437/problem/E 题意 给出一个大小为 \(n\) 的数组 \(a\) 和一个下标数组 \(b\),每次操作可以选择 ...
- Educational Codeforces Round 97 (Rated for Div. 2)【ABCD】
比赛链接:https://codeforces.com/contest/1437 A. Marketing Scheme 题解 令 \(l = \frac{a}{2}\),那么如果 \(r < ...
- Educational Codeforces Round 97 (Rated for Div. 2) D. Minimal Height Tree (贪心)
题意:有一个从根节点\(BFS\)得来的序列(每次\(bfs\)子节点的时候保证是升序放入队列的),现在让你还原树(没必要和之前相同),问能构造出的最小的树的深度. 题解:不看根节点,我们从第二个位置 ...
- Educational Codeforces Round 97 (Rated for Div. 2) C. Chef Monocarp (DP)
题意:有\(n\)个菜在烤箱中,每个时刻只能将一个菜从烤箱中拿出来,第\(i\)个时刻拿出来的贡献是\(|i-a[i]|\),你可以在任意时刻把菜拿出来,问将所有菜拿出的最小贡献是多少? 题解: 先对 ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
- Educational Codeforces Round 35 (Rated for Div. 2)
Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...
随机推荐
- 金蝶k/3 cloud 生产用料清单下推生成调拨单二开记录
系统默认的生产用料清单下推生成调拨单功能,是根据调拨选单数量来的,有库存和没有库存的都混在一起,导致业务人员审核调拨单的时候需要删除没有库存的分录行,严重影响工作效率. 现通过二开程序,根据生产用料清 ...
- 安装MySQL和出现的问题解决
在Windows下安装mysql,注意自己的Windows是32位还是64位. MySQL官网下载地址:https://dev.mysql.com/downloads/mysql/ 下载完之后,解压放 ...
- vulnhub靶机之Quaoar
Quaoar 靶机非常简单. 扫描端口主机. wordpress建站. 扫到两个用户,分别是wpuser以及admin. 爆破出了后台: 传了一个一句话木马,连上蚁剑又传了个反弹shell. 反弹sh ...
- 几个超级好用但很少有人知道的 webstorm技巧
我总结一些我发现的比较实用的功能,内容来自日常工作中用到的功能.图片来自PPT,是在公司内部的分享. 你不知道的webstorm进阶使用技巧 1.双击shift 全局搜索,可以搜索代码.设置等. 如果 ...
- springboot+mybatis集成分页功能
1.使用idea搭建srpingboot项目 在pom.xml文件中引入如下的依赖: <dependency> <groupId>org.springframework.boo ...
- Python字符编码和二进制不得不说的故事
二进制 核心思想: 冯诺依曼 + 图灵机 电如何表示状态,才能稳定? 计算机开始设计的时候并不是考虑简单,而是考虑能自动完成任务与结果的可靠性, 简单始终是建立再稳定.可靠基础上 经过尝试10进制,但 ...
- 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念
055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...
- 01 百度 AI Studio 基础操作记录(一) Notebook
转载参考: AI Studio基本操作(一) Notebook篇 一.基础 1.新建文件: 可以使用命令, !cat <<newfile > newfile.py 在项目空间内直接创 ...
- 【代码审计】JAVA代码审计
分享一些Java安全相关文章,其中大部分都涉及到代码的分析与审计. 大家总是在找Java的代码审计的文章,但好像很多人选择性失明. 其实Java没有和PHP一样的简单,所以你觉得你看到的文章不是入门级 ...
- Tensorflow学习笔记No.2
使用函数式API构建神经网络 函数式API相比于keras.Sequential()具有更加灵活多变的特点. 函数式API主要应用于多输入多输出的网络模型. 利用函数式API构建神经网络主要分为3步, ...