2025 USACO Feb 银组题解合集

news/2025/2/22 19:07:12/文章来源:https://www.cnblogs.com/Kenma/p/18731262

有题了再放链接。

A

考虑从大到小考虑每一个取值的数,如果能换就换,如果换了没用就不换。

实现上使用 vector 存下标,复杂度 \(O(n)\)

#include<bits/stdc++.h>
using namespace std;
int t,n,m,a[1000005],flag,tim;
vector<int> v[1000005],ans,out;
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>t;while(t--){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];v[a[i]].push_back(i);}ans.push_back(0);ans.push_back(0);m=ans.size();for(int i=n;i>=1;i--){if(!v[i].size()) continue;flag=false;for(int j=0;j<v[i].size();j++){if(v[i][j]<ans[m-1] && v[i][j]>ans[m-2]) flag=true;}if(flag && !tim){tim=1;ans[m-1]=ans[m-2];}for(int j=0;j<v[i].size();j++){if(v[i][j]>ans[m-1]) ans.push_back(v[i][j]),out.push_back(i);}m=ans.size();}cout<<out[0];for(int i=1;i<out.size();i++){cout<<' '<<out[i];}tim=m=0;out.clear();ans.clear();for(int i=1;i<=n;i++){v[i].clear();}if(t) cout<<'\n';}return 0;
}

B

考虑建出树,然后倒序考虑每一个叶子。每次询问时,暴力跳父亲并标记节点,这个叶子的答案就是最后一个没有被标记的祖先的深度。

实现上 dfs 即可,复杂度 \(O(n)\)

#include<bits/stdc++.h>
using namespace std;
int n,m,x,cnt[1000005],w[1000005],ans[1000005];
int head[1000005],nxt[2000005],target[2000005],tot;
void add(int x,int y){tot++;nxt[tot]=head[x];head[x]=tot;target[tot]=y;
}
int dep[1000005],vis[1000005],f[1000005];
void dfs(int x,int fa){for(int i=head[x];i;i=nxt[i]){int y=target[i];if(y==fa) continue;f[y]=x;dep[y]=dep[x]+1;dfs(y,x);}
}
int find(int x){while(!vis[f[x]] && x){vis[x]=1;x=f[x];}vis[x]=1;return dep[x];
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>x;add(x,i);cnt[x]++;cnt[i]++;}for(int i=1;i<=n;i++){if(cnt[i]==1) m++;}for(int i=1;i<=m;i++){cin>>w[i];}dfs(0,0);for(int i=m;i>=1;i--){ans[i]=find(w[i]);}for(int i=1;i<=m;i++){cout<<ans[i]<<'\n';}return 0;
}

C

注意到如果从最终状态往前推,每次能够进行的操作是唯一的。

然后瓶颈在于加快这个模拟过程。

不难发现,在大部分情况下,\((a,b) \to (a\bmod b,b)\)

然后就可以每次判断能否这么做,直接搜索即可。

复杂度 \(O(log v)\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,a,b,c,d;
int solve(int a,int b,int c,int d,int val){if(!a || !b || a<c || b<d) return -1;if(a<b) swap(a,b),swap(c,d);if(b==d && a%b==c%b) return val+(a-c)/b;else return solve(a%b,b,c,d,val+a/b);
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>t;while(t--){cin>>c>>d>>a>>b;cout<<solve(a,b,c,d,0)<<'\n';} return 0;
}

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

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

相关文章

详细介绍java的线程池状态

一、详细介绍java的线程池状态 Java 中的线程池状态是 ThreadPoolExecutor 类内部管理的一个重要概念。线程池的状态决定了线程池的行为,例如是否接受新任务、是否处理队列中的任务、是否中断正在执行的任务等。 线程池的状态通过一个 AtomicInteger 变量(ctl)来表示,该变量…

[Java SE] Java静态代码块与静态属性的执行顺序

序 重要结论先说结论,再去观察实验现象,印证结论。静态变量初始化和静态代码块的执行顺序是:按照它们在类中出现的顺序进行的。代码实验 实验1import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class JavaStaticTest {private final static String VAR = &qu…

PyTorch TensorBoard 使用

这篇文章介绍如何在 PyTorch 中使用 TensorBoard 记录训练数据。 记录数据 初始化 在程序启动时创建 SummaryWriter 对象用于写入日志数据。 from torch.utils.tensorboard import SummaryWriter import datetime# 获取当前时间戳,一般以时间戳作为记录文件夹名称的一部分 tim…

Svelte 最新中文文档教程(16)—— Context(上下文)

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

微信小程序-授权获取手机号

前端 wxml <button name=phone class=phone value={{userInfo.phone}} wx:if="{{!userInfo.phone}}" bindgetphonenumber="getPhoneNumber" hover-class=none open-type=getPhoneNumber>点击获取 </button>js import { wxGetPhoneNumber } fr…

Linux 中xargs 中 -L和-n参数的差异

001、-L :按照换行符的数量来传递[root@PC1 dir1]# ls [root@PC1 dir1]# echo {0..9} 0 1 2 3 4 5 6 7 8 9 [root@PC1 dir1]# echo {0..9} | xargs -L 2 ## 利用echo生成一个1行的测试数据 0 1 2 3 4 5 6 7 8 9 [root@PC1 dir1]# seq 0 9 0 1 2 3 4 5 6 7 8 9 [ro…

【humanoid gym】关于在Issac gym里面PPO算法实现里transitions部分roll out storage的记录

1. 前言 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流。 如有不对之处,欢迎评论区指出错误,你我共同进步学习! 2. 正文 2.1 在on_policy_runner.py文件夹下,初始化的地方:然后我们寻找定义的地方,在ppo.py文件夹下:其中参数num_transitions_per_env其…

Windows快速部署xxl-job.jar

1.在官网下载文件 https://gitee.com/xuxueli0323/xxl-job 2.在idea打开项目 3.修改maven版本,当前版本(2025/2/22)需要使用maven3.6.3+,maven地址:https://maven.apache.org/download.cgi maven版本过老的报错信息:Failed to execute goal org.apache.maven.plugins:mav…

复制浏览器网页文字 粘贴时却乱码的解决

本文介绍在复制网页内容后粘贴时,粘贴内容出现一个方框图案而不是当初复制内容的解决办法~本文介绍在复制网页内容后粘贴时,粘贴内容出现一个方框图案而不是当初复制内容的解决办法。最近,需要将谷歌地球引擎(Google Earth Engine,GEE)网页中的一段代码复制到另一个网页中…

【翻译】凝视深渊:千核并发控制的评估

凝视深渊:千核并发控制的评估 作者 Xiangyao Yu MIT CSAIL yxy@csail.mit.edu George Bezerra MIT CSAIL gbezerra@csail.mit.edu Andrew Pavlo 卡内基梅隆大学 pavlo@cs.cmu.edu Srinivas Devadas MIT CSAIL devadas@csail.mit.edu Michael Stonebraker MIT CSAIL stonebrake…

2.21课堂测验

需求描述: 请设计一个仓储管理系统原型系统,该系统支持多个仓库的设立。统一设立物资台账,物资台账需包含物资编码、物资名称、规格、材质、供应商、品牌、物资分类,用户可以自定义物资的物资分类。需限制不同的物资名称、规格、材质的物资不能设立相同的物资编码。仓库人员…

CSS2

盒子模型所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容 Margin(外边距):元素与其他元素的距离(边框以外的距离),外边距是透明的,需要修…