Polygon-funky

news/2025/1/16 16:14:23/文章来源:https://www.cnblogs.com/gailixia/p/18675197

E. Polygon

给定一个数 n,生成一个 n×n 的一个全为 0 的初始矩阵,矩阵上方和左方均有一排炮台,矩阵的下边和右边是边界

炮台可以发射子弹,子弹只能直线行走,且遇到边界后会停止,遇到一个停止的子弹也会停止,子弹停止后的坐标里面的值记为 1

在任何时候,都不会有超过一门大炮在射击

输入

第一行一个整数 \(t\),表示数据组数

对于每组数据:

第一行一个整数 n
接下来是 n个长度为 n 的行,由 0 和 1组成,表示输入矩阵

所有测试案例中矩阵的总面积不超过\(10^5\)

输出

存在\(YES\),不存在\(NO\)

Example

Input

5
4
0010
0011
0000
0000
2
10
01
2
00
00
4
0101
1111
0101
0111
4
0100
1110
0101
0111

Output

YES
NO
YES
YES
NO

注意

第一个测试用例在声明中已经解释过了

第二个测试用例的答案是否定的,因为从任何大炮中飞出的单元格 ( \(1, 1\) ) 中的 1 都会继续飞行

炮弹遇到边界后会停止,遇到一个停止的子弹也会停止,我们可以知道当下方和右方的地方都为 0 是不可能停下的

于是就可以检查矩阵中的元素,其下一个和右侧不能同时为 0

出现这种情况就不满足条件,则是 "NO"

[!NOTE]

本来不是这题的,其实昨天就已经写好了今天的,但是今天醒来发现居然和学长撞题了
,又挑了几题普及+的题发现一直不能完全过,红温了,于是在cf上找了一道1300的题
算了还是把昨天写的放一下尾页吧

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;ll gcd(ll p, ll q) {return ((p % q == 0)? q : gcd(q, p % q));}
ll lcm(ll p, ll q) {return p * q / gcd(p, q);}void solve(){int n;cin >> n;int a[n][n];bool ans = true;for (int i = 0; i < n; ++i) {string s;cin >> s;//转换为整数存储在数组中for (int j = 0; j < s.size(); j++) a[i][j] = s[j] - '0';   }for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - 1; j++) {if (a[i][j] == 1) {//当前元素是1,则检查下方和右方的元素if (a[i + 1][j] == 0 && a[i][j + 1] == 0) {//如果下方和右方都是0,则NOans = false;break;}}}}if (ans) cout << "YES" << endl;else cout << "NO" << endl;
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int t;cin >> t;while (t--) {solve();}return 0;
}

P1725 琪露诺

在幻想乡,琪露诺是以笨蛋闻名的冰之妖精 \((baka)\)

某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙

小河可以看作一列格子依次编号为 \(0\) 到$ N$,琪露诺只能从编号小的格子移动到编号大的格子。而且琪露诺按照一种特殊的方式进行移动,当她在格子 \(i\) 时,她只移动到区间 \([ i+L,i+R ]\) 中的任意一格。你问为什么她这么移动,这还不简单,因为她是笨蛋啊$ (baka)$

每一个格子都有一个冰冻指数 \(Ai\),编号为 \(0\) 的格子冰冻指数为$ 0$。当琪露诺停留在那一格时就可以得到那一格的冰冻指数 \(Ai\)。琪露诺希望能够在到达对岸时,获取最大的冰冻指数,这样她才能狠狠地教训那只青蛙

但是由于她实在是太笨了,所以她决定拜托你帮它决定怎样前进

开始时,琪露诺在编号$ 0 \(的格子上,只要她下一步的位置编号大于\) N$就算到达对岸

输入格式

第一行三个正整数$ N,L,R$

第二行共 $N+1 \(个整数,第\) i$个数表示编号为 \(i−1\) 的格子的冰冻指数 \(Ai−1\)

输出格式

一个整数,表示最大冰冻指数

样例

输入

5 2 3
0 12 3 11 7 -2

**输出 **

11

说明/提示

对于 \(60\)%的数据,\(N≤10^4\)

对于 \(100\)%的数据,\(N≤2×10^5\)\(−10^3≤Ai≤10^3\)\(1≤L≤R≤N\)

数据保证最终答案不超过\(2e31 −1\)

歌词大意:

小河为编号\(0\)从到\(N\)的格子序列,\(baka\)\(0\)号格出发,只能向编号更大的格子移动,且每次移动范围在当前格编号\(i\)\([ i+L,i+R ]\) 区间内

每个格子有冰冻指数\(Ai\)\(0\)号格冰冻指数为\(0\)\(baka\)停留在某格可获取其冰冻指数

\(baka\)到达对岸(下一步的位置编号大于$ N$)时能获得的最大冰冻指数

由题易知用线性\(dp\),\(f[i]\)表示到第\(i\)个点为止所能获得的最大收益 则\(f[i]=a[i]+max⁡(f[i−r],...,f[i−l])\)

但是复杂度为\(O(n^2)\),还是不能AC

因此我们需要好好优化一下~~❤❤❤

由标签可知主要可以用单调队列优化

(单调队列来解决的问题一般都是需要得到当前的某个范围内的最小值或最大值)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//const int N = 2e5 + 10;
ll gcd(ll p, ll q) {return ((p % q == 0)? q : gcd(q, p % q));}
ll lcm(ll p, ll q) {return p * q / gcd(p, q);}void solve(){int n, l, r, baka = -INT_MIN;cin >> n >> l >> r;vector<int> a(n + 1),f(n + 1);deque<int> q;//双端队列//或者vector<int> q;for (int i = 0; i <= n; i++) {cin >> a[i];f[i] = baka;//确保其他初始值足够小}f[0] = 0;//空区间的和为0,确保能正确累加子区间和for (int i = l; i <= n; i++) {//移除不在窗口[i-r, i-l]内的元素while (!q.empty() && q.front() + r < i) {q.pop_front();//或者q.erase(q.begin());}while (!q.empty() && f[q.back()] <= f[i - l]) {//使头部始终是当前窗口内f值最大的索引(维护双端队列)q.pop_back();}q.push_back(i - l);///存入i-l到末尾f[i] = f[q.front()] + a[i];//以i结尾的最大子区间和if (i + r > n) baka = max(baka, f[i]);}cout << baka << endl;}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);//int t;cin >> t;while (t--) {solve();//}return 0;
}



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

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

相关文章

2025四款简单好用的电脑便签提醒软件推荐

进入2025年,越来越多的打工人需要在电脑上使用一款桌面便签或日程提醒软件,随时记录和管理工作事项,能够帮助我们高效整理思绪,确保重要事务不被遗漏。 今天给大家介绍四款简单又好用的电脑便签或日程提醒软件,总有一款是适合你的! 一、Win系统便笺 Windows操作系统自带的…

本次小论文minor revision中的知识积累

可以发邮件向编辑申请延期返修截止日期 https://cn.service.elsevier.com/app/answers/detail/a_id/29653/c/10595/supporthub/publishing/role/作者/ https://zhuanlan.zhihu.com/p/577324425申请邮件模板:如何在Editorial Manager系统中提交修改稿?【爱思唯尔Editorial Man…

多通道传感器接入集中控制频率温度 传感器集线器带来更多方便

多通道传感器接入集中控制频率温度 传感器集线器带来更多方便现场传感器太多,编号容易混乱?传感器集线器可以将多路传感器轮流切换到单一接口,为现场提供更多方便。操作简便直观,使用一个百位拨动开关和两个旋转开关(十位和个位)自由切换到任意传感器。 传感器通道多,最…

实战指南:优化采购流程,实现高效采购管理

优化采购流程需要从多个方面入手,包括明确采购需求、加强供商管理、优化采购谈判与合同签订、加强采购执行与跟踪、提高质量控制与验收水平、进行成本分析与优化、加强人员培训与发展以及注重合规与风险管理。通过这些措施的实施,可以显著提高采购效率和质量,降低采购成本,…

Lableview 标签软件 | LABELVIEW 条形码标签软件

Lableview 标签软件 | LABELVIEW 条形码标签软件Lableview 专业顾问 手机|微信:13928851814值得您信赖的条形码标签软件稳健可靠的条形码标签创建与集成简单的数据库连接易于使用的界面和提供便利的向导100 多种条形码符号体系可自定义的打印界面变量选用表增加了灵活性LABE…

原生JS实现一个日期选择器(DatePicker)组件

这是通过原生HTML/CSS/JavaScript完成一个日期选择器(datepicker)组件,一个纯手搓的组件的开发。主要包括datepicker静态结构的编写、日历数据的计划获取、组件的渲染以及组件事件的处理。 根据调用时的时间格式参数,可以控制短日期格式或长日期格式。实现效果(短日期格式…

LabelMatrix 标签软件 | LABEL MATRIX 条形码标签软件

LabelMatrix 标签软件 | LABEL MATRIX 条形码标签软件LabelMatrix 专业顾问 手机|微信:13928851814LABEL MATRIX 条形码标签软件 借助功能丰富的条形码标签软件,为将来的发展奠定坚实的基础适用于简单标签需求的条形码标签软件提供帮助的内置向导熟悉的 Windows 用户界面10…

《操作系统真相还原》实验记录2.5——线程实现

本文章实现内容如下: 1. 实现单线程的创建功能 2. 实现多线程调度的基本功能,包含:时钟中断处理函数;任务调度器;任务切换函数;零、项目说明本项目仓库现已公开,地址:GitHub:-HC-OS-操作系统设计项目 本项目当前进度:已完成多线程调度基础功能;一、前置知识点 1.1 …

360SafeBrowsergetpass:红队360浏览器密码抓取工具

免责声明 仅限用于技术研究和获得正式授权的攻防项目,请使用者遵守《中华人民共和国网络安全法》,切勿用于任何非法活动,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律连带责任项目介绍 红队一键辅助抓取360安全浏览器密码的CobaltStrik…

连续番茄时钟和长休息

原始时钟只支持手动25min+休息,用js增加连续自动番茄去支持Tempermonkey的浏览器的Add-ons安装 代码 https://pomodoro.pomodorotechnique.com/ 打开后刷新一次// ==UserScript== // @name Automated Pomodoro with Long Break // @namespace http://tampermonkey.…

Kernel Memory: 强大的AI驱动记忆系统

Kernel Memory简介 Kernel Memory(简称KM)是由微软开发的一个强大的多模态AI服务,专门用于高效索引和处理大规模数据集。它支持检索增强生成(RAG)、合成记忆、提示工程和自定义语义记忆处理等先进功能,为构建智能应用提供了强大的基础设施。 KM可以作为Web服务、Docker容器、C…

亚矩阵云手机:服务于未来新型电商矩阵的助力者

亚矩阵云手机是基于端云一体虚拟化技术 通过云网、安全、AI等数字化能力,弹性适配用户个性化需求,释放手机本身硬件资源,随需加载海量云上应用的手机形态 简单来说,云手机=云服务器+Android OS,用户可以远程实时控制云手机,实现安卓APP的云端运行;也可以基于云手机的基础算力,高…