abc 408 d~f

这次做了一次 abc,d 做出来了,但是比较麻烦,又用正确方法写了一遍,整理一下 d,e,f,g 有一些超纲。

abc408d

考虑把区间 \(l,r\) 最后变成 1,然后尝试去表示这个时候的答案。

\(sum[i]\) 表示 \(i\) 位置以及之前的 1 的总和。

可以很简单列出来↓

\(sum[n]-(sum[r]-sum[l-1])+(r-l+1)-(sum[r]-sum[l-1])\)

我们尝试移项可以得出↓

\(sum[n]+(r-2*sum[r])+(2*sum[l-1]-(l-1))\)

我们枚举 r,维护 sum[l-1]-(l-1) 的前缀最小值就可以做了。

代码↓

点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int MN=1e6+116;
int T, n, sum[MN], pre[MN];
char s[MN];
int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin>>T; while(T--){cin>>n; for(int i=1; i<=n; ++i) cin>>s[i]; int ans=0x3f3f3f3f;for(int i=0; i<=n+1; ++i) sum[i]=0, pre[i]=0x3f3f3f3f;for(int i=1; i<=n; ++i) sum[i]=sum[i-1]+(s[i]=='1');for(int i=0; i<=n; ++i) pre[i]=2*sum[i]-i;for(int i=1; i<=n; ++i) pre[i]=min(pre[i],pre[i-1]);for(int i=1; i<=n; ++i) ans=min(ans,sum[n]+(i-2*sum[i])+pre[i]);cout<<ans<<'\n';}return 0;
}

abc408e

明明自己今天刚说了说关于位运算的,结果一考没想出来。

我们贪心考虑,从高位到低位尝试放 0。

对于某一位,我们如果要尝试填 0 的话,我们删掉所有的边权不含 0 的边之后应该是可以从 1 走到 n 的。

如果填 0 不成我们边需要填 1 了。

填 0 之后我们不能考虑这一位是 1 的了,全部删掉。

代码↓

点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MN=1e6+116;
struct Node{int u, v, w;int tag=true;
}side[MN];
int n, m, father[MN], ans=0;
int find(int x){if(father[x]!=x) father[x]=find(father[x]);return father[x];
}
void merge(int x, int y){x=find(x), y=find(y);if(x==y) return;father[x]=y; return;
}
signed main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin>>n>>m;for(int i=1; i<=m; ++i){cin>>side[i].u>>side[i].v>>side[i].w;}for(int t=30; t>=0; --t){for(int i=1; i<=n; ++i) father[i]=i;for(int i=1; i<=m; ++i){if(side[i].w&(1<<t)||!side[i].tag) continue;merge(side[i].u,side[i].v);}if(find(1)!=find(n)){ans+=(1<<t);}else{for(int i=1; i<=m; ++i){if(side[i].w&(1<<t)){side[i].tag=false;}}}}cout<<ans<<'\n';return 0;
}

abc408f

数据结构优化dp,把 h 从小到大排序,线段树维护 dp 值,实时更新可以转移的位置。

这个没啥好说的,就是没有去写。

代码↓

点击查看代码
#include <bits/stdc++.h>
#define lc k<<1
#define rc k<<1|1
using namespace std;
const int MN=2e6+216;
struct Segmentree{int l, r, maxn;
}tr[MN];
void pushup(int k){tr[k].maxn=max(tr[lc].maxn,tr[rc].maxn);
}
void build(int k, int l, int r){tr[k].l=l, tr[k].r=r;if(l==r){tr[k].maxn=0; return;}int mid=(tr[k].l+tr[k].r)>>1;build(lc,l,mid); build(rc,mid+1,r);pushup(k); return;
}
void update(int k, int pos, int val){if(tr[k].l==tr[k].r){tr[k].maxn=val; return;}int mid=(tr[k].l+tr[k].r)>>1;if(pos<=mid) update(lc,pos,val);else update(rc,pos,val);pushup(k); return;
}
int query(int k, int l, int r){if(tr[k].l>=l&&tr[k].r<=r) return tr[k].maxn;int mid=(tr[k].l+tr[k].r)>>1, res=0;if(l<=mid) res=max(res,query(lc,l,r));if(r>mid) res=max(res,query(rc,l,r));pushup(k); return res;
}
struct Node{int h, id;bool operator <(const Node &o)const{return h<o.h;}
}node[MN];
int n, d, r, pos=0, dp[MN];
int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);cin>>n>>d>>r; build(1,1,n);for(int i=1; i<=n; ++i){cin>>node[i].h; node[i].id=i;}sort(node+1,node+n+1);for(int i=1; i<=n; ++i){while(node[pos].h+d<=node[i].h){update(1,node[pos].id,dp[pos]); ++pos;}dp[i]=query(1,max(1,node[i].id-r),min(n,node[i].id+r))+1;}int ans=0;for(int i=1; i<=n; ++i) ans=max(ans,dp[i]);cout<<ans-1<<'\n';return 0;
}

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

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

相关文章

RMQ与LCA学习笔记

在开始之前先提一下RMQ与LCA这两个东西有什么关系 对于一个序列,对它构建出一颗笛卡尔树之后,两个点的LCA就是原序列中这两个点之间的最大值/最小值(取决于建树时的比较方式) 而对于一棵树,求出来他的欧拉序之后,…

the charm of Chinese language

The charm of Chinese language is you use it to read books. when I can read the original books translation as Chinese. I found the original one lets people dizzy, maybe it needs some graphs to make the …

mamba-硬件感知算法

扫描操作由于A B C这些矩阵现在是动态的了,因此无法使用卷积表示来计算它们(卷积核是固定的),因此,我们只能使用循环表示,如此也就而失去了卷积提供的并行训练能力 Mamba通过并行扫描(parallel scan)算法使得最终并…

完整教程:lua代码解析1

完整教程:lua代码解析1pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

system表空间丢失部分文件恢复---惜分飞

system表空间丢失部分文件恢复---惜分飞联系:手机/微信(+86 17813235971) QQ(107644445) 标题:system表空间丢失部分文件恢复 作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任…

二维数点

介绍 给出一个二维平面內的若干个点,多次询问某个矩形区域內包含多少个点(边界也算)。又或者,给一个长为 n nn 的序列,多次询问区间 [ l , r ] [l,r][l,r] 中值在 [ x , y ] [x,y][x,y] 内的元素个数。 例题 P190…

gitee和github如何修改仓库名并且保持与原远程仓库的连接?(手把手教学) - 实践

gitee和github如何修改仓库名并且保持与原远程仓库的连接?(手把手教学) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

2025.10.10总结 - A

今天上了节英语,感觉还可以,下雨了,一直在宿舍,感觉很爽。

[20251010]建立完善tpt的prr.sql脚本.txt

[20251010]建立完善tpt的prr.sql脚本.txt--//昨天在测试时不小心输入pr命令时多输入一个r,没想到居然执行了,说明在本目录或者SQLPATH环境目录下存在prr.sql脚本。--//当时忙着处理其他事情,先把这件事情放一放,今…

第十一篇

今天是10月10号,今天只上了一节英语课,学习了新的单词,颇有收获。

[Flutter] Flutter APK构建签名并推广到Github workflow

[Flutter] Flutter APK构建签名并推广到Github workflowFlutter APK构建签名并推广到Github workflow 最近在开发flutter软件的时候发现构建出来的apk在手机上不能直接覆盖更新,会提示签名不一致,但由于我的软件是在…

Windows 电脑安装 XTerminal 1.25.1 x64 版(带安装包下载关键词)​

Windows 电脑安装 XTerminal 1.25.1 x64 版(带安装包下载关键词)​​XTerminal​ 是一款运行在 Windows 系统上的终端工具(类似命令行窗口),通常用于开发者、运维人员或高级用户来执行命令、连接远程服务器、运行…

YOLOv11的神经辐射场(NeRF)辅助训练-(通过合成视角增强内容多样性)

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

题解:AT_arc138_f [ARC138F] KD Tree

题意:平面上有 \(n\) 个点 \((i,p_i)\),\(p\) 是一个排列。每次操作可以选择 \(x/y\) 和一个坐标,将点列分成左右/上下两边(保持两边的相对顺序不变),分别递归下去,直到只剩下一个点,把它加入答案序列末尾。求…

SP33 TRIP - Trip 个人题解

题目链接 题目大意: 给出两个字符串,要求求出所有 LCS (最长公共子序列问题)的具体方案,并按字典序输出 解题方法: 首先我们要清楚求 LCS 的长度的方法,按照闫氏DP分析法我们得到一下过程:但是我们如果直接在此…

经营不是老板一个人的事 - 智慧园区

很多企业都陷入了“高层定目标,中层传口号,基层盲执行”的怪圈。一提到“经营”,大家就会想到董事长、总经理,觉得那是高层的事。但真相是:如果经营思维只停留在高层,企业正在走向危险边缘。一、经营到底是什么?…

Codeforces Round 1051 (Div. 2)[A ~E]

―僕は其れに縋る事さえ/出来無かった訳ですから目录Codeforces Round 1051 (Div. 2)A. All Lengths SubtractionB. DiscountsC. Max TreeD. Inversion Graph Coloring Easy Version/Hard VersionE. Make Good Codefo…

如何在 Spring Boot 应用中配置多个 Spring AI 的 LLM 客户端

1. 概述 越来越多的现代应用开始集成大型语言模型(LLM),以构建更智能的功能。如何使用Spring AI快速整合LLM能力到自己的Spring Boot应用,在之前的博文中有过很多篇关于使用Spring AI使用不同供应商LLM的整合案例。…

【Azure APIM】解答REST API实现禁用自签名证书的证书链验证中的backends参数值从那里取值的问题?

问题描述 使用APIM服务时候,因为后端的API需要使用自签名证书进行验证。如果通过浏览器直接访问后端API返回正常,但是APIM请求的时候返回为500报错。 在开启Trace后,发现报错信息为:error message :The underlyin…