当前位置: 首页 > news >正文

Codeforces EDU 151 Div.2

文章目录

    • A. Forbidden Integer
    • B. Come Together
    • C. Strong Password
    • D. Rating System
    • E. Boxes and Balls

A. Forbidden Integer

Problem - A - Codeforces
image.png

给定整数n,从1~k中选择除了x的数,使这些数之和为n,每个数可以选择无限次
爆搜,从k搜索到1,若当前搜索的数之和为n,返回true

#include <iostream>
using namespace std;const int N = 110;
int T, n, x, k;
int idx, p[N];bool dfs(int s, int start)
{if (start == -1) return false;if (s >= n) return s == n;for (int i = start; i >= 1; -- i ){if (i != x){p[idx ++ ] = i;if (dfs(s + i, start)) return true;idx -- ;}}return dfs(s, start - 1);
}int main()
{cin >> T;while ( T -- ){cin >> n >> k >> x;idx = 0;if (dfs(0, k)){puts("YES");cout << idx << endl;for (int i = 0; i < idx; ++ i ) cout << p[i] << ' ';cout << endl;}else puts("NO");}return 0;
}

B. Come Together

Problem - B - Codeforces
image.png

给定三个点,A为起点,BC为终点,从起点走到两个终点的最短路中,最长的公共路径长度是多少?
这是个我的错误思路:一开始以为是bfs最短路,想着在bfs的过程中记录路径
但是矩阵中没有障碍物,完全没有必要bfs,直接将起点于终点的横纵坐标之差相加,就是最短距离了
你可以发现,所有最短路中,无论怎么走,横向距离都是起点与终点的横坐标之差,当然纵向距离也是,所以有了以上结论
那么两条最短路的公共路径呢?将横纵方向分开来看,对于横坐标,若两者的终点都在起点的同一方向(都位于左边或左边),此时横向的最短距离等于横向距离离起点近的终点的横向距离,即 m i n ( x b , x c ) min(x_b, x_c) min(xb,xc)。若两者位于起点的左右两边,那么在横向距离上两者没有公共路径。同理,纵向距离也是如此

#include <iostream>
using namespace std;typedef long long LL;
LL T, xa, ya, xb, yb, xc, yc;int main()
{cin >> T;while ( T -- ){int ans = 0;cin >> xa >> ya >> xb >> yb >> xc >> yc;xb -= xa, yb -= ya, xc -= xa, yc -= ya; // 以a为源点if ((xb > 0) == (xc > 0)) ans += min(abs(xb), abs(xc));if ((yb > 0) == (yc > 0)) ans += min(abs(yb), abs(yc));cout << ans + 1 << endl;}return 0;
}

debug:若用xb * xc > 0判断两点是否位于源点的同一方向,相乘会爆int


C. Strong Password

Problem - C - Codeforces
image.png

题目只要求输出YES和NO,没有要求输出具体的序列,所以这题不用想得太复杂
比较暴力的解法是枚举所有可能的序列,用爆搜判断该序列是否为s的子序列,只要有一个序列不是s的子序列就输出YES,否则输出NO
考虑暴力如何优化?两个优化方向:枚举所有可能的序列和爆搜判断

枚举所有可能的序列不太好优化
关于爆搜的优化:由于s中只有字符19,可以预处理出第i个字符右边(包括第i个字符),19第一次出现的位置,若没有出现,位置用无穷表示
枚举t串时,t串的每个字符都有一个范围,假设t串的字符在s串中出现的下标为 x x x,若 x x x越大,s串中用来组成t串的字符就越少,出现相同子序列的概率就越低
以上贪心策略用反证法可以证明正确性,因此对于t串的每个字符,根据每个字符的范围以及字符在s串中出现的位置,确定一个下标最大的字符即可
遇到无穷直接输出YES即可

#include <iostream>
#include <cstring>
using namespace std;const int N = 3e5 + 10, M = 15;
char s[N], l[M], r[M];
int last[N][M], T, m;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cin >> T;while ( T -- ){cin >> s >> m >> l >> r;int len = strlen(s);memset(last[len], 0x3f, sizeof last[len]);for (int i = len - 1; i >= 0; -- i ){memcpy(last[i], last[i + 1], sizeof last[i + 1]);last[i][s[i] - '0'] = i;}int cur = -1; // cur和next为搜索s串的双指针for (int i = 0; i < m && cur != 0x3f3f3f3f; ++ i ){int next = 0;for (int j = l[i] - '0'; j <= r[i] - '0'; ++ j ){next = max(next, last[cur + 1][j]);}   cur = next;}cout << (cur == 0x3f3f3f3f ? "YES\n" : "NO\n");}return 0;
}

debug:如果memset(last[len], 0x3f, sizeof last[len])写成memset(last, 0x3f, sizeof last),直接memset整个last数组会TLE的,考虑到预处理的顺序,只要初始化最后一个一维数组即可last[len]


D. Rating System

Problem - D - Codeforces
image.png

看着像是求最大子段和,一开始也是这么想的,但是仔细一想却是不对的
参考视频:最小子段和 动态规划【Codeforces EDU 151】_哔哩哔哩_bilibili

image.png

确定一个k值,使分数大于等于k值后不会小于k值,也就是说:抵消分数递达k之后的减分行为
问k为多少,最后的分数最高?显然,抵消的分数越多,最后的分数越高
题目给定每一次分数的变化,即用 a i a_i ai的正负表示分数的加减变化。若要抵消最多的减分,就要找出数组中的最小连续子段和 [ a i , a r ] [a_i, a_r] [ai,ar],再将k设置为 s u m ( a 0 , a i − 1 ) sum(a_0, a_{i-1}) sum(a0,ai1)
通常求最小子段和,都是使用dp,然而这题求的并不是具体的最小子段和,这题求的是最小子段和的左区间,以及一个前缀和信息。因此只需要在求前缀和的过程中,维护最小子段和的左区间信息即可

#include <iostream>
using namespace std;typedef long long LL;
const int N = 3e5 + 10;
int a[N], T;int main()
{cin >> T;while ( T -- ){int n;cin >> n;for (int i = 0; i < n; ++ i ) cin >> a[i];LL ans = 0, sum = 0, cmax = 0, k;for (int i = 0; i < n; ++ i ){sum += a[i];cmax = max(cmax, sum);LL val = cmax - sum;if (ans < val){ans = val;k = cmax;}}cout << k << endl;}return 0;
}

E. Boxes and Balls

Problem - E - Codeforces
image.png

数组中有n个0和1,至少有一个0和1,每次选择一对相邻的0和1进行交换,问经过k次交换后,存在多少种不同的数组?

有些难,以后再来补

相关文章:

Codeforces EDU 151 Div.2

文章目录 A. Forbidden IntegerB. Come TogetherC. Strong PasswordD. Rating SystemE. Boxes and Balls A. Forbidden Integer Problem - A - Codeforces 给定整数n&#xff0c;从1~k中选择除了x的数&#xff0c;使这些数之和为n&#xff0c;每个数可以选择无限次 爆搜&…...

V2board缓存投毒漏洞复现

1.什么是缓存投毒 缓存投毒&#xff08;Cache poisoning&#xff09;&#xff0c;通常也称为域名系统投毒&#xff08;domain name system poisoning&#xff09;&#xff0c;或DNS缓存投毒&#xff08;DNS cache poisoning&#xff09;。它是利用虚假Internet地址替换掉域名系…...

2023面试八股文 ——Java基础知识

Java基础知识 一.Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性&#xff1f;原理是什么Java语言有哪些特点什么是字节码&#xff1f;采用字节码的大好处是什么什么是Java程序的主类&#xff1f;应用程序和小程序的主类有何不同&#xff1f…...

在linux系统中修改mysql数据目录

目录 1.查看mysql默认存储路径2.停止mysql服务3.移动或复制原数据目录4.修改配置文件5.修改启动文件6.配置AppArmor访问控制规则7.重启apparmor服务8.启动mysql 1.查看mysql默认存储路径 在/etc/mysql/mysql.conf.d/mysqld.cnf中的datadir配置项。 datadir /var/lib/mysql2…...

ORB-SLAM2学习笔记9之图像帧Frame

先占坑&#xff0c;明天再完善… 文章目录 0 引言1 Frame类1.1 成员函数1.2 成员变量 2 Frame类的用途 0 引言 ORB-SLAM2学习笔记8详细了解了图像特征点提取和描述子的生成&#xff0c;本文在此基础上&#xff0c;继续学习ORB-SLAM2中的图像帧&#xff0c;也就是Frame类&#…...

面试热题(不同的二分搜索树)

给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 经典的面试题&#xff0c;这部分涉及了组合数学中的卡特兰数&#xff0c;如果对其不清楚的同学可以去看我以前的博客卡特兰数 …...

MybatisPlus整合p6spy组件SQL分析

目录 p6spy java为什么需要 如何使用 其他配置 p6spy p6spy是一个开源项目&#xff0c;通常使用它来跟踪数据库操作&#xff0c;查看程序运行过程中执行的sql语句。 p6spy将应用的数据源给劫持了&#xff0c;应用操作数据库其实在调用p6spy的数据源&#xff0c;p6spy劫持到…...

项目实战 — 博客系统③ {功能实现}

目录 一、编写注册功能 &#x1f345; 1、使用ajax构造请求&#xff08;前端&#xff09; &#x1f345; 2、统一处理 &#x1f384; 统一对象处理 &#x1f384; 保底统一返回处理 &#x1f384; 统一异常处理 &#x1f345; 3、处理请求 二、编写登录功能 &#x1f345; …...

卷积神经网络全解:(AlexNet/VGG/ GoogLeNet/LeNet/ResNet/卷积/激活/池化/全连接)、现代卷积神经网络、经典卷积神经网络

CNN&#xff0c;卷积神经网络&#xff0c;Convolution Neural Network 卷积计算公式&#xff1a;N &#xff08;W-F2p&#xff09;/s1 这个公式每次都得看看&#xff0c;不能忘 1 经典网络 按照时间顺序 1.1 LeNet LeNet是 Yann LeCun在1998年提出&#xff0c;用于解决手…...

WDM 模型(Windows Driver Model)简述

WDM 模型(Windows Driver Model) 是微软公司为 Windows98 和 Windows2000 的驱动程序设计的一种架构&#xff0c;在 WDM 驱动程序模型中&#xff0c;每个硬件设备 至少有两个驱动程序。其中一个为功能驱动程序&#xff0c;它了解硬件工作的所有细节&#xff0c;负 责初始化 …...

【算法刷题之数组篇(1)】

目录 1.leetcode-59. 螺旋矩阵 II&#xff08;题2.题3相当于二分变形&#xff09;2.leetcode-33. 搜索旋转排序数组3.leetcode-81. 搜索旋转排序数组 II(与题目2对比理解)&#xff08;题4和题5都是排序双指针&#xff09;4.leetcode-15. 三数之和5.leetcode-18. 四数之和6.leet…...

【数据挖掘】使用 Python 分析公共数据【01/10】

一、说明 本文讨论了如何使用 Python 使用 Pandas 库分析官方 COVID-19 病例数据。您将看到如何从实际数据集中收集见解&#xff0c;发现乍一看可能不那么明显的信息。特别是&#xff0c;本文中提供的示例说明了如何获取有关疾病在不同国家/地区传播速度的信息。 二、准备您的…...

html怎么插入视频?视频如何插入页面

html怎么插入视频&#xff1f;视频如何插入页面 HTML 的功能强大&#xff0c;基本所有的静态效果都可以在此轻松呈现&#xff0c;各种视频网站内有大量的视频内容&#xff0c;本篇文章教你如何在 html 中插入视频 代码如下&#xff1a; <!DOCTYPE html> <html> …...

游戏服务端性能测试

导语&#xff1a;近期经历了一系列的性能测试&#xff0c;涵盖了Web服务器和游戏服务器的领域。在这篇文章中&#xff0c;我将会对游戏服务端所做的测试进行详细整理和记录。需要注意的是&#xff0c;本文着重于记录&#xff0c;而并非深入的编程讨论。在这里&#xff0c;我将与…...

【使用Zookeeper当作注册中心】自己定制负载均衡常见策略

自己定制负载均衡常见策略 一、前言随机&#xff08;Random&#xff09;策略的实现轮询&#xff08;Round Robin&#xff09;策略的实现哈希&#xff08;Hash&#xff09;策略 一、前言 大伙肯定知道&#xff0c;在分布式开发中&#xff0c;目前使用较多的注册中心有以下几个&…...

设计模式十七:迭代器模式(Iterator Pattern)

迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;它提供了一种访问聚合对象&#xff08;例如列表、集合、数组等&#xff09;中各个元素的方法&#xff0c;而无需暴露其内部表示。迭代器模式将遍历元素和访问元素的责任分离开来&#xff0…...

Python制作爱心并打包成手机端可执行文件

前言 本文是想要将python代码打包成在手机上能执行的文件 尝试了几个库&#xff0c; 有这也那样的限制&#xff0c;最终还是选了BeeWare 环境&#xff1a;python3.7.x 开始 找到打包有相关工具os-android-apk-builder&#xff0c;buildozer&#xff0c;cx_Freeze&#xff…...

使用docker-compose.yml快速搭建开发、部署环境(nginx、tomcat、mysql、jar包、各种程序)以及多容器通信和统一配置

目录 docker-compose语法&#xff08;更多说明可查看下面代码&#xff09;imagehostnamecontainer_namevolumesnetworks yml文件的使用启动停止 开发环境&#xff08;这里以python为例&#xff09;部署环境nginxmysqltomcatjar包打包后的可执行程序 常见问题与解决方案多个容器…...

管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——支持加强——第三节——分类3——类比题干支持

文章目录 第三节 支持加强-分类3-类比题干支持真题(2017-28)-支持加强-正面支持-表达“确实如此”真题(2017-36)-支持加强-正面支持-表达“确实如此”真题(2017-39)-支持加强-正面支持-方法有效或方法可行,但多半不选择方法无恶果真题(2017-50)-支持加强真题(2018-2…...

搜索旋转排序数组

整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nums[1], …, …...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...