codeforces round 894题解 A~F

文章目录

  • A. Gift Carpet
    • 题目大意
    • 思路
    • AC代码
  • B. Sequence Game
    • 题目大意
    • 思路
    • AC代码
  • C. Flower City Fence
    • 题目大意
    • 思路
    • AC代码
  • D. Ice Cream Balls
    • 题目大意
    • 思路
    • AC代码
  • E. Kolya and Movie Theatre
    • 题目大意
    • 思路
    • AC代码
  • F. Magic Will Save the World
    • 题目大意
    • 思路
    • AC代码

A. Gift Carpet

A. Gift Carpet

题目大意

有n*m个格子,每个格子中有一个字符,问是否有从左往右的四列格子中,分别包含v,i,k,a四个字符。

思路

就从左往右枚举每一列,记录v,i,k,a有没有且是不是按顺序出现的。

AC代码

#include<iostream>
#include<map>
using namespace std;
char di[25][25];
char p[4] = { 'v','i','k','a' };
int main() {int t; cin >> t;while (t--) {map<char,int> mp;int n, m; cin >> n >> m;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> di[i][j];}}int tot = 0;for (int j = 1; j <= m; j++) {for (int i = 1; i <= n; i++) {if (di[i][j] == p[tot]) {tot++;break;}}if (tot == 4) {break;}}if (tot-1 == 3) cout << "YES" << endl;elsecout << "NO" << endl;}
}

B. Sequence Game

B. Sequence Game

题目大意

给定一个数组b,数组b中的元素是数组a中的元素中满足 a[i-1]<=a[i] 条件的a[i]。求一个可能的数组a。

思路

反着推回去,如果b[i-1]大于b[i],就在b[i]前面加上一个小于等于它的数。

AC代码

#include<iostream>
using namespace std;
const int M = 2e5 + 5;
typedef long long ll;
ll b[M];
ll a[M];
int main() {int t; cin >> t;while (t--) {int n; cin >> n;for (int i = 1; i <= n; i++) {cin >> b[i];}int tot = 0;a[++tot] = b[1];for (int i = 2; i <= n; i++) {if (b[i] >= b[i - 1]) {a[++tot] = b[i];}else {a[++tot] = b[i];a[++tot] = b[i];}}cout << tot << endl;for (int i = 1; i <= tot; i++) {cout << a[i] << " ";}cout << endl;}
}

C. Flower City Fence

C. Flower City Fence

题目大意

判断高度递减,宽度相等的几块长木板组成的形状是否是轴对称图形。

思路

不太好表述,可以就这样例画一画图,就会发现一些有趣的事情

AC代码

#include<iostream>
#include<map>
#include<cstring>
using namespace std;
typedef long long ll;
const int M = 2e5 + 5;
ll a[M];
ll cnt[M];
int main() {int t; cin >> t;while (t--) {int n; cin >> n;map<int, int> mp;memset(cnt, 0, sizeof(cnt));for (int i = 1; i <= n; i++) {cin >> a[i];}int f = 0;int pre = 0; mp[pre] = 0;for (int i = 1; i <= n; i++) {ll len = a[i];/*if (len > n||len<n) {f = 1;break;}if(len==n)*/mp[len]=mp[pre]+1;pre = len;}/*for (auto it : mp) {cout << it.first << " " << it.second << endl;}*/for (auto it : mp) {if (it.first>n||a[it.first] != it.second) {f = 1;break;}}if (f == 1) {cout << "NO" << endl;}elsecout << "YES" << endl;}
}

D. Ice Cream Balls

D. Ice Cream Balls

题目大意

给定一个集合,给定一个数n,求得到n种无序二元关系所需要的集合元素的最少数量。即{1,2}、{2,1}视为一种二元关系。

思路

给一个集合
{1,2,3,4},可以组成的二元关系如下:

  • {1,2}、{1,3}、{1,4}、{2,3}、{2,4}、{3,4} 一共6种,不难看出是C(4,2) 的排列组合关系。

而{1,1,2,3,4} 比上面多了一组{1,1}
{1,1,2,2,3,4} 比上面多了两组{1,1}、{2,2}
所以只要求出得到最接近n种无序关系的不同元素的数量s,然后再和n做差,将得到的差加到s种就可以得到结果。即s+n-(s-1)*s/2。
寻找不同元素数量的过程可以用二分查找来完成。注意二分边界。

AC代码

#include<iostream>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
bool che(ull x, ull n) {if (x * (x - 1) >= 2 * n) return false;elsereturn true;
}
ull check(ull n) {ull l = 2; ull r = 2e9+10;ull res = 0;while (l < r) {ull mid = (l + r) >> 1;if (che(mid, n)) {//	res = mid;l = mid+1;}elser = mid;}ull tmp = ((l -1) * l) / 2;//cout << tmp << endl;/*ull cha =n-tmp;cout << cha << endl;*/if (tmp == n) {return l;}else {ull p = l - 1; ull s = p * (p - 1) / 2;//	cout << s << endl;return p+n - s;}
}
int main() {int t; cin >> t;while (t--) {ull n; cin >> n;if (n == 1) {cout << "2" << endl;continue;}ull p=check(n);cout << p << endl;}
}

E. Kolya and Movie Theatre

E. Kolya and Movie Theatre

题目大意

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路

分析可知,当第i天最后一次去电影院是,减去的数大小为 i*d,所以可以枚举最后一次去电影院是哪一天,这里就是核心,剩下的用单增优先队列或者multiset处理就好,维护队列大小为m。队满后如果队头小于当前元素,就弹出队头,压入当前元素,这样可以保证每次更新都是最优的。

AC代码

#include<iostream>
#include<set>using namespace std;
const int M = 2e5 + 5;
typedef long long ll;
ll a[M];
multiset<ll> p;
void sove() {p.clear();ll n, m, d; cin >> n >> m >> d;ll sum = 0; ll ans = 0;for (int i = 1; i <= n; i++) {cin >> a[i];if (a[i] > 0 && p.size() < m) {p.insert(a[i]);sum += a[i];}else if (p.size() >= m && *p.begin() < a[i]) {sum -= *p.begin();p.erase(p.begin());sum += a[i];p.insert(a[i]);}ans = max(ans, sum - i * d);}cout << ans << endl;
}int main() {int t; cin >> t;while (t--) {sove();}
}

F. Magic Will Save the World

F. Magic Will Save the World

题目大意

一个魔法师,每秒钟可以恢复w个单位的水魔法和f个单位的火魔法,有n个怪,每个怪都有血量,求魔法师最少多久消灭所有的怪。

思路

** 后面补上,先上代码**

AC代码

#include<iostream>
#include<bitset>
using namespace std;
typedef long long ll;
int s[105];
int pre[105];
const int M = 1e6 + 10;
bitset<M> bt;
int main() {int t; cin >> t;while (t--) {int w, f; cin >> w >> f;int n; cin >> n;int num = 0;bt.reset();bt[0] = 1;for (int i = 1; i <= n; i++) {cin >> s[i];bt |= bt << s[i];num += s[i];}//	ll bitn=toBit(n);//	cout << bitn << endl;int ans = 0x3f3f3f3f;for (int i = 0; i <= num; i++)if(bt[i]){//	cout << "sumw  " << sumw << endl;int p1 = num - i;//	cout << p3 << endl;ans = min(ans, max((i+w-1)/w,(p1+f-1)/f));}cout << ans << endl;}
}

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

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

相关文章

【软件工程】可执行文件和数据分离

一、概述 可执行文件和数据分离是一种软件设计策略&#xff0c;旨在将程序代码和程序使用的数据分离存储。这种方法通常用于提高软件的模块化程度和灵活性&#xff0c;以及方便软件的管理和维护。 在可执行文件和数据分离中&#xff0c;程序代码通常以可执行文件的形式存储&a…

搭建Nginx文件下载站点

一、下载Nginx 首先&#xff0c;确保你的服务器上已经安装了Nginx&#xff0c;使用编译安装&#xff0c;下载最新版Nginx。 wget https://nginx.org/download/nginx-1.25.3.tar.gz tar -xf nginx-1.25.3.tar.gz二、安装Fancyindex和Nginx-Fancyindex-Theme模块 # 下载Fancyin…

MyBatis:Generator

MyBatis Generator附批量操作分页查询存储过程 Generator 介绍网址&#xff1a;Introduction to MyBatis Generator Generator &#xff0c;一个用于 MyBatis 的代码生成工具&#xff0c;可以根据数据库表结构自动生成对应的实体类、DAO 接口和 SQL 映射文件&#xff0c;提高…

java练习之abstract (抽象) final(最终) static(静态) 练习

1&#xff1a;分析总结&#xff1a;写出private、abstract、static、final之间能否联动使用&#xff0c;并写出分析原因 private static final 之间可以任意结合 abstract 不可以与private static final 结合使用 2&#xff1a;关于三个修饰符描述不正确的是(AD) A. static …

网络编程--socket编程

这里写目录标题 套接字概念通信原理总结 预备知识网络字节序简介字节转换函数 IP地址转换函数为什么单独列出函数原型sockaddr结构体 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 套接字 概念 Socket本身有插座的意思&#xff0c;但他是进程之间网络通…

Win10搜索功能失效用不了的解决方法

在Win10电脑中&#xff0c;用户点击搜索框&#xff0c;输入想要搜索的内容&#xff0c;点击搜索即可。但是&#xff0c;有用户遇到了搜索功能坏掉的问题&#xff0c;导致自己不能正常使用搜索功能。下面小编将带来Win10系统搜索功能失效用不了的简单解决方法&#xff0c;操作后…

【开源】基于JAVA语言的学校热点新闻推送系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 新闻类型模块2.2 新闻档案模块2.3 新闻留言模块2.4 新闻评论模块2.5 新闻收藏模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 新闻类型表3.2.2 新闻表3.2.3 新闻留言表3.2.4 新闻评论表3.2.5 新闻收藏表 四、系统展…

2024年【四川省安全员A证】及四川省安全员A证实操考试视频

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 四川省安全员A证是安全生产模拟考试一点通总题库中生成的一套四川省安全员A证实操考试视频&#xff0c;安全生产模拟考试一点通上四川省安全员A证作业手机同步练习。2024年【四川省安全员A证】及四川省安全员A证实操考…

枚举(蓝桥杯备赛系列)acwing版

枚举 前言 hello&#xff0c;大家好&#xff0c;前面一段时间已经是把acwing Linux基础课讲完了&#xff0c;其实那些内容完全可以带领小白入门Linux我说过如果有人留言要Linux和Windows server 配置DNS Web ftp 的内容我就做一期&#xff0c;但是没人留言我也就先不自作多情了…

三菱PLC开关量防抖滤波功能块

开关量防抖滤波功能块梯形图和SCL代码请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/134936233https://rxxw-control.blog.csdn.net/article/details/134936233三菱PLC防抖滤波的另一种写法如下 https://rxxw-control.blog.csdn.net/article/det…

时间和空间复杂度

目录 算法的复杂度 时间复杂度 大O的渐进表示法 各种求时间复杂度例题&#xff1a; 计算冒泡排序的时间复杂度&#xff1a; 计算两个循环的时间复杂度&#xff1a; 计算二分查找的时间复杂度&#xff1a; 计算阶乘递归的时间复杂度&#xff1a; 计算斐波那契递归的时间…

2023年12月25日学习总结——MLP

&#x1f4a1;我准备每一天都写一个学习总结&#xff0c;周末再把每日的学习总结汇总成专门的文章 &#x1f506;我的学习总结主要是为了自己的个人学习&#xff0c;没有商业用途&#xff0c;侵删 okkk开始今日学习 目录 1、今日计划学习内容2、今日学习内容深入学习MLP&#…