Codeforces Round 916 (Div. 3)(A~F)

文章目录

  • Problems A. Problemsolving Log
    • 思路
    • 标程
  • Problems B. Preparing for the Contest
    • 思路
    • 标程
  • Problems C. Quests
    • 思路
    • 标程
  • Problems D. Three Activities
    • 思路
    • 标程
  • Problems E1&E2. Game with Marbles
    • 思路
    • 标程
  • Problems F. Programming Competition
    • 思路
    • 标程

题目地址Codeforces Round 916 (Div. 3)

标程给出了伪代码,完整代码模板在最后一题。

Problems A. Problemsolving Log

思路

给出一个字符串,字符串包含 A − Z A-Z AZ,表示 26 26 26个问题, A − Z A-Z AZ的难度分别为 1 − 26 1-26 126。字符串第 i i i个位置出现的问题表示当前在思考该问题。解决每个问题需要思考该问题的时间大于等于其难度,因此直接用一个map来记录即可,当该问题被解决后,将其赋值为 − I N F -INF INF

标程

void Solved() {int n; cin >> n;string s; cin >>s;int res = 0;map<char, int> mp;for(int i = 0; i < n; i ++ ) {mp[s[i]] ++;if(mp[s[i]] >= s[i] - 'A' + 1) {res ++;mp[s[i]] = -INF;}}cout << res << endl;
}

Problems B. Preparing for the Contest

思路

题目给定两个整数 n , k n,k n,k,分别表示有元素为 1 − n 1-n 1n的数列, k k k表示数列中有 k k k a i < a i + 1 a_i < a_{i+ 1} ai<ai+1的组合。要求输出符合题目要求的数组排列。

我们只需要顺序输出前 k k k个元素然后逆序输出剩余元素即可得到。

标程

void Solved() {int n, k; cin >> n >> k;for(int i = 1;  i <= k; i ++ ) {cout << i  << " ";}for(int i = n; i > k; i --  ) {cout << i << " ";}cout << endl;
}

Problems C. Quests

思路

题目给定 n , k n,k n,k,表示有编号为 1 − n 1-n 1n n n n个任务,然后Monocarp可以完成 k k k个任务,每个任务可重复完成。

每个任务有两个经验值,第一个经验值是第一次完成任务时能获得的经验值,第二个经验值是之后重复完成时每次能获得的经验值。

题目要求输出最大经验值。

我们考虑到完成第 i i i个任务的前提是完成前 i − 1 i-1 i1个任务。假设我们需要完成前 i ( i < k ) i(i<k) i(i<k)个任务,那么至少需要完成 i i i个任务,多余的任务我们可以选前 i i i个任务中第二个经验值最大的任务来做。

那么结果为: r e s = M A X ( ∑ j = 1 i a [ j ] + c [ i ] × ( k − i − 1 ) ) res = MAX(\sum_{j=1}^{i}{a[j]}+c[i] \times(k-i-1)) res=MAX(j=1ia[j]+c[i]×(ki1)),$0\le i \le MIN(n-1, k-1) $, i i i为枚举的前若干项, c [ i ] c[i] c[i]为前 i i i中第二经验值的最大值。

标程

#define int long long
void Solved() {int n, k; cin >> n >> k;vector<int> a(n), b(n), c(n);for(auto &i : a) cin >> i;for(auto &i : b) cin >> i;for(int i = 1; i < n; i ++ ) {a[i] += a[i - 1];}int mx = 0;for(int i = 0; i < n; i ++) {if(b[i] > mx) c[i] = b[i], mx = b[i];else c[i] = mx;}int res = 0;for(int i = min(n - 1, k - 1); i >= 0; i -- ) {res = max(res, a[i] + c[i] * (k - i - 1));}cout << res << endl;
}

Problems D. Three Activities

思路

给定三个长度为 n n n的数组,要求从每个数组中选择一个数,要求选择的三个整数下标互不相同且总和最大。

所选的数字必定为三个数组中前三大的数字,因此用sort排个序,然后枚举一下所有可能,输出最大值即可。

标程

#define int long long 
#define ALL(x) x.begin(), x.end()bool cmp(PII n1, PII n2) {return n1.fi < n2.fi;
}void Solved() {int n; cin >> n;vector<PII> a(n), b(n), c(n);vector<PII> x, y, z;int res = 0;for(int i = 0; i < n; i ++ ) {cin >> a[i].fi; a[i].se = i;}for(int i = 0; i < n; i ++ ) {cin >> b[i].fi; b[i].se = i;}for(int i = 0; i < n; i ++ ) {cin >> c[i].fi; c[i].se = i;}sort(ALL(a)); sort(ALL(b)); sort(ALL(c));for(int i = n - 3; i < n; i ++ ) {for(int j = n - 3; j < n; j ++ ) {if(a[i].se == b[j].se) continue;for(int k = n - 3; k < n; k ++ ) {if(a[i].se == c[k].se) continue;if(b[j].se == c[k].se) continue;res = max(res, a[i].fi + b[j].fi + c[k].fi);}}}cout << res << endl;
}

Problems E1&E2. Game with Marbles

思路

根据题目设置的游戏条件,每次一个人选择一个颜色的弹珠,然后将自己的该弹珠个数减一,并将对方的减为零,当有一方该颜色弹珠个数为零时不能选择改颜色。当所有颜色都不能选时游戏结束。Alice和Bob都希望游戏结束后自己的弹珠比对方的多。

容易发现,当前选择的最优解必然是选择两种玩家弹珠数之和最大的颜色。当选择两玩家弹珠数之和最大的颜色时,可令两玩家弹珠总和之差拉开最大。

按照最优方式,玩家选择的颜色顺序是根据两玩家该颜色总和降序来选,因此我们按照总和最大对颜色进行排序,然后进行遍历。

当为奇数步时,Alice选择,则 r e s + = a [ i ] . a − 1 res+=a[i].a-1 res+=a[i].a1,因为此时 a [ i ] . b = 0 a[i].b = 0 a[i].b=0,因此 a [ i ] . a − 1 a[i].a-1 a[i].a1可以表示为这次选择将会拉开的差距。偶数步同上。

标程

#define int long long 
#define ALL(x) x.begin(), x.end()struct node {int a, b, c, x;};bool cmp(node n1, node n2) {return n1.c > n2.c;
}void Solved() {int n; cin >> n;vector<node> a(n);int res = 0;for(auto &i : a) cin >> i.a;for(auto &i : a) cin >> i.b;for(int i = 0; i < n; i ++ ) {a[i].c = a[i].a + a[i].b;a[i].x = i;}sort(ALL(a), cmp);for(int i = 0; i < n; i ++ ) {if((i + 1) & 1) {res += a[i].a - 1;} else {res -= a[i].b - 1;}}cout << res << endl;
}

Problems F. Programming Competition

思路

给出 n n n个节点,然后给出 2 − n 2-n 2n的父节点,要求找出组合 ( a , b ) (a,b) (a,b) a , b a,b a,b相互不为其父节点或父节点的父节点的个数。

标程

#include<bits/stdc++.h>using namespace std;#define IOS ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr);
#define LL long long 
#define ULL unsigned long long 
#define PII pair<int, int>
#define lowbit(x) (x & -x)
#define Mid ((l + r) >> 1)
#define ALL(x) x.begin(), x.end()
#define endl '\n'
#define fi first 
#define se secondconst int INF = 0x7fffffff;
const int Mod = 1e9 + 7;
const int N = 2e5 + 10;	vector<int> a[N];
int b[N], f[N];void dfs(int u) {int id = 0;b[u] = f[u] = 1;for(auto v : a[u]) {dfs(v);b[u] += b[v];if(b[v] > b[id]) id = v;}f[u] = 1 + ((b[u] - 1) & 1);if(f[id] > b[u] - 1 - b[id]) f[u] = 1 + f[id] - (b[u] - 1 - b[id]);
}void Solved() {int n; cin >> n;for(int i = 1; i <= n; i ++ ) a[i].clear(), b[i] = f[i] = 0;for(int i = 2; i <= n; i ++ ) {int x; cin >> x;a[x].push_back(i);}dfs(1);cout << (n - f[1]) / 2 << endl;
}signed main(void) {IOSint ALL = 1; cin >> ALL;while(ALL -- ) Solved();// cout << fixed;//强制以小数形式显示// cout << setprecision(n); //保留n位小数return 0;
}

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

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

相关文章

基于alibaba druid的血缘解析工具

基于alibaba druid的血缘解析 1、前言 仅仅对mysql数据库的select查询语句进行了血缘解析&#xff0c;该血缘解析包含了原始表字段、临时表字段和目标表字段的关联关系。 2、涉及到技术 主要使用了druid的如下接口对语法树进行解析&#xff1a; &#xff08;1&#xff09;…

JavaWeb笔记之前端开发CSS

一 、引言 1.1 CSS概念 层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML&#xff08;标准通用标记语言的一个应用&#xff09;或XML&#xff08;标准通用标记语言的一个子集&#xff09;等文件样式的计算机语言。CSS不仅可以静态地修饰网页&…

美颜技术详解:深入了解视频美颜SDK的工作机制

本文将深入探讨视频美颜SDK的工作机制&#xff0c;揭示其背后的科技奥秘和算法原理。 1.引言 视频美颜SDK作为一种集成到应用程序中的技术工具&#xff0c;通过先进的算法和图像处理技术&#xff0c;为用户提供令人印象深刻的实时美颜效果。 2.视频美颜SDK的基本工作原理 首…

如何理解归一化和对数转换 sc.pp.normalize_total sc.pp.log1p seurat scanpy

1 normalize # Normalize data sc.pp.normalize_total(adata_vis_plt, target_sum1e4)这段代码使用了sc.pp.normalize_total()函数对数据进行归一化处理。normalize_total()函数是Scanpy库&#xff08;用于单细胞RNA测序分析的Python库&#xff09;中的一个函数。它将adata_v…

SVN小白常见操作流程

SVN小白常见操作流程 一、什么是Subversion&#xff1f;二、TortoiseSVN客户端安装教程三、SVN 操作3.1 SVN Ckeckout(检出)3.2 Add(新增文件)3.3 SVN Commit(提交)3.4 SVN Update(更新操作)3.5SVN Delete(删除操作)3.6 SVN Revert to a revision(版本回溯)3.7 不同版本内容之间…

Jenkins 执行远程脚本的插件—SSH2 Easy

SSH2 Easy 是什么&#xff1f; SSH2 Easy 是一个 Jenkins 插件&#xff0c;它用于在 Jenkins 构建过程中通过 SSH2 协议与远程服务器进行交互。通过该插件&#xff0c;用户可以在 Jenkins 的构建过程中执行远程命令、上传或下载文件、管理远程服务器等操作。 以下是 SSH2 Eas…

vue3使用mock模拟后端接口

安装mock axios yarn add mock yarn add axios 新建在src/mockdata/automenu.js 模拟后端的json数据格式 import Mock from mockjs Mock.mock(/menu,get,{status: 200,menuList: [{id : 1,iconCls: "fa fa-window",name: 系统管理,url: /},{id: 2,icon: icon-j…

YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)

一、本文介绍 本文给大家带来的改进机制是MobileNetV1&#xff0c;其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构&#xff0c;并利用深度可分离卷积构建轻量级深度神经网络&#xff0c;其引入了两个简单的全局超参数&#xff0c;用于在延迟和准确…

【C语言】指针详解(一)

目录 1.内存和地址 1.1内存 1.2如何理解编址 2.指针变量和地址 2.1取地址操作符&#xff08;&&#xff09; 2.2指针变量和解引用操作符&#xff08;*&#xff09; 2.2.1指针变量 2.2.2拆解指针类型 2.2.3解引用操作符 2.3指针变量大小 1.内存和地址 1.1内存 在讲内…

《数据分析-JiMuReport》积木报表详细入门教程

积木报表详细入门教程 一、JimuReport部署入门介绍 积木报表可以通过源码部署、SpringBoot集成、Docker部署以及各种成熟框架部署&#xff0c;具体可查看积木官方文档 当前采用源码部署&#xff0c;首先下载Jimureport-example-1.5.6 1 jimureport-example目录查看 使用ID…

自动气象监测站助力生活生产

随着科技的发展&#xff0c;我们的生活和生产方式正在发生着日新月异的变化。其中&#xff0c;WX-CQ12 自动气象监测站作为一项气象监测设备&#xff0c;正在发挥着越来越重要的作用。它不仅为我们提供了更加准确、实时的天气信息&#xff0c;还为农业、交通、旅游等领域提供了…

Python实现链接AWS S3,并将数据上传到AWS S3

前言 本文是该专栏的第40篇,后面会持续分享python的各种干货知识,值得关注。 使用python在处理某些项目的时候,偶尔会遇到需要将“本地数据源”或“数据库数据”上传到AWS S3的需求。AWS S3(Simple Storage Service)是一个公开的服务,Web应用程序开发人员一般可以使用它…

python flask+vue实现前后端图片上传

python flaskvue实现前后端图片上传 vue代码如下&#xff1a; <template><div><input type"file" change"handleFileChange"/><button click"uploadFile">上传</button><br><img :src"imageUrl&…

uniapp如何原生app-云打包

首先第一步&#xff0c;需要大家在HBuilder X中找到一个项目&#xff0c;然后呢在找到上面的发行选项 发行->原生App-云打包 选择完该选中的直接大包就ok。 大包完毕后呢&#xff0c;会出现一个apk包&#xff0c;这是后将这个包拖动发给随便一个人就行了。 然后接收到的那…

2-高可用-负载均衡、反向代理

负载均衡、反向代理 upstream server即上游服务器&#xff0c;指Nginx负载均衡到的处理业务的服务器&#xff0c;也可以称之为real server,即真实处理业务的服务器。 对于负载均衡我们要关心的几个方面如下&#xff1a; 上游服务器配置&#xff1a;使用upstream server配置上…

摄像头画面作为电脑桌面背景

1. 创建文件main.pyw&#xff0c;文件内容 import base64 import io import os import threading import tkinter as tkimport cv2 import pystray import win32api import win32con import win32gui from PIL import Image, ImageTk from pystray import MenuItem, Menuclass…

Linux之yum管理器

目录 yum管理器 yum相关指令 yum list yum list | grep yum install yum remove 拓展 1.yum install -y man-pages 2.切换yum源 3.yum install -y epel-release 4. yum install -y lrzsz rz指令 sz指令 在window系统上&#xff0c;我们会在电脑自带的应用商…

分布式编译distcc

工程代码编译速度太慢&#xff0c;决定采用分布式编译来提高编译速度. distcc &#xff0c;请参考https://www.distcc.org/ 安装 我用的distcc的版本是distcc-3.2rc1, 下载源码&#xff0c;安装步骤如下&#xff1a; ./autogen.sh ./configure --disable-Werror --prefix/…

<软考高项备考>《论文专题 - 20 资源管理(六) 》

8 过程6-控制资源 8.1 提出问题 问题过程2-活动资源估算做什么确保按计划为项目分配实物资源&#xff0c;以及根据资源使用计划监督资源实际使用情况&#xff0c;并采取必要纠正措施的过程;作用&#xff1a;①确保所分配的资源适时、适地可用于项目;②资源在不再需要时被释放…

mac电脑安装虚拟机教程

1、准备一台虚拟机&#xff0c;安装CentOS7 常用的虚拟化软件有两种&#xff1a; VirtualBoxVMware 这里我们使用VirtualBox来安装虚拟机&#xff0c;下载地址&#xff1a;Downloads – Oracle VM VirtualBox 001 点击安装 002 报错&#xff1a;he installer has detected an…