【题解】Codeforces Round 996 C.The Trail D.Scarecrow

Codeforces Round 996

比赛地址:https://codeforces.com/contest/2055

Problem C.The Trail

1.从数学上看,未知的数有 n+m-1 个位置的 a[i] 值,和行列总和x,解出他们需要n + m个独立的方程。对每一个未知的位置,有 行和 等于 列和 的方程,共n+m-1个,还有一个行和/列和 = x的方程,恰好可解。所以只需要找到一种易于用代码表达的解方程方法即可。

2.从(1,1)开始,按字符串的顺序依次将每个空余位置表示成 ax + b 的形式。对于每行的最后一个未知数,此行仅剩该数未被表示,用 x - 行和(不含该数) 表示该数。对于每行的其他未知数,此列仅剩该数位被表示,用 x - 列和(不含该数)表示。写代码时用矩阵a[i][j]、b[i][j]表示i,j位置的a、b值,分别处理即可,详见AC代码。

3.现在所有未知数均被表示成ax+b的形式,如果最后一个未知数(n,m),由 x-行和得到,那用第m列的列和 = x解出x;反正,由 x-列和得到,就用行和 = x解方程。写代码时注意x系数为0的情况,不能除以0,此时特判。

#include <bits/stdc++.h>
#define int long longusing namespace std;typedef pair<int, int> PII;const int N = 2e3 + 10, M = 20;string s;
int n, m;
int a[N][N];
int b[N][N];void solve() {cin >> n >> m >> s;for (int i = 1; i <= n; i ++)for (int j = 1; j <= m; j ++) {cin >> a[i][j];b[i][j] = 0;}int x = 1, y = 1;for (auto i : s) {if (i == 'D') {int sumb = 0, suma = 0;for (int j = 1; j <= m; j ++) {sumb += b[x][j];suma += a[x][j];}b[x][y] = 1 - sumb;a[x][y] = 0 - suma;x ++;} else {int sumb = 0, suma = 0;for (int j = 1; j <= n; j ++) {sumb += b[j][y];suma += a[j][y];}b[x][y] = 1 - sumb;a[x][y] = 0 - suma;y ++;}}long long sum;if (s.back() == 'D') {{int sumb = 0, suma = 0;for (int j = 1; j <= n; j ++) {sumb += b[j][y];suma += a[j][y];}b[x][y] = 1 - sumb;a[x][y] = 0 - suma;}int sumb = 0, suma = 0;for (int i = 1; i <= m; i ++) {suma += a[n][i];sumb += b[n][i];}if (sumb == 1)sum = 0;elsesum = suma / (1 - sumb);} else {{int sumb = 0, suma = 0;for (int j = 1; j <= m; j ++) {sumb += b[x][j];suma += a[x][j];}b[x][y] = 1 - sumb;a[x][y] = 0 - suma;}int sumb = 0, suma = 0;for (int i = 1; i <= n; i ++) {suma += a[i][m];sumb += b[i][m];}if (sumb == 1)sum = 0;elsesum = suma / (1 - sumb);}for (int i = 1; i <= n; i ++) {for (int j = 1; j <= m; j ++) {cout << sum *b[i][j] + a[i][j] << ' ';}cout << '\n';}
}signed main() {ios::sync_with_stdio(false);cin.tie(0);int t = 1;cin >> t;while (t --) {solve();}return 0;
}

Problem D.Scarecrow

1.赶鸟的第一步,肯定是让最近的稻草人走到0,把鸟赶出来; 赶鸟的最后一步,是最远的稻草人把鸟一直赶到终点(当l较大,ai较小时)。
2.所有稻草人速度一样,所以稻草人不可能超过彼此。
3.每次鸟跳跃之后,只需要考虑离瞬移之后的鸟之前和鸟之后最近的两个稻草人,分别成为前稻草人和后稻草人。
4.考虑维护每个稻草人的活动范围,在时刻t,第i个稻草人可以在[ai - t,ai + t]的范围。首先让最近的稻草人把鸟赶出来,花费时间a1,然后判断鸟和前后两个稻草人的位置关系。位置关系分为4种:
a.鸟 < ai-t;
b. ai-t<=鸟<=ai+t;
c. ai + t< 鸟 < ai+t+k;
d. 鸟 > ai + t + k;
对于情况a,由前稻草人推,后稻草人往回赶,触发瞬移之后鸟到后稻草人+k的位置,耗时距离差/2,更新该机器人为前稻草人;
对于情况b, 后稻草人在鸟处等着,鸟瞬移过来直接顶走,耗时0,更新该机器人为前稻草人;
对于情况c,后稻草人值走到尽可能大的位置,鸟瞬移过来直接顶走,耗时0,更新该机器人为前稻草人;
对于情况d,此处不操作,该机器人不可能作为后稻草人,更新该机器人为前稻草人,看下一个稻草人;
5.当稻草人使用完,还没有到达l处,最后一个稻草人推过去即可。

#include <bits/stdc++.h>
#define int long longusing namespace std;typedef pair<int, int> PII;const int N = 2e5 + 10;int n, k, l;
int a[N];void solve() {cin >> n >> k >> l;k = k << 1;l = l << 1;for (int i = 1; i <= n; i ++) {cin >> a[i];a[i] = a[i] << 1;}int ans = 0;ans += a[1];int idx = k;int p = 2;int last = 0;while (idx < l) {if (p == n + 1) {ans += l - k - last;break;}if (idx < a[p] - ans) {int now = a[p] - ans;int t = (now - last - k) >> 1;idx = now - t + k;ans += t;last = idx - k;} else if (idx >= a[p] - ans && idx <= a[p] + ans) {last = idx;idx += k;ans += 0;} else if (idx - (a[p] + ans) < k) {idx = k + a[p] + ans;last = a[p] + ans;ans += 0;} else {last = max(last, a[p] + ans);}p ++;}cout << ans << '\n';
}signed main() {ios::sync_with_stdio(false);cin.tie(0);int t = 1;cin >> t;while (t --) {solve();}return 0;
}

Problem E.Haystacks

** 注:该题难度高达 2800,作者也没能独立完成QAQ**

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

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

相关文章

数据结构与算法学习笔记----求组合数

数据结构与算法学习笔记----求组合数 author: 明月清了个风 first publish time: 2025.1.27 ps⭐️一组求组合数的模版题&#xff0c;因为数据范围的不同要用不同的方法进行求解&#xff0c;涉及了很多之前的东西快速幂&#xff0c;逆元&#xff0c;质数&#xff0c;高精度等…

kaggle社区LLM Classification Finetuning

之前有个一样的比赛&#xff0c;没去参加&#xff0c;现在弄了一个无限期的比赛出来 训练代码链接&#xff1a;fine_tune | Kaggle 推理代码链接&#xff1a;https://www.kaggle.com/code/linheshen/inference-llama-3-8b?scriptVersionId219332972 包链接&#xff1a;pack…

【Python实现机器遗忘算法】复现2021年顶会 AAAI算法Amnesiac Unlearning

【Python实现机器遗忘算法】复现2021年顶会 AAAI算法Amnesiac Unlearning 1 算法原理 论文&#xff1a;Graves, L., Nagisetty, V., & Ganesh, V. (2021). Amnesiac machine learning. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 35, 115…

51单片机开发:点阵屏显示数字

实验目标&#xff1a;在8x8的点阵屏上显示数字0。 点阵屏的原理图如下图所示&#xff0c;点阵屏的列接在P0端口&#xff0c;行接在74HC595扩展的DP端口上。 扩展口的使用详见&#xff1a;51单片机开发&#xff1a;IO扩展(串转并)实验-CSDN博客 要让点阵屏显示数字&#xff0…

买卖股票的最佳时机 II

hello 大家好&#xff01;今天开写一个新章节&#xff0c;每一天一道算法题。让我们一起来学习算法思维吧&#xff01; 问题分析 本题要求计算在可以多次买卖股票&#xff08;但任何时候最多只能持有一股股票&#xff0c;也可以在同一天买卖&#xff09;的情况下能获得的最大…

2024年度总结——理想的风,吹进现实

2024年悄然过去&#xff0c;留下了太多美好的回忆&#xff0c;不得不感慨一声时间过得真快啊&#xff01;旧年风雪尽&#xff0c;新岁星河明。写下这篇博客&#xff0c;记录我独一无二的2024年。这一年&#xff0c;理想的风终于吹进现实&#xff01; 如果用一句话总结这一年&am…

LosslessScaling-学习版[steam价值30元的游戏无损放大/补帧工具]

LosslessScaling 链接&#xff1a;https://pan.xunlei.com/s/VOHc-yZBgwBOoqtdZAv114ZTA1?pwdxiih# 解压后运行"A-绿化-解压后运行我.cmd"

CVE-2020-0796永恒之蓝2.0(漏洞复现)

目录 前言 产生原因 影响范围 漏洞复现 复现环境 复现步骤 防御措施 总结 前言 在网络安全的战场上&#xff0c;漏洞一直是攻防双方关注的焦点。CVE-2020-0796&#xff0c;这个被称为 “永恒之蓝 2.0” 的漏洞&#xff0c;一度引起了广泛的关注与担忧。它究竟是怎样的…

计算机网络 (61)移动IP

前言 移动IP&#xff08;Mobile IP&#xff09;是由Internet工程任务小组&#xff08;Internet Engineering Task Force&#xff0c;IETF&#xff09;提出的一个协议&#xff0c;旨在解决移动设备在不同网络间切换时的通信问题&#xff0c;确保移动设备可以在离开原有网络或子网…

node 爬虫开发内存处理 zp_stoken 作为案例分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言 主要说3种我们补环境过后如果用…

基于Python的哔哩哔哩综合热门数据分析系统的设计与实现

【Django】基于大数据的哔哩哔哩综合热门数据分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统涵盖登录、热门数据展示、数据分析及数据管理等功能。通过大数据处理与…

Object类(2)

大家好&#xff0c;今天我们继续来看看Object类中一些成员方法&#xff0c;这些方法在实际中有很大的用处&#xff0c;话不多说&#xff0c;来看。 注&#xff1a;所有类都默认继承Object类的&#xff0c;所以可调用Object类中的方法&#xff0c;如equals&#xff0c;也可以发生…

C++封装红黑树实现mymap和myset和模拟实现详解

文章目录 map和set的封装map和set的底层 map和set的模拟实现insertiterator实现的思路operatoroperator- -operator[ ] map和set的封装 介绍map和set的底层实现 map和set的底层 一份模版实例化出key的rb_tree和pair<k,v>的rb_tree rb_tree的Key和Value不是我们之前传统意…

单片机基础模块学习——PCF8591芯片

一、A/D、D/A模块 A——Analog 模拟信号:连续变化的信号(很多传感器原始输出的信号都为此类信号)D——Digital 数字信号:只有高电平和低电平两种变化(单片机芯片、微控制芯片所能处理的都是数字信号) 下面是模拟信号和连续信号的区别 为什么需要进行模拟信号和数字信号之…

Blazor-Blazor Web App项目结构

让我们还是从创建项目开始&#xff0c;来一起了解下Blazor Web App的项目情况 创建项目 呈现方式 这里我们可以看到需要选择项目的呈现方式&#xff0c;有以上四种呈现方式 ● WebAssembly ● Server ● Auto(Server and WebAssembly) ● None 纯静态界面静态SSR呈现方式 WebAs…

自动驾驶中的多传感器时间同步

目录 前言 1.多传感器时间特点 2.统一时钟源 2.1 时钟源 2.2 PPSGPRMC 2.3 PTP 2.4 全域架构时间同步方案 3.时间戳误差 3.1 硬件同步 3.2 软件同步 3.2.3 其他方式 ① ROS 中的 message_filters 包 ② 双端队列 std::deque 参考&#xff1a; 前言 对多传感器数据…

神经网络|(一)加权平均法,感知机和神经元

【1】引言 从这篇文章开始&#xff0c;将记述对神经网络知识的探索。相关文章都是学习过程中的感悟和理解&#xff0c;如有雷同或者南辕北辙的表述&#xff0c;请大家多多包涵。 【2】加权平均法 在数学课本和数理统计课本中&#xff0c;我们总会遇到求一组数据平均值的做法…

算法题(48):反转链表

审题&#xff1a; 需要我们将链表反转并返回头结点地址 思路&#xff1a; 一般在面试中&#xff0c;涉及链表的题会主要考察链表的指向改变&#xff0c;所以一般不会允许我们改变节点val值。 这里是单向链表&#xff0c;如果要把指向反过来则需要同时知道前中后三个节点&#x…

DroneXtract:一款针对无人机的网络安全数字取证工具

关于DroneXtract DroneXtract是一款使用 Golang 开发的适用于DJI无人机的综合数字取证套件&#xff0c;该工具可用于分析无人机传感器值和遥测数据、可视化无人机飞行地图、审计威胁活动以及提取多种文件格式中的相关数据。 功能介绍 DroneXtract 具有四个用于无人机取证和审…

SpringBoot中Excel表的导入、导出功能的实现

文章目录 一、easyExcel简介二、Excel表的导出2.1 添加 Maven 依赖2.2 创建导出数据的实体类4. 编写导出接口5. 前端代码6. 实现效果 三、excel表的导出1. Excel表导入的整体流程1.1 配置文件存储路径 2. 前端实现2.1 文件上传组件 2.2 文件上传逻辑3. 后端实现3.1 文件上传接口…