AGC008

news/2025/1/18 14:12:35/文章来源:https://www.cnblogs.com/lintianchen/p/18678431

AGC008

B

题目大意

给出一个序列,一开始全是白色,一次操作可以染黑或染白一段长度为 \(K\) 的区间,要让最后序列中黑色格子上数的和最大,求这个最大值。

解题思路

考虑找结论

发现我们一定要尽可能地把正数涂黑,负数涂白,由于对操作次数没有限制,因此对一个正数我们只要将其放在区间首位涂黑,再把后面的数涂白即可实现单独将其涂黑。

但是我们发现如果这么做最后的 \(K\) 个数就无法实现,同理,如果逆转从后往前涂那么前 \(K\) 个数就无法实现。

考虑一段从前往后,一段从后往前,中间就会有 \(K\) 个数无法实现,而其他正数都能取到

因此我们可以枚举这个无法实现的区间,如果它求和大于 \(0\) 就加上,否则不加,然后将剩下的所有正数求和加上。

代码上,我们可以维护两个前缀和,一个是序列的前缀和 \(s_1\),一个是正数的前缀和 \(s_2\)

答案即为:

\[\max_{i=1}^{n-k+1}{(s_2[i - 1] + s_2[n] - s_2[i + k - 1] + \max(0, s_1[i + k - 1] - s_1[i - 1]))} \]

代码

#include<bits/stdc++.h>
#define endl "\n"
#define ll long long
using namespace std;const int N = 1e5 + 10;int n, k;
ll s1[N], s2[N], ans;int main()
{ios :: sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n >> k;for (int i = 1; i <= n; i++){cin >> s1[i];s2[i] = s2[i - 1];if (s1[i] > 0){s2[i] += s1[i];}s1[i] += s1[i - 1];}for (int i = 1; i <= n - k + 1; i++){ans = max(ans, s2[i - 1] + s2[n] - s2[i + k - 1] + max(0ll, s1[i + k - 1] - s1[i - 1]));}cout << ans << endl;return 0;
}

D

题目大意

构造一个序列 \(a\),使得:

  1. \(a\) 的长度为 \(N^2\),并且满足数字 \(1,2, \cdots, N\) 都各出现恰好 \(N\) 次。

  2. 对于 \(1 \le i \le N\),数字 \(i\)\(a\) 中第 \(i\) 次出现的位置是 \(X_i\)

解题思路

考虑贪心

题意即为:对于 \(1 \le i \le N\),位置 \(X_i\) 上的数为 \(i\),前面有 \(i-1\)\(i\),后面有 \(n -i\) 个。

考虑先满足前一个条件,我们可以对 \(X_i\) 从小到大排序,然后放在 \(X_i\) 前面空位即可,放不下就必定无解。

但是我们为了顾及后面一个条件,那么就需要尽可能少地占用后面的空位,因此我们填数时在最前面的空位一定是最优的。

于是后面一个条件只需从大到小遍历,找后面的空位放即可(不一定要选取最后面,但为了编写方便,不妨就选最后的空位)。

代码

#include<bits/stdc++.h>
#define endl "\n"
using namespace std;const int N = 510;struct node
{int id, x;
} b[N];int n;
int a[N * N];bool cmp(node x, node y)
{return x.x < y.x;
}int main()
{ios :: sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n;for (int i = 1; i <= n; i++){cin >> b[i].x;a[b[i].x] = i;b[i].id = i;}sort(b + 1, b + n + 1, cmp);for (int i = 1, p = 1; i <= n; i++){for (int j = 1; j < b[i].id; j++){while (p <= b[i].x && a[p] != 0){p++;}if (p > b[i].x){cout << "No" << endl;return 0;}a[p++] = b[i].id;}}for (int i = n, p = n * n; i >= 1; i--){for (int j = b[i].id + 1; j <= n; j++){while (p >= b[i].x && a[p] != 0){p--;}if (p < b[i].x){cout << "No" << endl;return 0;}a[p--] = b[i].id;}}cout << "Yes" << endl;for (int i = 1; i <= n * n; i++){cout << a[i] << " ";}return 0;
}

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

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

相关文章

day0java准备

Java-001 Markdown 暂时跳过,vscode里未能实现编译 java 1.已配置环境 2.继续学黑马程序员:已到50/200 3.内存4.学到方法(C里函数)

NB!一款基于java开发的漏洞检测工具,集合了泛微、用友、大华、海康、致远、红帆、万户、帆软等漏洞

1、工具介绍 基于 https://github.com/yhy0/ExpDemo-JavaFX 上添加poc 2、工具下载链接: 工具下载:工具下载 3、新增检测漏洞用友NC-Cloud系统接口getStaffInfo存在SQL注入漏洞 用友U8-Cloud ReleaseRepMngAction存在SQL注入漏洞复现(CNVD-2024-33023) 用友U8-CRM系统getDeptN…

网络购物数据分析

#获取数据 import pandas as pd infor=pd.read_csv(buy_input_1.csv) infor.head(20) #选取预观察数据#方法1 # x1=infor["Annual Income"] # print(x1) # x2=infor["Spending Score"] # print(x2)# """ #方法2 # x1=infor.iloc[:,3] # …

了解ESP32睡眠模式及其功耗

转载自:https://lastminuteengineers.com/esp32-sleep-modes-power-consumption/ Insight Into ESP32 Sleep Modes & Their Power ConsumptionThe ESP32 is undeniably a worthy competitor to many WiFi/MCU SoCs, outperforming them in both performance and price. Ho…

某公交管理系统简易逻辑漏洞+SQL注入挖掘

某公交管理系统挖掘 SQL注入漏洞 前台通过给的账号密码,进去 按顺序依次点击1、2、3走一遍功能点,然后开启抓包点击4当点击上图的4步骤按钮时,会抓到图下数据包,将其转发到burp的重放模块构造以下注入poc,可见注入延时了五秒,用户输入的语句成功拼接到原有的SQL语句上执行…

记一次常规的网络安全渗透测试

前言 上个月根据领导安排,需要到本市一家电视台进行网络安全评估测试。通过对内外网进行渗透测试,网络和安全设备的使用和部署情况,以及网络安全规章流程出具安全评估报告。本文就是记录了这次安全评估测试中渗透测试部分的内容,而且客户这边刚刚做过了一次等保测评,算一下…

工具 | Hfish

0x00 简介 HFish是一款社区型免费蜜罐。 下载地址 HFish下载: HFish下载 0x01 功能说明支持多种蜜罐服务支持自定义Web蜜罐支持流量牵引支持端口扫描感知能力支持多种告警方式注:仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不…

ida(持续更新)

如题前缀 说明sub_ 指令和子函数起点locret_ 返回指令loc_ 指令off_ 数据,包含偏移量seg_ 数据,包含段地址值asc_ 数据,ASCII字符串byte_ 数据,字节(或字节数组)word_ 数据,16位数据(或字数组)dword_ 数据,32位数据(或双字数组)qword_ 数据,64位数据(或4字数组)…

工具 | Hashcat

0x00 简介 Hashcat是一款强大的密码破解工具。 下载地址 Hashcat下载: Hashcat下载 0x01 功能说明直接破解组合攻击掩码暴力破解混合攻击联合攻击注:仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。

深入理解主键和外键:数据库设计的基石

title: 深入理解主键和外键:数据库设计的基石 date: 2025/1/18 updated: 2025/1/18 author: cmdragon excerpt: 在现代信息系统中,数据的管理和存储是至关重要的。关系数据库作为一种广泛使用的数据存储方式,其设计的合理性直接影响到数据的完整性和系统的性能。在关系数据…

一次性讲清如何合理搭配一台组装电脑

今天这篇文章我就给大家一次性讲清,我们如何合理搭配组装一台电脑,新手小白建议收藏观看,希望对大家有所帮助。 1 .首先要知道组装一台电脑, 以下八大硬件缺一不可: 2. 认识【CPU】: CPU品牌: 目前市场主流消费级CPU只有英特尔与AMD。 英特尔CPU: intel的CPU分为i3、i5、i…

ADCP414、ADCP416四通道125MSPS速率ADC替代AD9653、AD9253,可提供ZZKK证明

ADCP416-125/105/80是一款4通道、16位、125/105/80MSPS模数转换器(ADC),内置片内采样保持电路,专门针对低成本、低功耗、小尺寸和易用性而设计。该产品的转换速率最高可达125MSPS,具有杰出的动态性能与低功耗特性,适合比较重视小封装尺寸的应用。ADCP416-125特性和优势 --电…