Pinely Round 5 (Div. 1 + Div. 2) A+B+C+D

news/2025/11/1 17:03:07/文章来源:https://www.cnblogs.com/usedchang/p/19183558

A.Round Trip


原题链接

解题思路

简单贪心模拟一下,能减则减

AC code

void solve(){int r,x,d,n;cin>>r>>x>>d>>n;string s;cin>>s;s="&"+s;int ans=0;for(int i=1;i<=n;i++){if(r<x&&s[i]=='2') {ans++; r-=d;}else if(s[i]=='1'){ans++; r-=d;}}cout<<ans<<endl;
}

B.Make Connected


原题链接

解题思路

不存在连续三格黑色的,那么
1.每个黑色的联通块每次只能走从上侧主对角线和主对角线 或 下侧主对角线和主对角线(副对角线也可)两种策略到达其他的连通块
2.对于每个黑色块,维护四种行走方案,从主对角线上方走&副对角线上方走,主对角线下方走&副对角线上方走,主对角线下方走&副对角线上方走,
观察四种方案是否存在一种可以走到其他所有黑色块,可以拿set维护
复杂度大概是 \(O(n^2\lg {n})\)

AC code

void solve(){int n;cin>>n;vector<string>a(n+1,string(n+1,'.'));vector<string>vis(n+1,string(n+1,0));vector< set< pair<int,int> > >L(n<<2|1);vector< set< pair<int,int> > >R(n<<2|1);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=n-2;j++){if(a[i][j]=='#'&&a[i][j+1]=='#'&&a[i][j+2]=='#'){cout<<"NO"<<endl;return;}}}for(int i=1;i<=n-2;i++){for(int j=1;j<=n;j++){if(a[i][j]=='#'&&a[i+1][j]=='#'&&a[i+2][j]=='#'){cout<<"NO"<<endl;return;}}}int cnt=0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(a[i][j]=='#'){cnt++;L[i+j].emplace(i,j);R[i-j+n].emplace(i,j);}}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(a[i][j]=='#'){set<pair<int,int>>Up,Left,Right,Down,All1,All2,All3,All4;for(auto &[x,y]:L[i+j]){Up.emplace(x,y);Left.emplace(x,y);Right.emplace(x,y);Down.emplace(x,y);}for(auto &[x,y]:R[i-j+n]){Up.emplace(x,y);Left.emplace(x,y);Right.emplace(x,y);Down.emplace(x,y);}for(auto &[x,y]:L[i+j+1]){Up.emplace(x,y);}for(auto &[x,y]:L[i+j-1]){Down.emplace(x,y);}for(auto &[x,y]:R[i-j+n+1]){Right.emplace(x,y);}for(auto &[x,y]:R[i-j+n-1]){Left.emplace(x,y);}for(auto &[x,y]:Up){All1.emplace(x,y);All3.emplace(x,y);}for(auto &[x,y]:Down){All2.emplace(x,y);All4.emplace(x,y);}for(auto &[x,y]:Left){All1.emplace(x,y);All2.emplace(x,y);}if(All1.size()==cnt||All2.size()==cnt) continue;for(auto &[x,y]:Right){All3.emplace(x,y);All4.emplace(x,y);}if(All3.size()==cnt||All4.size()==cnt) continue;cout<<"NO"<<endl;return;}}}cout<<"YES"<<endl;
}

C.Loyalty


原题链接

解题思路

观察忠诚度定义,发现可以把区间分成若干块,每一块产生贡献的是块内最后元素
不难想到一种贪心的思路,尽可能产生大的贡献,把若干个最大的值最大的值放在块的最后
然后维护每个最大值,贪心使其产生贡献丢掉前面若干个最小值。最后的答案就是可以产生贡献1的最大值之和。
排序然后双指针维护大概就行了,这里代码为了方便采用了std::multiset.

AC code

void solve(){int n;cin>>n;ll X;cin>>X;vector<ll>a(n+1);multiset<ll>Q;for(int i=1;i<=n;i++) cin>>a[i],Q.emplace(a[i]);ll sum=accumulate(a.begin()+1,a.end(),0LL);int cnt=0;vector<ll>ans;ll tmp=0;while(!Q.empty()){ll back=*Q.rbegin();Q.erase(Q.find(back));tmp+=back;while(!Q.empty()&&tmp/X<=cnt){int front=*Q.begin();tmp+=front;ans.push_back(front);Q.erase(Q.begin());}if(tmp/X>cnt) cnt=tmp/X;ans.push_back(back);}auto calc=[&](vector<ll>&ans) ->ll {ll res=0,tmp=0,cnt=0;for(int i=0;i<ans.size();i++){tmp+=ans[i];if(tmp/X>cnt){cnt=tmp/X;res+=ans[i];}}return res;};cout<<calc(ans)<<endl;for(int i=0;i<ans.size();i++) cout<<ans[i]<<' ';cout<<endl;
}

D.Locked Out


原题链接

解题思路

观察发现答案值域限定非常小,考虑从值域出发枚举,
首先模板化的把删去最少元素转化为保留最多的元素
然后从大到小开始枚举每个值域对应的下标,
定义 $dp_i $为下标为 $i $的合法串的最大长度
当前下标的dp值由
当前元素前面所有比当前下标大的元素 以及
当前元素后面比当前下标大至少2的元素 转移而来
对于第2种 可以用一种延迟更新的Trick,
而第1种直接询问[1,i-1]中最大dp值即可
发现这样做暴力的话是 \(O(n^2)\),拿线段树或树状数组优化一下可以变成 \(O(n \lg n)\)

AC code

struct BIT{#define lc (p<<1)#define rc (p<<1|1)struct Seg{int l,r;ll sum;Seg():l(0),r(0),sum(0LL){}Seg(int l,int r,ll sum):l(l),r(r),sum(sum){}};int n;vector<Seg>tre;BIT(int n):n(n){tre.resize(n<<2);build(1,n,1);}void pushup(int p){tre[p].sum=max(tre[lc].sum,tre[rc].sum);}void build(int l,int r,int p){tre[p]=Seg(l,r,0LL);if(l==r) return;int mid=l+r>>1;build(l,mid,lc);build(mid+1,r,rc);pushup(p);}void Upd(int x,ll k,int p){if(tre[p].l==tre[p].r){tre[p].sum=max(tre[p].sum,k);return;}int mid=tre[p].l+tre[p].r>>1;if(mid>=x) Upd(x,k,lc);if(mid<x) Upd(x,k,rc);pushup(p);}void Upd(int x,ll k){const int p=1;if(tre[p].l==tre[p].r){tre[p].sum=max(tre[p].sum,k);return;}int mid=tre[p].l+tre[p].r>>1;if(mid>=x) Upd(x,k,lc);if(mid<x) Upd(x,k,rc);pushup(p);}ll qry(int l,int r,int p){if(l<=tre[p].l&&tre[p].r<=r){return tre[p].sum;}int mid=tre[p].l+tre[p].r>>1;ll ans=0;if(mid>=l) ans=max(ans,qry(l,r,lc));if(mid<r) ans=max(ans,qry(l,r,rc));return ans; }ll qry(int l,int r){const int p=1;if(l<=tre[p].l&&tre[p].r<=r){return tre[p].sum;}int mid=tre[p].l+tre[p].r>>1;ll ans=0;if(mid>=l) ans=max(ans,qry(l,r,lc));if(mid<r) ans=max(ans,qry(l,r,rc));return ans; }
};
void solve(){int n;cin>>n;vector<int>a(n+1);vector<vector<int>>p(n+1);for(int i=1;i<=n;i++) {cin>>a[i];p[a[i]].push_back(i);}BIT S(n+1);for(int x=n;x>=1;x--){ll res=S.qry(0,n+1);//全局最大值for(int i:p[x]){int Len=S.qry(0,i);S.Upd(i,Len+1);}if(res>0) S.Upd(0,res);//延迟更新全局最大值}cout<<n-S.qry(0,n+1)<<endl;
}

附上超时的BF代码便于理解

void solve() {int n;cin >> n;vector<vector<int>> vec(n+1);for (int i = 0; i < n; ++i) {int val;cin >> val;vec[val].push_back(i);}vector<int> max_vals(n + 1);for (int v_idx = n; v_idx >= 1; --v_idx) {int res = 0;for (int val : max_vals) res = max(res, val);for (int i : vec[v_idx]) {int prev_max = 0;for (int j = 0; j <= i; ++j) {prev_max = max(prev_max, max_vals[j]);}max_vals[i ] = 1 + prev_max;}if (res > 0) {max_vals[0] = max(max_vals[0], res);}}int lgs_length = 0;for (int val : max_vals) {lgs_length = max(lgs_length, val);}cout << n - lgs_length << "\n";
}

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

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

相关文章

Spring Web MVC入门 - 指南

Spring Web MVC入门 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", …

CSS:现代Web设计的不同技术

CSS(层叠样式表)是为HTML提供样式的主要语言。随着Web的发展,CSS也不断演进,融入了许多新特性和技术,帮助开发者创建更美观和功能丰富的网站。本文将探讨CSS的几种不同技术,包括Flexbox、Grid、动画效果、预处理…

左手坐标系和右手坐标系

左手坐标系和右手坐标系1. 左手坐标系 伸开左手,掌心向外,拇指和食指垂直,弯曲中指、无名指和小指。拇指所指的方向是X轴正方向,食指所指的方向是Y轴正方形,中指、无名指和小指所指的方向是Z轴正方向。 2. 右手坐…

ubuntu24 主题体验经验

一、主题来源网站 https://www.gnome-look.org/s/Gnome/browse?cat=135&page=11&ord=rating 二、主题安装文件夹 & 设置创建文件夹 ~/.themes 下载的主题直接扔到这个文件夹。好处有2 (1) 简单,不用权…

图神经网络(GNN)

一、概念 1、GNN是处理图结构数据的深度学习模型,核心是通过图卷积、注意力机制等操作,让节点学习自身与邻居的关联信息,最终输出节点 / 图的特征或预测结果 2、传统深度学习(CNN、RNN)擅长处理网格数据(如图片)…

docker部署OpenResume 开源简历生成器

采用现代专业设计,符合美国最佳实践,并与 Greenhouse 和 Lever 等主流 ATS 平台兼容。它能自动设置字体、字号、页边距和项目符号格式,确保一致性并避免人为错误。官网:GitHub - xitanggg/open-resume: OpenResume…

深入解析:MySQL 配置管理与日志系统完全指南:从基础到高级优化

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

不使用 AAudio 的前提下,降低 Android 音频传输延时的方案

如果芯片厂未实现 MMAP 驱动接口,那么即使客户端代码调用了 AAudio 接口,也无法降低音频传输延时。因为 AAudio 会回退到以 legacy 模式工作。在芯片驱动不支持使用 AAudio 的前提下,我们可以通过其它方式来减少音频…

深入解析:dmfldr快速装载工具使用

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

OpenAPI 3 所有常用注解的实际用法

OpenAPI 3 所有常用注解的实际用法OpenAPI 3 所有常用注解的实际用法 一个完整的 Spring Boot + SpringDoc 示例,涵盖了 OpenAPI 3 所有常用注解的实际用法,包括接口分组、参数说明、响应结构、模型字段描述、隐藏接…

LINQ 表达式详解

1. 基础概念与用法 1.1 什么是 LINQ? LINQ 是 .NET Framework 3.5 引入的一项特性,它将查询能力直接集成到 C# 语言中。通过 LINQ,你可以像写 SQL 一样对内存中的集合(如 List<T>、数组)或外部数据源(如数…

任务---网络通信组件JsonRpc

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

K230使用RTSP实现无线图传

K230 使用 RTSP 实现无线图传 效果图开发环境开发板:LCKFB-LSPI-K230-1G-CanMV 固件:CanMV_K230_LCKFB_micropython_v1.4-0-g6cce59c_nncase_v2.9.0.img IDE:CanMV K230 播放器:VLC 播放器RTSP 介绍 RTSP(Real-Time S…

英语背单词 专八词汇 中英对照 2025年11月

2025-11-022025-11-01Index Word Pronunciation Parts of Speech Explanation Translation in Chinese1 lineage /ˈlɪnɪɪdʒ/ noun A line of descendants from a particular ancestor; ancestry or heritage; fam…

CodeForces-2138B Antiamuny Wants to Learn Swap

tag: *1900;逆序对,单调栈,双指针,线段树CodeForces-2138B Antiamuny Wants to Learn Swap tag: *1900;逆序对,单调栈,双指针,线段树对于长度为 \(m\) 的数组 \(b\),你可以进行以下两种操作:选择一个下标 \(…

EVA 个人总结

新剧场版设定总结【防止与TV混淆】 第一次冲击 莉莉丝引发并孕育出人类 第二次冲击 南极对Adams的研究 使徒的目标:融合莉莉丝实现进化(会引发第三次冲击) 第四使徒 水天使 真嗣的第一次战斗-初号机暴走 第五使徒 昼…

背单词 纯英文 2025年11月

2025-11-02underdog, 2025-11-01lineage, communion, taunt, florid, nominal,cocaine, partake, hump, painstaking, infuse,definitive, mercenary, virtuous, icing, acquiesce

部署Docker开源记账神器Firefly III

部署Docker开源记账神器Firefly III参考文章:Site Unreachable 官网:GitHub - firefly-iii/firefly-iii: Firefly III: a personal finances manager 使用 Docker - Firefly III 文档 --- Using Docker - Firefly II…

多车轨迹规划

一、问题定义 多车轨迹规划的核心是在满足约束的前提下,通过优化目标函数实现高效协同二、目标函数,即优化方向 1、效率优先:总行驶时间最短、总行驶距离最短、平均车速最高 2、安全第一:车辆间最小距离最大化、避…

完整教程:RabbitMQ-如何保证消息不丢失

完整教程:RabbitMQ-如何保证消息不丢失pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…