当前位置: 首页 > news >正文

【题解】Atcoder Beginner Contest 437(ABC437) A~E

A - Feet

直接代入计算。

#include<bits/stdc++.h>
using namespace std;
int a,b;
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a>>b;cout<<a*12+b;return 0;
}

B - Tombola

直接模拟即可。

#include<bits/stdc++.h>
using namespace std;
int h,w,n,ans;
int a[110][110],cnt[110];
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>h>>w>>n;for(int i=1;i<=h;i++){for(int j=1;j<=w;j++) cin>>a[i][j];}for(int i=1;i<=n;i++){int q;cin>>q;for(int i=1;i<=h;i++){for(int j=1;j<=w;j++){if(a[i][j]==q){cnt[i]++;break;} }}}for(int i=1;i<=n;i++) ans=max(ans,cnt[i]);cout<<ans;return 0;
}

C - Reindeer and Sleigh 2

考虑所有鹿都在雪橇上时,总重量为 \(\sum w_i\),换下第 \(i\) 个鹿,拉力 \(+p_i\),重量 \(-w_i\)

题目要求拉力 \(\ge\) 重力,即总重量 \(-\) 拉力 \(\le0\)。根据刚才推得,换下第 \(i\) 个鹿,总重量 \(-\) 拉力变小 \(w_i+p_i\),则按 \(w_i+p_i\) 从大到小选择拉雪橇的鹿直到该值 \(\le 0\) 即可。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e5+10;
int T,n,sum,ans;
int w[N],p[N],a[N];
bool cmp(int x,int y){return x>y;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>T;while(T--){cin>>n;sum=ans=0;for(int i=1;i<=n;i++){cin>>w[i]>>p[i];a[i]=p[i]+w[i];sum+=w[i];} sort(a+1,a+1+n,cmp);for(int i=1;i<=n;i++){if(sum<=0) break;ans++;sum-=a[i];}cout<<n-ans<<'\n';}return 0;
}

D - Sum of Differences

先考虑没有绝对值怎么做。对于每个 \(a_i\),都要加 \(m\) 次并减去整个 \(b\) 序列的和 \(\sum b_j\),累加统计答案即可。

接着考虑加上绝对值,则对于 \(>a_i\)\(b_j\),需要取相反数。二分查找 \(b\)\(\le a_i\) 的位置 \(k\),维护 \(b\) 的前缀和,则对于 \(a_i\),其贡献为 \(k\times a_i-sumb_k+sumb_m-sumb_k-(m-k)\times a_i\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e5+10;
const int p=998244353;
int n,m,ans;
int a[N],b[N];
int sumb[N];
int bfind(int tar){int l=1,r=m,mid;while(l<r){mid=(l+r+1)/2;if(b[mid]<=tar) l=mid;else r=mid-1;}return l;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=m;i++) cin>>b[i];sort(b+1,b+1+m);for(int i=1;i<=m;i++) sumb[i]=sumb[i-1]+b[i];for(int i=1;i<=n;i++){int t=upper_bound(b+1,b+1+m,a[i])-b-1;int res=(a[i]*t-2*sumb[t]+sumb[m]-a[i]*(m-t))%p;ans=(ans+res)%p;}cout<<ans;return 0;
}

E - Sort Arrays

向已有序列后接元素形成新序列,不难想到字典树。按字典序排列即字典树的先序遍历,其中同一层的节点按字典序排列。

接着考虑同一大小的元素,如何让其按给定顺序输出。可以把这些元素合并为一个节点,同时维护每个节点包含的编号,按顺序排列。

使用 map 维护每个节点的出边,以及 vector 维护每个节点包含的编号。

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;
int n;
int h[N],tot=1;
int a[N],b[N];
map<int,int> G[N];
vector<int> unq[N];
void dfs(int u){for(int i=0;i<unq[u].size();i++) cout<<unq[u][i]<<' ';for(auto i:G[u]) dfs(i.second);
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);h[0]=1;cin>>n;for(int i=1;i<=n;i++){cin>>a[i]>>b[i];int u,v;u=h[a[i]];if(!G[u].count(b[i])) G[u][b[i]]=++tot;v=G[u][b[i]];h[i]=v,unq[v].push_back(i);} dfs(1);return 0;
}
http://www.jsqmd.com/news/155954/

相关文章:

  • 学期回顾随笔_102301412_章鸿晨
  • CSS 颜色
  • 7.C++入门:类和对象|日期类的实现|取地址运算符重载|const成员函数|初始化列表|类型转换
  • PyTorch安装教程Linux版:Ubuntu+CUDA+cuDNN完整流程
  • Python 3 推导式
  • YOLOv11目标检测模型训练实战(基于PyTorch-CUDA镜像)
  • PyTorch-CUDA-v2.6镜像发布:开箱即用的AI训练环境
  • Docker Compose编排多个PyTorch服务,构建AI微服务架构
  • Vue.js 过渡 动画
  • SSH密钥登录PyTorch容器,提高远程开发安全性
  • C 函数指针与回调函数
  • 生成何以智能?——论道法术器贯通的生成式AGI新范式及其技术实现
  • Thinkphp_Laravel框架开发的vue植物园性毒源成分管理系统_y2201
  • 无需复杂配置!PyTorch-CUDA基础镜像一键启动GPU训练
  • Java计算机毕设之基于SpringBoot+Vue的英语学习平台设计与实现基于springboot的大学生英语学习平台(完整前后端代码+说明文档+LW,调试定制等)
  • AI论文写作神器:6大工具一站式搞定选题到降重,1小时完成初稿效率翻倍!
  • 8.C++入门:类和对象|static成员|友元|内部类|匿名对象|对象拷贝时的编译器优化
  • 深度学习入门必看:如何在Windows上安装PyTorch GPU版本
  • C++ 模板
  • Git下载慢?教你用国内镜像加速克隆PyTorch相关项目
  • Java计算机毕设之基于springboot的宾馆客房管理系统Springboot+vue宾馆酒店客房管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • 利用PyTorch-CUDA-v2.6镜像实现大模型Token生成加速
  • Thinkphp_Laravel框架开发的vue职位数据采集与数据分析系统设计与实现
  • YOLOv11模型训练新选择:PyTorch+GPU云环境部署指南
  • 生成何以智能?——基于六十四卦状态空间的原理认知新范式
  • Thinkphp_Laravel框架开发的垃圾分类系统的设计与实现
  • Markdown写技术博客 + PyTorch训练模型,全流程自动化实践
  • PyTorch安装卡在‘Installing, this may take a few minutes...’?一招解决
  • HarmonyOS 分布式硬件实战指南:从原理到可运行 Demo
  • 01.高安全用户表的设计