CF补题 981-Div.3

news/2024/12/28 10:23:59/文章来源:https://www.cnblogs.com/dianman/p/18637229

CF补题 981-Div.3-20241226

Dashboard - Codeforces Round 981 (Div. 3) - Codeforces

A:

题目大意:\(x\)\(0\) 开始,轮流将 \(x\) 前后移动 \(i*2-1\), 求最后移动出 $-n,n $ 的 $ i$

#include <iostream>
#include <math.h>
using namespace std;int main()
{int T;cin >> T;while (T--){int n;int x = 0;cin >> n;int i = 0;for (i = 1; x >= -n && x <= n; i++)x += (2 * i - 1) * pow(-1, i);if (i % 2 == 1) cout << "Kosuke" << endl;else cout << "Sakurako" << endl;}return 0;
}

转化方程为每次移动 \((2*i-1)*(-1)^i\) 个单位,最后对操作数 $ i$ 取余

B:

题目大意:给定一个矩阵,每次可以选取任意一条正斜线,使斜线上的数都 \(+1\) ,求矩阵所有元素都大于 \(0\) 的操作数

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;int a[505][505];
int dg[1010];//所有斜线上最小元素int main()
{int T;cin >> T;while (T--){int n;cin >> n;for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {cin >> a[i][j];dg[j - i + n] = min(dg[j - i + n], a[i][j]);//贪心更新}}int ans = 0;for (int i = 1; i < 2 * n; i++) ans -= dg[i];//累加答案cout << ans << endl;memset(dg, 0, sizeof dg);//多测清空}return 0;
}

贪心策略,每次记录当前输入的元素,更新该斜线上的最小值,最后所有斜线上的数之和,即所有的最大负数和 $ \sum_i^n min(dg_i)$

即至少操作这么多次,才能满足条件

C:

题目大意:给定一个序列,每次可以交换第 \(i\) 和第 \(n-i+1\) 个位置上的数,求使得序列上的元素满足任意 \(a_j=a_{j+1}\) 的最小组合

#include <iostream>
using namespace std;int a[200010];int main()
{int T;cin>>T;while (T--){int n;cin>>n;for (int i=1;i<=n;i++) cin>>a[i];int l=2,r=n-1;while (r>l){if (a[l]==a[l-1]||a[r]==a[r+1])swap(a[l],a[r]);l++;r--;}int ans=0;for (int i=2;i<=n;i++) if (a[i]==a[i-1]) ans++;cout<<ans<<endl;}return 0;
}

双指针,贪心(?

两个指针从左右两边开始移动,如果存在 \(a_i=a_{i-1}\) 就交换,当前局部的最优解可以推出全局的最优解(?

证明有:

设序列 1 4 3 5 1 1 3 (干扰度为 \(1\)) ,定义l=1,r=n-2,此时序列中 a[l]=4,a[r]=1,不交换。两个指针向中间移动。移动后 a[l]=3,a[r]=1r与后一个元素相同,交换 lr ,序列为 1 4 1 5 3 1 3 全局干扰度减 \(1\) ,以此类推。。。

设序列 3 1 3 2 2 3 3 (干扰度为 \(2\)),定义l=1,r=n-2,此时序列中 a[l]=1,a[r]=3r和后一个元素相同,若 lr 交换,序列变为 3 3 3 2 2 1 3l 与前一个元素相同,则全局的干扰度没有变化。两个指针向中间移动,l与前一个元素相同,交换 lr3 3 2 2 3 1 3 ,全局的干扰度不变。 最终全局最优的干扰度就为 \(2\)

归纳发现,如果满足交换条件的 lr ,就一定要交换,交换后全局解一定不劣,要么为优要么不变

D:

题目描述:给出一段序列,计算不重叠区间 l,r 使得 \(\sum _{i=l}^r a_i=0\) 的最大区间个数

#include <iostream>
#include <map>
#include <set>
using namespace std;long long a, b, ans;
set<long long> mem;void init(void) {mem.clear();b = 0;mem.insert(0);
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T;cin >> T;while (T--) {ans = 0;init();int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> a;b += a;if (mem.count(b)) {ans++;init();}elsemem.insert(b);}cout << ans << endl;}return 0;
}

前缀和+贪心,每个区间右端点越靠左越优,如果某元素前缀和与前面已经记录的相同,答案 +\(1\)

使用集合set来记录前缀和,注意要首项要加入 \(0\) ,因为序列头为 \(0\) 时,也可以算作答案区间

数据量较大时关同步流可以明显加速

  • 不开long long见祖宗

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

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

相关文章

vue项目中使用swiper轮播

安装swipernpm install swiper@4 --save -dev npm install vue-awesome-swiper@3 --save-dev使用swiper<template><div class="swiper-container"><swiper :options="swiperOption"><swiper-slide v-for="(slide, index) in sli…

蓝牙配对弹框默认允许关闭

蓝牙配对的时候,会有个以下的弹框,客户需求是不需要人为去点击,默认允许配对 实际处理弹框配对的是BluetoothPairingController.java BluetoothPairingRequest.java这个文件主要负责处理配对弹框的广播申请,直接去掉那些流程,确认配对即可--- a/src/com/android/setting…

使用html5实现图片随手机重力感应而移动

在前端开发中,实现图片随手机重力感应而移动的功能,通常需要结合HTML5、CSS以及JavaScript,并利用设备的重力感应API。然而,直接通过HTML5和JavaScript访问设备的重力感应数据是有限的,因为这通常涉及到设备的底层硬件功能。在大多数情况下,这种功能是通过移动应用的原生…

【安全工具】Cobalt Strike使用教程:内网渗透之信息收集篇

一、前言二、内网信息收集篇2.1 判断是否存在域2.2 域内存活主机探测2.3 域内基础信息收集2.4 域内控制器的查找2.5 定位域管理员工具2.5.1 通过psloggedon.exe2.5.2 通过PVEFindADUser.exe2.5.3 通过PowerSploit的PowerView2.5.4 通过NetSess工具2.6 查找域管理进程2.6.1 本地…

pip安装包时报错 unable to get local issuer certificate

解决:pip install openpyxl -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

【安全运营】新一代安全运营

为什么企业投入了很高成本做安全建设后,安全事件还是层出不穷? 主要有以下四个原因: 1、资产管理、脆弱性修复等工作难开展 2、威胁看不清、防不住、难溯源 3、安全能力碎片化,难以在统一策略下完成协同响应 4、高阶人才稀缺,运营难有效持续为更好解决以上中问题的根因,安…

【甲方安全】电力行业+方案分享:新一代集控站设备监控系统网络安全建设

随着信息技术的快速发展,现代工业和生产环境对自动化和智能化的需求不断增加,新一代集控站设备监控系统(以下简称“集控系统”)满足了管辖范围内无人值班变电站一、二次设备和辅助设备远程集中监视、操作及控制等任务,同时满足现场运维检修、设备管理和应急处置等业务需求…

java8--方法--Date--格式化

System.out.printf("%tc",new Date()); 效果图:ps: t二十四小时制,c自然语言描述的月日星期、同时还有数字的时钟和时区信息。 pss: r是十二小时制

创建用于预测序列的人工智能模型,用Keras Tuner探索模型的超参数。

上一篇:《创建用于预测序列的人工智能模型(五),调整模型的超参数》 序言:在完成初步的模型研发后,接下来的重点是探索和优化超参数。通过合理调整超参数(如学习率、动量参数、神经元数量等),可以进一步提高模型的性能和准确性。这一过程需要结合工具(如 Keras Tuner)…

开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行

前言 在咱们的印象中C# WinForm一直只支持Windows系统运行,无法支持跨平台运行。今天大姚给大家分享一个开源框架:GTKSystem.Windows.Forms,它能够让C# Winform支持跨平台运行。 项目介绍 GTKSystem.Windows.Forms是一个C#桌面应用程序跨平台(Windows、Linux、macOS)开发框…

SPIR-V的开源编译器生态系统API分层

API分层 SPIR-V的开源编译器生态系统越来越强大。 1.行分层 无需额外的内核级驱动程序即可实现内容,从而使平台受益。 OpenCL接口分层,如图1-30所示。图1-30 OpenCL接口分层 2.列分层 即使没有本机驱动程序,也可以跨多个平台提供API,以便提供应用程序部署灵活性并消除碎片,…

分层OpenCL实现

分层OpenCL实现 OpenCL接口分层实现,如图1-31所示。图1-31 OpenCL接口分层实现人工智能芯片与自动驾驶