Codeforces Round #894 (Div.3)

在这里插入图片描述

文章目录

  • 前言
  • A. Gift Carpet
    • 题目:
    • 输入:
    • 输出:
    • 思路:
    • 代码:
  • B. Sequence Game
    • 题目:
    • 输入:
    • 输出:
    • 思路:
    • 代码:
  • C. Flower City Fence
    • 题目:
    • 输入:
    • 输出:
    • 思路:
    • 代码:
  • D. Ice Cream Balls
    • 题目:
    • 输入:
    • 输出:
    • 思路:
    • 代码:
  • E. Kolya and Movie Theatre
    • 题目:
    • 输入:
    • 输出:
    • 思路:
    • 代码:
  • 总结


前言

昨天晚上打了一场Codeforces Div3 唉 打的很不好,只AC了两道思维题目。

在这里插入图片描述


A. Gift Carpet

题目:

链接:A. Gift Carpet
最近,Tema和Vika庆祝了家庭日。他们的朋友阿里娜给了他们一块地毯,可以表示为n⋅m
小写拉丁字母表。

维卡还没有看到礼物,但特玛知道她喜欢什么样的地毯。维卡会喜欢地毯,如果她能读上她的名字。她从左到右逐列阅读,并从当前列中选择一个或多个或零个字母。

从形式上讲,如果可以按从左到右的顺序选择四列不同的列,例如第一列包含“v”,第二列包含“i”,第三列包含“k”,第四列包含“a”,女孩会喜欢地毯。

帮助特玛提前了解维卡是否会喜欢艾琳娜的礼物。

输入:

每个测试由多个测试用例组成。输入的第一行包含单个整数t
(1≤t≤100) — 测试用例的数量。然后是测试用例的说明。

每个测试用例的第一行包含两个整数n,m
(1≤n,m≤20) — 地毯的尺寸。

下一个n行包含m每个小写拉丁字母,描述给定的地毯。

输出:

对于每组输入数据,如果 Vika 喜欢地毯,则输出“YES”,否则输出“NO”。
您可以以任何大小写(小写或大写)输出每个字母。例如,字符串“yEs”、“yes”、“Yes”和“YES”将被接受为肯定答案。
在这里插入图片描述

思路:

控制行和列的for循环互换,然后一列一列的去找,找到就k++然后跳出去下一列
最后如果k==4 就是输出yes否则就是输出no即可。

tip:唉 继续加油!!!

代码:

#include<iostream>
using namespace std;
int main()
{int t;cin>>t;while(t--){int n,m;cin>>n>>m;char s[22][22];for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>s[i][j];	}}int k=0;for(int i=k;i<m;i++){for(int j=0;j<n;j++){if(s[j][i]=='v'){if(k==0) {k++;break;}}if(s[j][i]=='i'){if(k==1){k++;break;}}if(s[j][i]=='k'){if(k==2){k++;break;}}if(s[j][i]=='a'){if(k==3){k++;break;}}}}if(k==4) cout<<"yes"<<endl;else cout<<"no"<<endl;}return 0;
}

B. Sequence Game

题目:

链接:B. Sequence Game
Tema and Vika are playing the following game.

First, Vika comes up with a sequence of positive integers a
of length m
and writes it down on a piece of paper. Then she takes a new piece of paper and writes down the sequence b
according to the following rule:

First, she writes down a1
Then, she writes down only those ai (2≤i≤m) such that ai−1≤ai
Let the length of this sequence be denoted as n

For example, from the sequence a=[4,3,2,6,3,3]
Vika will obtain the sequence b=[4,6,3]

She then gives the piece of paper with the sequence b
to Tema. He, in turn, tries to guess the sequence a

Tema considers winning in such a game highly unlikely, but still wants to find at least one sequence a
that could have been originally chosen by Vika. Help him and output any such sequence.

Note that the length of the sequence you output should not exceed the input sequence length by more than two times.

大概意思:

就是输入一个数组b,大小为n然后推测数组a里面的数字
推测的依据是:

  • 先写出来一个a[1];
  • 然后如果a[i-1]<a[i]的话就存放到b数组里面

题目也是让你从b—>a,用b推出a数组酱紫

输入:

Each test consists of multiple test cases. The first line of input data contains a single integer t (1≤t≤104) — the number of test cases. This is followed by a description of the test cases.

The first line of each test case contains a single integer n (1≤n≤2⋅105) — the length of the sequence b

The second line of each test case contains n
integers b1,b2,b3,…,bn (1≤bi≤10^9) — the elements of the sequence.

The sum of the values of n over all test cases does not exceed 2⋅10^5

输出:

For each test case, output two lines. In the first line, output a single integer m
— the length of the sequence (n≤m≤2⋅n). In the second line, output m integers a1,a2,a3,…,am (1≤ai≤109) — the assumed sequence that Vika could have written on the first piece of paper.

If there are multiple suitable sequences, you can output any of them.

在这里插入图片描述

思路:

emm勉强可以说是双指针算法吧,就是开一个result数组存放需要添加的内容,然后设置一个m=0指针去添加数据就行了

核心地方就是当遇到降序的时候:直接添加一个数字1解决所有问题,就这样…

代码:

#include<iostream>
using namespace std;int n,a[200005],m,b[400005];int main()
{int t;scanf("%d\n",&t);while(t--){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];m=0;b[++m]=a[1];for(int i=2;i<=n;i++){if(a[i]<a[i-1]) b[++m]=1;b[++m]=a[i];}printf("%d\n",m);for(int i=1;i<=m;i++) printf("%d ",b[i]);puts("");}return 0;
}

C. Flower City Fence

链接:C. Flower City Fence

题目:

Anya lives in the Flower City. By order of the city mayor, she has to build a fence for herself.
The fence consists of nplanks, each with a height of aimeters. According to the order, the heights of the planks must not increase. In other words, it is true that ai≥aj for all i<j.

Anya became curious whether her fence is symmetrical with respect to the diagonal. In other words, will she get the same fence if she lays all the planks horizontally in the same order.

For example, for n=5, a=[5,4,3,2,1], the fence is symmetrical. Because if all the planks are laid horizontally, the fence will be [5,4,3,2,1], as shown in the diagram.

在这里插入图片描述
But for n=3, a=[4,2,1], the fence is not symmetrical. Because if all the planks are laid horizontally, the fence will be [3,2,1,1], as shown in the diagram.

在这里插入图片描述
Help Anya and determine whether her fence is symmetrical.

输入:

The first line of the input contains an integer t (1≤t≤104) — the number of test cases.

The description of the test cases follows.

The first line of a test case contains a single integer n (1≤n≤2⋅105) — the length of the fence.

The second line of a test case contains n integers a1≥a2≥a3≥⋯≥an (1≤ai≤109) — the heights of the planks.

The sum of the values of n for all test cases does not exceed 2⋅105.

输出:

For each test case, output “YES” if the fence is symmetrical, otherwise output “NO”.

You can output each letter in any case (lowercase or uppercase). For example, the strings “yEs”, “yes”, “Yes” and “YES” will be accepted as a positive answer.

在这里插入图片描述

思路:

题目大意就是给你一个数组让你把这个数组抽象成长方体然后组合在一起,然后从对角线切分看是否关于切割线对称,如果对称就输出YES 否则 输出NO

算法标签:思维题

其实解决思路就是 a[a[i]]这个方法,其实a[a[i]]完美的解决了对称的问题,真的很不错,仔细想想是不是呢???
确实是这样的。

代码:

#include<stdio.h>int a[200005];void solve()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;++i){if(a[i]>n || a[a[i]]<i) {puts("No");return;}}puts("Yes");return;
}
int main()
{int t;scanf("%d",&t);while(t--) solve();return 0;
}

D. Ice Cream Balls

题目:

链接:D. Ice Cream Balls
Tema decided to improve his ice cream making skills. He has already learned how to make ice cream in a cone using exactly two balls.

Before his ice cream obsession, Tema was interested in mathematics. Therefore, he is curious about the minimum number of balls he needs to have in order to make exactly ndifferent types of ice cream.

There are plenty possible ice cream flavours: 1,2,3,…. Tema can make two-balls ice cream with any flavours (probably the same).

Two ice creams are considered different if their sets of ball flavours are different. For example, {1,2}={2,1}, but {1,1}≠{1,2}.

For example, having the following ice cream balls: {1,1,2}, Tema can make only two types of ice cream: {1,1} and {1,2}

Note, that Tema do not need to make all the ice cream cones at the same time. This means that he making ice cream cones independently. Also in order to make a following cone {x,x} for some x, Tema needs at least 2 balls of type x

Help Tema answer this question. It can be shown that answer always exist.

输入:

Each test consists of multiple test cases. The first line of input contains a single integer t (1≤t≤104) — the number of test cases. Then follows the description of the test cases.

The first line of each test case contains a single integer n (1≤n≤1018) — the number of ice cream types that Tema wants to make.

输出:

For each test case, output a single integer — the minimum number of balls Tema needs to buy.
在这里插入图片描述

思路:

可以抽象成为一个二叉树,就是一种雪糕必须有两种数字组合,然后我就蒙了哈哈哈,看大佬的代码大佬应该是总结出来了规律然后利用数学知识写出来了,反正我太菜了…对不起佬们

代码:

#include<iostream>
#include<cmath>using namespace std;int a[200005];void solve()
{long long n;cin>>n;long long p=(1+sqrt(n*8+1))/2;cout<<p+n-p*(p-1)/2<<endl;return;
}int main()
{long long t;cin>>t;while(t--) solve(); return 0;
}

E. Kolya and Movie Theatre

链接:E. Kolya and Movie Theatre

题目:

Recently, Kolya found out that a new movie theatre is going to be opened in his city soon, which will show a new movie every day for n days. So, on the day with the number 1≤i≤n, the movie theatre will show the premiere of the i-th movie. Also, Kolya found out the schedule of the movies and assigned the entertainment value to each movie, denoted by ai

However, the longer Kolya stays without visiting a movie theatre, the larger the decrease in entertainment value of the next movie. That decrease is equivalent to d⋅cnt, where d is a predetermined value and cnt is the number of days since the last visit to the movie theatre. It is also known that Kolya managed to visit another movietheatre a day before the new one opened — the day with the number 0. So if we visit the movie theatre the first time on the day with the number i, then cnt — the number of days since the last visit to the movie theatre will be equal to i

For example, if d=2 and a=[3,2,5,4,6], then by visiting movies with indices 1 and 3, cnt value for the day 1 will be equal to 1−0=1 and cnt value for the day 3 will be 3−1=2, so the total entertainment value of the movies will be a1−d⋅1+a3−d⋅2=3−2⋅1+5−2⋅2=2.

Unfortunately, Kolya only has time to visit at most m movies. Help him create a plan to visit the cinema in such a way that the total entertainment value of all the movies he visits is maximized.

输入:

Each test consists of multiple test cases. The first line contains a single integer t (1≤t≤104) — the number of test cases. The description of the test cases follows.

The first line of each test case contains three integers n, m, and d (1≤n≤2⋅105, 1≤m≤n, 1≤d≤109).

The second line of each set of input data contains n integers a1,a2,…,an (−109≤ai≤109) — the entertainment values of the movies.

It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.

输出:

For each test case, output a single integer — the maximum total entertainment value that Kolya can get.

在这里插入图片描述

思路:

算法标签:贪心算法

利用优先队列(priority_queue)的用法进行编写代码,优先队列的知识点:C++中优先队列的priority_queue<int,vector<int>,greater<int>>与priority<int>的用法

主要用优先队列存放大于0的元素,然后除了第一个数据后的每m个数据就可以存放到记录数组里面,最后遍历找价值最大的即可

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;int n,m,d,a[200005],b[200005];void solve()
{priority_queue<int,vector<int>,greater<int> >q;cin>>n>>m>>d;for(int i=1;i<=n;i++) cin>>a[i];int s=0,ans=0;for(int i=1;i<=n;i++){if(a[i]>0){s+=a[i];q.push(a[i]);while(q.size()>m) s-=q.top(),q.pop();}b[i]=s;}for(int i=1;i<=n;i++) ans=max(ans,b[i]-d*i);cout<<ans<<endl;
}signed main()
{int t;scanf("%lld\n",&t);while(t--) solve();return 0;
}

总结

第二次打CF Div3 比起大一寒假那次多写出来一道思维题,也算是有点点进步吧,今天早上起来锻炼完身体后就开始补题,把我蹦一蹦能够到的"桃子"给摘下来进行学习,虽然打的时候很坐牢,但是成长后的感觉真的很不错,慢慢进步慢慢比赛总会有一天你会变强的,加油夏目浅石.

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/104644.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java之AbstractQueuedSynchronizer

要让你写一个java版的并发同步库&#xff0c;你会怎么思考设计&#xff1f;&#xff1f;&#xff1f;先思考三五分钟 请先拜读下老外的paperhttp://gee.cs.oswego.edu/dl/papers/aqs.pdf 1. 简介 AbstractQueuedSynchronizer&#xff0c;简称AQS&#xff0c;中文翻译为抽象队…

Linux 多线程解决客户端与服务器端通信

一、一个服务器端只能和一个客户端进行通信&#xff08;单线程模式&#xff09; 客户端代码ser.c如下&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<sys/socket.h> #include<netinet…

java包的package-info.java文件

Java包的下面可以放一个package-info.java文件&#xff0c;在这个文件中声明包&#xff0c;在注释中增加包的介绍信息。这样javadoc工具就可以优先从这个文件中获取包的介绍信息。 例如Java工程&#xff0c;在包com.thb下面有package-info.java文件&#xff1a; package-inf…

STM32之17.PWM脉冲宽度调制

一LED0脉冲宽度调制在TIM14_CHI&#xff0c;先将LED&#xff08;PF9&#xff09;代码配置为AF推挽输出模式&#xff0c;将PF9引脚连接到TIM14&#xff0c; #include <stm32f4xx.h>static GPIO_InitTypeDef GPIO_InitStruct;void Led_init(void) {//打开端口F的硬件时钟&a…

成都睿趣科技:抖音开网店前期的流程是什么

随着互联网的快速发展&#xff0c;电子商务成为了商业领域中的一大利器&#xff0c;而在电商领域中&#xff0c;抖音作为一个强大的平台&#xff0c;也吸引了众多商家的目光。然而&#xff0c;要在抖音上开设一家成功的网店&#xff0c;并不是一件简单的事情&#xff0c;需要经…

微服务基础知识

文章目录 微服务基础知识一、系统架构的演变1、单体应用架构2、垂直应用架构3、分布式SOA架构&#xff08;1&#xff09;什么是SOA&#xff08;2&#xff09;SOA架构 4、微服务架构5、SOA和微服务的关系&#xff08;1&#xff09;SOA&#xff08;2&#xff09;微服务架构 二、分…

More Effective C++学习笔记(4)

目录 条款16&#xff1a;谨记 80 - 20 法则条款17&#xff1a;考虑使用lazy evaluation&#xff08;缓式评估&#xff09;条款18&#xff1a;分期摊还预期的计算成本条款19&#xff1a;了解临时对象来源条款20&#xff1a;协助完成 “ 返回值优化 ”条款21&#xff1a;利用重载…

JDBC基础

文章目录 创建依赖基本步骤案例1. statement案例&#xff08;不常用&#xff09;&#xff1a;2.prepared 案例&#xff08;常用&#xff09;3.prepared curd 案例&#xff08;获取列信息&#xff09;5.事务一致性&#xff08;转账&#xff09; 创建依赖 各个版本有各个的依赖包…

决策树算法:随机森林民主算法【02/2】

决策树民主&#xff1a;随机森林算法 一、介绍&#xff1a; 记住您在阅读亚马逊上的所有评论后进行的最后一次购买&#xff0c;或者在查看 IMDb 评级后您观看的以前的电影。人类是社会动物&#xff0c;他人的意见和行为自然会影响我们。我们的决定在很大程度上取决于“群体智慧…

Matlab分割彩色图像

彩色图像 彩色图像除有亮度信息外&#xff0c;还包含有颜色信息。以最常见的RGB&#xff08;红绿蓝&#xff09;彩色空间为例来简要说明彩色图像&#xff1a; 彩色图像可按照颜色的数目来划分。例如&#xff0c;256色图像和真彩色图像&#xff08;2的16次方&#xff1d;21677…

智信数科SMS短信平台安装教程

智信SMS客户端下载 使用智信SMS短信平台前&#xff0c;需要前往公司官网或者百度网盘共享地址下载最新版本的短信平台。 下载地址一&#xff1a;公司官网 下载地址二&#xff1a;百度网盘共享&#xff08;推荐&#xff09; 智信SMS客户端安装 安装前&#xff0c;确保您已经正…

【MySQL系列】Select语句单表查询详解(二)ORDERBY排序

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

Oracle的学习心得和知识总结(二十八)|Oracle数据库数据库回放功能之论文二翻译及学习

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

私有化部署即时通讯平台,30分钟替换钉钉和企业微信

随着企业对即时通讯和协作工具的需求不断增长&#xff0c;私有化部署的即时通讯平台成为企业的首选。WorkPlus作为有10余年行业深耕经验与技术沉淀品牌&#xff0c;以其安全高效的私有化部署即时通讯解决方案&#xff0c;帮助企业在30分钟内替换钉钉和企业微信。本文将深入探讨…

adb 命令

1.adb shell dumpsys activity top | find "ACTIVITY" 查看当前运行的activity包名 2.adb shell am start -n 包名/页面名 打开应用的页面 3.查看将要启动或退出app的包名 adb shell am monitor 只有在启动或退出的时候才会打印 4.查看当前启动应用的包名 ad…

【动手学深度学习】--20.目标检测和边界框

文章目录 目标检测和边界框1.目标检测2.边界框 目标检测和边界框 学习视频&#xff1a;物体检测和数据集【动手学深度学习v2】 官方笔记&#xff1a;目标检测和边界框 在图像分类任务中&#xff0c;我们假设图像中只有一个主要物体对象&#xff0c;我们只关注如何识别其类别…

用Idea把SpringBoot项目打包镜像上传至docker

1、设置docker把2375端口开起来 命令查看docker装在哪里 vim docker.service 新增 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 2、配置Dockerfile 我在跟pom同一层 3、配置docker-maven-plugin <plugin><groupId>com.spotify</groupId><arti…

c语言调用mciSendString播放音乐

如下所示&#xff0c;这是一个使用c语言调用系统方法mciSendString()&#xff0c;让系统播放音乐的示例&#xff1a; baihuaxiang 代码&#xff1a; #include <graphics.h> #include <Windows.h> #include <mmsystem.h>#pragma comment(lib,"WINMM.LIB…

element-ui中的el-table合并单元格

描述&#xff1a; 在写项目的时候有时候会经常遇到把行和列合并起来的情况&#xff0c;因为有些数据是重复渲染的&#xff0c;不合并行列会使表格看起来非常的混乱&#xff0c;如下&#xff1a; 而我们想要的数据是下面这种情况&#xff0c;将重复的行进行合并&#xff0c;使表…

STM32设置为I2C从机模式(HAL库版本)

STM32设置为I2C从机模式&#xff08;HAL库版本&#xff09; 目录 STM32设置为I2C从机模式&#xff08;HAL库版本&#xff09;前言1 硬件连接2 软件编程2.1 步骤分解2.2 测试用例 3 运行测试3.1 I2C连续写入3.2 I2C连续读取3.3 I2C单次读写测试 4 总结 前言 我之前出过一篇关于…