小白月赛99FG

news/2024/9/20 3:20:29/文章来源:https://www.cnblogs.com/huweixiang/p/18381571

F-自爆机器人_牛客小白月赛99 (nowcoder.com)

假设从个点中的某个点\(\color{#50F}{a_k}\)设立墙,将机器人往左弹 , 中间过程不考虑,其一定会回到\(\color{#50F}{m}\)点,称其为\(\color{#50F}{k}\)点的一个往返,其距离为 \(\color{#50F}{a_k - a_{i} , i \in [ 1 , k -1]}\) , 每个点都可以有多个往返,现在考虑中间的过程不难发现中间的过程也是又很多个往返组成 ,由于往返的位移为零,题目要求位移为\(\color{#50F}{n}\)所以还要加上一个向右的大小为\(\color{#50F}{n}\)的位移,所以总共的伤害为\(\color{#50F}{min(\Sigma_{i = 1}^{k}f(a_i) + n, t) , f(a_i) 为a_i往返距离和}\)

\(\color{#50F}{k}\)的每个往返必定包含 \(\color{#50F}{a_k - a_{k-1}}\) , 所以每个往返可以只统计\(\color{#50F}{a_k - a_{k-1}}\),其余距离留计算其他往返时统计 , 列如\(\color{#50F}{a_5 - a_{1},可以拆成 a_5 - a_4 , a_4 - a_3 , a_3 - a_2 , a_2 - a_1 } 将5的往返拆成了 5 , 4 , 3 , 2 ,1 的距离为a_x - a_{x-1}往返\)

很容易就能想到用完全背包解决,但我看\(\color{#50F}{m}\)的范围是\(\color{#50F}{[1 , 2*1e^5]}\) 算得复杂度为\(\color{#50F}{m* n}\)迟迟不敢写,后来看题解发现\(\color{#50F}{a_k - a_{k-1}}\)两两不相同也最多只有\(\color{#50F}{\sqrt[2]{n}}\)种可能 ,所以复杂度为\(\color{#50F}{\sqrt[2]{n}* m}\)

#include "bits/stdc++.h"
using namespace std ;
#define int long long 
#define pll pair<int , int>
const int N = 1e6 + 9 ;
int n , m , t ;
void solve( ) {cin >> n >> m >> t ;vector< int > c , d ;vector< bool > vis( t + 9) ;vis[0] = 1 ;for( int i = 1 ; i <= m ; i ++ ) {int x ;cin >> x ;c.push_back(x) ;}sort(c.begin() , c.end()) ;for( int i = 1 ; i < m ;i ++ ) {d.push_back(c[i] - c[i-1]) ;}sort(d.begin() , d.end()) ;d.erase(unique(d.begin() , d.end()) ,d.end()); for( auto x : d ) {for( int i = x ; i <= t ; i ++ ) {vis[i] = max( vis[i - x] , vis[i]) ;}}int ans = 0 ;for( int i = t ; i >= 0 ; i -- ) {if( vis[i] && (i *2 + n <= t )) {ans = i*2 + n ;break;}}cout << ans << '\n' ;
}signed main( ) {ios::sync_with_stdio(false) ,cin.tie(0) ,cout.tie(0) ;int _ = 1 ;cin >> _ ;while( _ -- ) {solve( ) ;}
}

G-大鱼吃小鱼_牛客小白月赛99 (nowcoder.com)

离散化,统计每个时间鱼种类,用递推的思想,假设当前时间为 i ,并且统计好了鱼的种类,计算时间为i +1时鱼的种类时只要减去 右端点为l的鱼,加上左端点为l的鱼,即可

#include "bits/stdc++.h"
using namespace std ;
#define lbt(x) x & -x 
#define int long long 
#define pll pair<int , int>
const int N = 1e6 + 9 ;
int n , w , su[N] ;
struct fish{int l , r , a ;
}x[N] ;
void add( int i  ,int r ) {while( i < n*2 ) su[i] += r , i += lbt(i) ;
}
int sum( int i ) {int res = 0 ;while( i ) res += su[i] , i -= lbt(i) ;return res ;
}
void solve( ) {vector<int>c ;// 离散化 质量vector<int>s ;//离散化 时间点cin >> n >> w ;memset( su , 0 , sizeof(int)*(n*2) ) ;vector<vector<int>> r( n*3) ; vector<vector<int>> l( n*3) ; for( int i = 1 ; i <= n ; i ++ ){cin >> x[i].l >> x[i].r >> x[i].a , c.push_back(x[i].a);s.push_back(x[i].l) ;s.push_back(x[i].r) ;}sort( c.begin() , c.end() ) ;c.erase(unique(c.begin() , c.end()) , c.end()) ;sort( s.begin() , s.end() ) ;s.erase(unique(s.begin() , s.end()) , s.end()) ;auto find = [](vector<int> &c , int x ) -> int {return lower_bound(c.begin(), c.end() , x ) - c.begin() + 1;} ;for( int i = 1 ; i <= n ;i ++ ) {x[i].l = find( s , x[i].l ) ;x[i].r = find( s , x[i].r ) ;r[x[i].r].push_back(x[i].a) ;l[x[i].l].push_back(x[i].a) ;}set<int , greater<int> >f ;map<int , int > g ;int ans = w ;for( int i = 1 ; i <= n*2 ;i ++ ) {for( auto x : l[i] ) {f.insert(x) ;g[x] ++ ;add( find( c, x) , x ) ;}for( auto x : r[i] ) {g[x] -- ;if(g[x] == 0) {f.erase(x);g.erase(x);}add( find( c, x) , -x ) ;}int v = w ;while( true ) {if(f.lower_bound(v) == f.end()) break;int x = find( c , *f.lower_bound(v));if( v == sum(x) + w ) break; v = sum(x) + w;}ans = max( ans , v ) ;}cout << ans << '\n' ;
}signed main( ) {ios::sync_with_stdio(false) ,cin.tie(0) ,cout.tie(0) ;int _ = 1 ;cin >> _ ;while( _ -- ) {solve( ) ;}
}

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

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

相关文章

【颓】武3乱打

孤单的王者之路上,唯有幻象是他的仆从。他将在最终的黑夜之前,带上无罪的冠冕。写这篇博主要是为了听歌,大概率会断更。 2024.08.26本文来自博客园,作者:hzoi_Shadow,原文链接:https://www.cnblogs.com/The-Shadow-Dragon/p/18381573,未经允许严禁转载。 版权声明:本作…

时间序列特征提取:从理论到Python代码实践

时间序列是一种特殊的存在。这意味着你对表格数据或图像进行的许多转换/操作/处理技术对于时间序列来说可能根本不起作用。"特征提取"的想法是对我们拥有的数据进行"加工",确保我们提取所有有意义的特征,以便下一步(通常是机器学习应用)可以从中受益。也就…

《英雄无敌》2黄金版(英文)——免CD修改

《英雄无敌》2对原有1代的兵种、魔法种类都进行广泛的修改。其中城堡种类从原有的4种增加到6种,并且部分兵种还可以升级。魔法是使用不再是次数,而是消耗魔法点数,这样所学的魔法不再消失,而是在魔法点数不足时无法使用而已。《英雄无敌》2首先推出原版——延续的战争,接着…

解包黑神话悟空

首先下载这三个工具 https://dllinjector.net https://github.com/TheNaeem/UnrealMappingsDumperhttps://fmodel.app 其中第二个链接打开后这样 点击这个 只需要下载这个。 三个工具安装好后。 打开出现这个页面后 将 拖动到这个页面 然后通过steam启动黑神话悟空 输入b1-…

学习真DDD的最佳路径

本文书接上回《DDD是软件工程的第一性原理?》,关注公众号(老肖想当外语大佬)获取信息:最新文章更新;DDD框架源码(.NET、Java双平台);加群畅聊,建模分析、技术实现交流;视频和直播在B站。假DDD的特征 在开始之前,考虑到目前关于DDD的资料非常多且杂,我们需要具备分…

limu|P31-34|CPU和GPU

目录CPU VS GPU提升CPU利用率1、提升空间和时间的内存本地性2、并行以利用所有核提升GPU利用率1、并行2、内存本地性3、少用控制语句4、不要频繁在CPU和GPU之间传数据单机多卡并行分布式计算 CPU VS GPU 首先,一个芯片的空间是有限的,给了很多空间给某个内容(能力强),其他…

【综合评价方法】常见综合评价方法及其实现

@目录1.数据预处理1.1 区分指标的属性1.2 指标正向化1.2.1 负向指标1.2.2 中间指标1.2.3 区间指标1.3 标准化1.3.1 Z-score 标准化1.3.2 Min-max 标准化1.3.3 Robust 标准化1.3.4 归一化2.模糊评价法(主观)(not recommended)3.层次分析法(主观)(not recommended)4.PCA主成分…

k8s集群使用私有仓库通过containerd上传镜像(没解决...)

查阅资料 根据 containerd 中部分文档 https://github.com/containerd/containerd/blob/release/1.5/docs/cri/registry.mdhttps://github.com/containerd/containerd/blob/release/1.5/docs/hosts.mdhttps://blog.csdn.net/u010566813/article/details/125990298最终私有仓库…

OceanBase-OB备份异地恢复流程

OB备份异地恢复流程 ——2023年5月9日 一、【白屏操作】 1、确定当前备份的OB版本: 2、新建备份目录授权(备份到本地目录为例):mkdir /obbackup/ chown -R admin.admin /obbackup/保证能解析成功: 3、点击“备份”,查询操作系统的目录结构:4、拷贝租户层面数据文件…

软工homework1:自我介绍+5问

软工homework1:自我介绍+5问这个作业属于哪个课程 广工计院计科34班软工这个作业要求在哪里 作业要求这个作业的目标 学会创建并使用自己的博客和Github,熟悉其中的基本操作和功能,用Markdown编写完成自我介绍以及软工5问前言 亲爱的读者,正如你所见,这是我在博客园发布的…

Typora 上传到 Github 实现笔记同步管理

首先在 Github 上 new 一个 repository ,我建的名称是 md_notes 然后在本地 terminal 中启动以下命令新建一个 ssh key ssh-keygen -o生成的 public key 就是我们需要的东西,接着再输入 cat C:\Users\ASUS/.ssh/id_rsa.pub 就能获取到生成的密钥复制生成的密钥(两个 PS 中间…