Codeforces Round 888 (Div. 3)(A-F)
文章目录
- A
- B
- C
- D
- E
- F
A
题意:
就是有一个m步的楼梯。每一层都有k厘米高,现在A的身高是H,给了你n个人的身高问有多少个人与A站在不同层的楼梯高度相同。
思路:
我们只需要去枚举对于A来说每一层和他一样高(人的身高和楼梯高度)的人数即可。
代码:
#include<bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(nullptr)
#define int long long
#define endl "\n"
#define xx first
#define yy secondusing namespace std;const int N = 2e5 + 10, mod = 1e9 + 7;int n, m, k, _, h;
int arr[N];void solve()
{cin >> n >> m >> k >> h;map<int, int> mp;for(int i = 1; i <= n; i ++) {cin >> arr[i];mp[arr[i]]++;}int ans = 0;for(int i = 1; i < m; i ++){ans += mp[i*k+h];ans += mp[-i*k+h];}cout << ans << endl;
}signed main()
{IOS;cin >> _;while(_--) solve(); return 0;
}
B
题意:
就是给你n个数,你需要把这n个数变成非降序即可,但是只能奇数和奇数之间进行位置交换,偶数和偶数之间进行位置交换。
思路:
我们对于每一个奇数和偶数记录下他们的大小和位置,对于奇数和偶数让他们各自内部排序。然后回到他们各自内部排序的位置。
比如:
num: 7 10 1 3 2
ip : 1 2 3 4 5
然后我们让奇数和偶数各自内部排序:
奇数:
num:1 3 7
ip : 1 3 4
偶数:
num:2 10
ip :5 2
结果:
1 2 3 7 10
然后按照各自排序的ip重新拼在一起看是否是一个非降序数列就行。
代码:
#include<bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(nullptr)
#define int long long
#define endl "\n"
#define xx first
#define yy secondusing namespace std;const int N = 1e6 + 10, mod = 1e9 + 7;int n, m, k, _, h;
int arr[N];void solve()
{cin >> n;for(int i = 1; i <= n; i ++) cin >> arr[i];vector<int> odd, even, ipodd, ipeven;for(int i = 1; i <= n; i ++){if(arr[i] & 1){odd.push_back(arr[i]);ipodd.push_back(i);}else{even.push_back(arr[i]);ipeven.push_back(i);}}sort(odd.begin(), odd.end());sort(even.begin(), even.end());sort(ipodd.begin(), ipodd.end());sort(ipeven.begin(), ipeven.end());vector<int> ans(n+1);for(int i = 0; i < odd.size(); i ++){ans[ipodd[i]] = odd[i];}for(int i = 0; i < even.size(); i ++){ans[ipeven[i]] = even[i];}bool f = 0;for(int i = 2; i <= n; i ++){if(ans[i] < ans[i-1]){f= 1;break;`在这里插入代码片`}}if(f) cout << "NO" << endl;else cout << "YES" << endl;
}signed main()
{IOS;cin >> _;while(_--) solve(); return 0;
}
C
这道题纯纯阅读理解,就直接说思路了。
思路:
就是你要找k个第一个数(用a来表示,从前往后找)然后对于最后一个a的位置我们用l来表示,然后你要找到k个最后一个数(用b来表示,从后往前找)对于从后往前的最后一个b的位置我们用r来表示。如果l > r无解,如果对于a,b只要一个没有找到k个无解。否则就输出YES就行。如果第一个数和第二个数相等只需要找出k个就行
代码:
#include<bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(nullptr)
#define int long long
#define endl "\n"
#define xx first
#define yy secondusing namespace std;const int N = 1e6 + 10, mod = 1e9 + 7;int n, m, k, _, h;
int arr[N];void solve()
{cin >> n >> k;int l = 0, cnt = 0;bool fl = 0, fr = 0;for(int i = 1; i <= n; i ++) cin >> arr[i];for(int i = 1; i <= n; i ++){if(arr[i] == arr[1] && cnt < k) cnt++;if(cnt == k){fl = 1;l = i;break;}}int r = n;cnt = 0;for(int i = n; i >= 1; i --){if(arr[i] == arr[n] && cnt < k){cnt++;}if(cnt == k){fr = 1;r = i;break;}}if(arr[1] == arr[n]){if(fl || fr){cout << "YES" << endl;return;}}if(!fl || !fr){cout << "NO" << endl;return;}if(l > r){cout << "NO" << endl;return;}cout << "YES" << endl;
}signed main()
{IOS;cin >> _;while(_--) solve(); return 0;
}
D
这个题当时脑壳瓦特了,直接特判了如果差分数组出现了两个及以上就无解。
题意:
就是现在给你n-1个数这几个数是n个数的前缀和数组,其中少了一个。问你是否存在n个数的前缀和数组满足这n-1个数。这n个数是1~n的。
思路:
其实我们只用看这n-1个数的差分数组,然后我们就可以去还原数组了。那么我们再去判断差分数组中出现1~n的个数。如果差了一个,那么一定有解。如果差了两个我们就去看一下这两个数之和,是不等于大于n的那个数(差分数组里的数),或者是出现了两次的数字之和(差分数组里的数出现了两次)。如果不等于也是无解。如果等于那就是有解。如果差了两个以上那么一定是无解的。
代码:
#include<bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(nullptr)
#define int long long
#define endl "\n"
#define xx first
#define yy secondusing namespace std;const int N = 1e6 + 10, mod = 1e9 + 7;int n, m, k, _, h;void solve()
{cin >> n;vector<int> arr(n+1);int ma = 0, mi = 1e18;map<int, int> cnt;for(int i = 1; i < n; i ++) {cin >> arr[i];ma = max(arr[i], ma);mi = min(arr[i], mi);} vector<int> g(n+1);map<int, int> fg;for(int i = 1; i < n; i ++){g[i] = arr[i]-arr[i-1];fg[g[i]]++;}int sum = 0;int ct = 0;for(int i = 1; i <= n; i ++){if(!fg[i]) {sum += i;ct++;}}if(ct == 1){cout << "YES" << endl;return;}if(ct > 2){cout << "NO" << endl;return;}int tp = 0;for(int i = 1; i < n; i ++){if(fg[g[i]] >= 2) tp = g[i];else if(g[i] > n) tp = g[i];}if(sum == tp){cout << "YES" << endl;}else cout << "NO" << endl;
}signed main()
{IOS;cin >> _;while(_--) solve(); return 0;
}
E
题意:
就是你需要配制出n种药水,然后给你n种药水直接购买的花费价值。对于一些药水会提供无数种对于这一类药水的花费价值是0,那么没有提供无限次数的药水需要自己去通过配方配置或者直接购买。保证不会出现环,就是a只能配置b,b只能配置a。问你配置出所有药水的最小价值。
思路:
记忆化搜索,对于每种可以配置的药水我们给他进行建图单向图,因为保证不会出现环的,那么我们最后去遍历那些没有别确定价值的药水,然后去记忆化搜索下去就行。
队友写的是BFS,他这种写法就是能够处理环的。
代码:
#include<bits/stdc++.h>#define IOS ios::sync_with_stdio(false);cin.tie(nullptr)
#define int long long
#define endl "\n"using namespace std;const int N = 2e5 + 10;int n, m, k, _;
int c[N], p[N];
vector<int> e[N];
map<int, bool> f;
void dfs(int x)
{int res = 0;if(e[x].size() == 0){f[x] = 1;return;}for(int i = 0; i < e[x].size(); i ++){int g = e[x][i];if(!f[g]){dfs(g);res += c[g];}else res += c[g];}f[x] = 1;c[x] = min(c[x], res);
}void solve()
{f.clear();cin >> n>> k;for(int i = 1; i <= n; i ++){cin >> c[i];e[i].clear();}for(int i = 1; i <= k; i ++){int x;cin >> x;f[x] = 1;c[x] = 0;}for(int i = 1; i <= n; i ++){int x;cin >> x;while(x--){int g;cin >> g;e[i].push_back(g);}}for(int i = 1; i <= n; i ++){if(!f[i]) dfs(i);cout << c[i] << " ";}cout << endl;
}signed main()
{IOS;cin >> _;while(_--) solve();return 0;
}
F
#include <bits/stdc++.h>
//#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl '\n'
#define lb(x) ((x) & (-x))
using namespace std;
typedef unsigned long long ull;
const int maxn = 2e5+10;
const int mod = 2e9+7;
const ull P = 13331;
int _,n,m,k;
int tr[maxn * 32][2],idx;
void add(int x)
{int p = 0;for(int i = k-1; i >= 0; --i){int z = (x >> i) & 1;if(!tr[p][z]) tr[p][z] = ++idx;p = tr[p][z];}
}
int get(int x)
{int p = 0,ans = 0;for(int i = k-1; i >= 0; --i){int z = (x >> i) & 1;if(tr[p][z]) p = tr[p][z];else p = tr[p][1-z],ans += (1LL << i);}return ans;
}
void clear()
{for(int i = 0; i <= idx; ++i){for(int j = 0; j <= 1; ++j) tr[i][j] = 0;}idx = 0;
}
signed main()
{IOS;cin >> _;while(_--){clear();cin >> n >> k;vector<int> a(n+1);map<int,vector<int> > mp;int mx = mod;for(int i = 1; i <= n; ++i){cin >> a[i];mp[a[i]].push_back(i);if(i > 1) mx = min(mx,get(a[i]));add(a[i]);}int x = 0,y = 0;for(int i = 1; i <= n; ++i){int g = (mx^a[i]);if(g != a[i] && mp[g].size() > 0) x = i,y = mp[g][0];else if(g == a[i] && mp[g].size() > 1){x = i;if(mp[g][0] != i) y = mp[g][0];else y = mp[g][1];}}int z = 0;for(int i = k-1; i >= 0; --i){if(((a[x] >> i) & 1) == 0) z += (1LL << i);}cout << x << ' ' << y << ' ' << z << endl;}return 0;
}
相关文章:
Codeforces Round 888 (Div. 3)(A-F)
文章目录 ABCDEF A 题意: 就是有一个m步的楼梯。每一层都有k厘米高,现在A的身高是H,给了你n个人的身高问有多少个人与A站在不同层的楼梯高度相同。 思路: 我们只需要去枚举对于A来说每一层和他一样高(人的身高和楼…...
【人工智能】深度神经网络、卷积神经网络(CNN)、多卷积核、全连接、池化
深度神经网络、卷积神经网络(CNN)、多卷积核、全连接、池化) 文章目录 深度神经网络、卷积神经网络(CNN)、多卷积核、全连接、池化)深度神经网络训练训练深度神经网络参数共享卷积神经网络(CNN)卷积多卷积核卷积全连接最大池化卷积+池化拉平向量激活函数优化小结深度神经…...
失去SSL证书,会对网站安全造成什么影响?
作为网络世界中的“身份证”,SSL证书可以在网络世界中证明你是一个真实可信的企业或个人网站,而不是一个钓鱼网站。且在网站的服务器上部署SSL证书后,可以使网站与访问者之间通过SSL协议建立安全的加密连接,确保在Web服务器和浏览…...
gitee中fork了其他仓库,如何在本地进行同步
GitHub 操作:同步 Fork 来的仓库(上游仓库)_sigmarising的博客-CSDN博客 1. 设置upstream 2. git pull --rebase 3. 然后再执行pull、push操作...
java项目之社区生活超市管理系统(ssm+mysql+jsp)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的社区生活超市管理系统。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Java 框…...
WebGPU(七):C++头部封装
WebGPU(七):C头部封装 在前面的学习中,我们使用的都是原生态的WebGPU API,那是基于C语言的API,但是为了更高效的开发,我们可以使用一个基于C的库。 根据参考的教程,这个github库提供更加纤细的描述。它提…...
Linux 网络通信epoll详解( 10 ) -【Linux通信架构系列 】
系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the…...
java源码-List源码解析
Java中的List是一个接口,它定义了一组操作列表的方法。List接口的常见子类包括ArrayList、LinkedList和Vector等。 以下是Java中List接口及其常见方法的源码解析: 1. List接口定义 public interface List<E> extends Collection<E> { …...
Mybatis的动态SQL
动态 sql 是Mybatis的强⼤特性之⼀,能够完成动态的 sql 语句拼接。 动态 SQL 大大减少了编写代码的工作量,更体现了 MyBatis 的灵活性、高度可配置性和可维护性。 Mybatis里的动态标签主要有: <if><trim><where><set><forea…...
嵌入式系统中的GPIO控制:从理论到实践与高级应用
本文将探讨嵌入式系统中的GPIO(通用输入输出)控制,着重介绍GPIO的原理和基本用法。我们将使用一个实际的示例项目来演示如何通过编程配置和控制GPIO引脚。将基于ARM Cortex-M微控制器,并使用C语言进行编写。 GPIO是嵌入式系统中最常见且功能最强大的接口之一。它允许硬件工…...
7D透明屏的市场应用广泛,在智能家居中有哪些应用表现?
7D透明屏是一种新型的显示技术,它能够实现透明度高达70%以上的显示效果。这种屏幕可以应用于各种领域,如商业广告、展览展示、智能家居等,具有广阔的市场前景。 7D透明屏的工作原理是利用光学投影技术,将图像通过透明屏幕投射出来…...
[游戏开发][Unity] 打包Xcode工程模拟器+真机调试
苹果开发者账号 账号分三类,个人,公司,企业,价格99/99/299美金 新注册账号的基本设置按网上的教程来就行 我们公司是企业账号,我的苹果开发者账号是公司一个User 下面讲述一下一个全新的打包机处理流程 首先是要把…...
python 添加环境变量
1 查看是否设置环境变量 和 使用的python在哪里安装 import sys import os# 获取Python的安装目录 import os import syspython_path sys.executable # 这个是python.exe的路径python_path os.path.dirname(python_path) print("Python安装路径:", python_path)# …...
如何用DHTMLX组件为Web应用创建甘特图?(一)
dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。甘特图仍然是项目管理应用程序中最需要的工具之一,DHTMLX Gantt组件提供了能提升研发甘特图功能所需的重要工具。 在这篇…...
网站SEO优化:提升搜索排名与流量引爆
导言: 在互联网时代,网站SEO(搜索引擎优化)是提高网站搜索排名、吸引流量、增加曝光的重要策略。通过优化网站结构、内容和链接等方面,让搜索引擎更好地理解和收录网站内容,从而为网站带来更多有价值的有机…...
Java lamda对List<JSONObject>里多个动态属性字段进行动态的降序或者升序
最近做到一个需求,需要把业务侧返回的数据(格式为List<JSONObject>),然后根据前端传来的排序字段、以及升降序属性来排序并返回给前端。要对List<JSONObject>中的多个属性字段进行动态的升序或降序排序,我们可以根据需…...
Lua脚本解决多条命令原子性问题
Redis是一个流行的键值存储数据库,它提供了丰富的功能和命令。在Redis中,我们可以使用Lua脚本来编写多条命令,以确保这些命令的原子性执行。Lua是一种简单易学的编程语言,下面将介绍如何使用Redis提供的调用函数来操作Redis并保证…...
NAT详解(网络地址转换)
一句话说清楚它是干什么的: 网络地址转换:是指通过专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址,它使得整个专用网只需要一个全球IP就可以访问互联网,由于专用网IP地址是可以重用的,所以NAT大…...
【第一阶段】ktolin的函数
在Java中我们称之为方法,方法必须写在类里面,依赖于类。 在kotlin中函数写在类里面和外面都是可以的。称之为函数 class test{fun view(){} }fun main() {println("Hello, world!!!") }执行结果 Hello, world!!!main函数的返回值类型为Unit等…...
pytorch模型的保存与加载
1 pytorch保存和加载模型的三种方法 PyTorch提供了三种种方式来保存和加载模型,在这三种方式中,加载模型的代码和保存模型的代码必须相匹配,才能保证模型的加载成功。通常情况下,使用第一种方式(保存和加载模型状态字…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
