AtCoder Beginner Contest 374 A-E 题解

服了,跟 DP \text{DP} DP 杠上了,C 和 E 都在想 DP \text{DP} DP
C 和 D 又交了两发罚时

pAGbU00.png

每题难度:
A:11
B:28
C:226
D:694
E:1504
F:2026
G:2608

A. Takahashi san 2

题意

给你一个字符串,判断这个字符串是否以 san 结尾,是输出 Yes,否则输出 No

思路

使用 string 中的 .substr() 函数,若 s.substr(s.length()-3,3)=="san" 输出 Yes,否则输出 No

注:s.substr(i,len),表示从字符串 s s s 的第 i i i 为开始的 l e n len len 个字符组成的字符串(子串)

C++ 代码
#include<bits/stdc++.h>
using namespace std;
string s;
int main(){cin>>s;if(s.substr(s.length()-3)=="san"){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}return 0;
}

B. Unvarnished Report

题意

输出两个字符串 S S S T T T 第一个不同的位置

思路

将两个字符串用特殊符号补全,使它们长度相等即可判断

C++ 代码
#include<bits/stdc++.h>
#define sz(v) (int)v.size()
using namespace std;
string s,t;
int main(){cin>>s>>t;while(sz(s)<sz(t)){s+="?";}while(sz(t)<sz(s)){t+="!";}s=" "+s,t=" "+t;for(int i=1;i<=sz(s);i++){if(s[i]!=t[i]){cout<<i<<endl;return 0;}}cout<<0<<endl;return 0;
}

C. Separated Lunch

题意

n n n 个数,将它们分成两组,设这两组的和分别为 a a a b b b,求 max ⁡ ( a , b ) \max(a,b) max(a,b) 的最小值

思路

一开始以为是动态规划,结果直接 CE \color{#DFDF00}{\text{CE}} CE

暴力枚举每一个选分到第一组还是第二组,用二进制数表示,最多 2 20 2^{20} 220 次循环,时间足够

错误 C++ 代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=105;
const int maxm=1e8+5
int v[maxn];
int sum;
bool dp[maxn][maxm];
signed main(){int n;cin>>n;for(int i=0;i<n;i++){cin>>v[i];sum+=v[i];}dp[0][0]=1;for(int i=0;i<n;i++){for(int j=0;j<=sum;j++){dp[i+1][j+v[i]]=dp[i+1][j+v[i]]||dp[i][j];dp[i+1][j]=dp[i+1][j]||dp[i][j];}}int ans=sum;for(int i=0;i<=sum;i++){if(dp[n][i]){ans=min(ans,max(i,sum-i));}}cout<<ans<<endl;return 0;
}
正确 C++ 代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=25;
int n;
int k[maxn];
signed main(){cin>>n;for(int i=0;i<n;i++){cin>>k[i];}int mn=inf;for(int i=1;i<(1<<n);i++){int mask=i;int cnt=0;int a=0,b=0;while(cnt<n){if(mask&1) a+=k[cnt];else b+=k[cnt];mask>>=1;cnt++;}mn=min(mn,max(a,b));}cout<<mn<<endl;return 0;
}

D. Laser Marking

题意

一个机器,要画出平面上的 n n n 条线段,每条线段从 ( A i , B i ) (A_i,B_i) (Ai,Bi) ( C i , D i ) (C_i,D_i) (Ci,Di)

画线时每秒移动 T T T 个单位,不画线时每秒移动 S S S 个单位

一开始机器在位置 ( 0 , 0 ) (0,0) (0,0),你可以从 ( A i , B i ) (A_i,B_i) (Ai,Bi) ( C i , D i ) (C_i,D_i) (Ci,Di) 画一条线段,也可以从 ( C i , D i ) (C_i,D_i) (Ci,Di) ( A i , B i ) (A_i,B_i) (Ai,Bi) 画一条线段,一条线段不能中断

忽略抬笔和落笔的时间,问至少需要多少秒才能画完所有线段,误差需要在 1 0 − 6 10^{-6} 106 以内

思路

因为 N ≤ 6 N \le 6 N6,所以使用 next_permutation() 函数来枚举画线顺序,

在每个排列中,要使用二进制数枚举画线起点和终点

结果取最小值即可

注:两点间距离公式为 dist ( ( A i , B i ) , ( C i , D i ) ) = ( C i − A i ) 2 + ( D i − B i ) 2 \text{dist}((A_i,B_i),(C_i,D_i)) = \sqrt{(C_i-A_i)^2+(D_i-B_i)^2} dist((Ai,Bi),(Ci,Di))=(CiAi)2+(DiBi)2

C++ 代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef long double ld;
int n;
int s,t;
int a[10],b[10],c[10],d[10];
int pmt[10];
ld res=3e18;
int sqr(int a){return a*a;
}
signed main(){cin>>n>>s>>t;for(int i=1;i<=n;i++){pmt[i]=i;cin>>a[i]>>b[i]>>c[i]>>d[i];}do{for(int i=0;i<(1<<n);i++){ld ans=0;int x=0,y=0;for(int j=1;j<=n;j++){int cur=pmt[j];if(i&(1<<(j-1))){ans+=sqrt(sqr(c[cur]-x)+sqr(d[cur]-y))/s;x=a[cur],y=b[cur];}else{ans+=sqrt(sqr(a[cur]-x)+sqr(b[cur]-y))/s;x=c[cur],y=d[cur];}ans+=sqrt(sqr(a[cur]-c[cur])+sqr(b[cur]-d[cur]))/t;}res=min(ans,res);}}while(next_permutation(pmt+1,pmt+1+n));cout<<fixed<<setprecision(20)<<res<<endl;return 0;
}

E. Sensor Optimization Dilemma 2

AT又在E放二分答案!!!

题意

制造某个产品有 N N N 个步骤,第 i i i 个步骤有两个机器可以完成:

  • 机器 1 1 1:每台 P i P_i Pi 元,每天可以生产 A i A_i Ai 个产品
  • 机器 2 2 2:每台 Q i Q_i Qi 元,每天可以生产 B i B_i Bi 个产品

你共有 x x x 元钱来购买机器,不一定要全用完。

求出这个值的 最大值 min ⁡ i = 1 N { 第  i 天生产的产品数 } \min_{i=1}^N \{第\ i\ 天生产的产品数\} mini=1N{ i 天生产的产品数}

思路

二分答案:

二分查找这个 min ⁡ \min min 值,所以每个步骤就至少得每天生产这么多个产品,求出总钱数判断是否 ≤ x \le x x

C++ 代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=105;
int n,x;
int a[maxn],b[maxn],p[maxn],q[maxn];
bool check(int cur){int sum=0;for(int i=0;i<n;i++){int cost=3e18;for(int j=0;j<100;j++){int rest=max(cur-j*b[i],0ll); //若用j台机器2,还需生产多少个产品int k=(rest+a[i]-1)/a[i]; //还需要多少台机器1cost=min(cost,j*q[i]+k*p[i]); //取第i个步骤的金额最小值}sum+=cost; //计算总价钱if(sum>x){return false;}}return true;
}
signed main(){cin>>n>>x;for(int i=0;i<n;i++){cin>>a[i]>>p[i]>>b[i]>>q[i];if(p[i]*b[i]>q[i]*a[i]){swap(a[i],b[i]);swap(p[i],q[i]);}}int l=0,r=2e9;while(l<r){int mid=(l+r)/2;if(check(mid)){l=mid+1;}else{r=mid;}}cout<<l-1<<endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

springboot医院预约挂号系统

基于springbootvue实现的医院预约挂号系统 &#xff08;源码L文ppt&#xff09;4-085 4.1系统功能模块设计 医院预约挂号系统与数据分析系统在设计与实施时&#xff0c;采取了模块性的设计理念&#xff0c;把相似的系统的功能整合到一个模组中&#xff0c;以增强内部的功能…

服装生产管理:SpringBoot框架的高效实现

3 系统分析 3.1 可行性分析 可行性分析是该平台系统进行投入开发的基础第一步&#xff0c;必须对其进行可行性分析才能够降低不必要的需要从而使资源合理利用&#xff0c;更具有性价比和降低成本&#xff0c;同时也是系统平台的成功的未雨绸缪的一步。 3.1.1 技术可行性 技术…

城市交通场景分割系统源码&数据集分享

城市交通场景分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-Faster&#xff06;yolov8-seg-GhostHGNetV2等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glob…

LLM RAG面试问题大全!

01 引言 RAG在通用人工智能、数据科学和人工智能的发展领域中起到了变革性的作用。RAG模型让机器能够基于事实产生更准确、连贯和一致的语言&#xff0c;它改变了人类与技术的互动方式。RAG让能够撰写独特内容、引人入胜的产品描述和新闻文章的机器人概念成为现实。尽管RAG的重…

打造梦幻AI开发环境:一步步解锁高效配置的魅力

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…

2024年双11哪些好物值得买?双十一必入好物清单不容错过!

在双十一这个年度购物盛宴中&#xff0c;万千精品汇聚一堂&#xff0c;优惠力度空前绝后。本文精心挑选了一系列不容错过的好物&#xff0c;旨在为您的购物车增添几分智慧与惊喜。无论是科技潮品、还是生活日用、家居装饰&#xff0c;每一款推荐都承载着对品质生活的追求与热爱…

Unity实现自定义图集(三)

以下内容是根据Unity 2020.1.0f1版本进行编写的   1、实现编辑器模式下进游戏前Pack全部自定义图集 同Unity的图集一样,Unity的编辑器模式会在进游戏前把全部的SpriteAtlas都打一次图集,如图: 我们也实现这样的效果。 首先需要获取全部的图集路径。因为目前使用的是以.…

天玑 9400 基本确认:4大升级,一代“冰龙”来了

去年&#xff0c;天玑9300 破釜沉舟&#xff0c;打破了A系不可击败的神话。但今年&#xff0c;对安卓阵营来说&#xff0c;才是扬眉吐气的时刻。 因为芯片人才的流失&#xff0c;果子已经雄风不再。即使是 4nm 工艺打3nm工艺&#xff0c;天玑 9300 的 GPU效能&#xff0c;也压…

【笔记】6.2 玻璃的成型

玻璃熔体的成型方法,有压制法(例如,制作水杯、烟灰缸等)、压延法(例如,制作压花玻璃等)、浇铸法(例如,制作光学玻璃、熔铸耐火材料、铸石等) 、吹制法(例如,制作瓶罐等空心玻璃)、拉制法(例如,制作窗用玻璃、玻璃管、玻璃纤维等)、离心法(例如,制作玻璃棉等)、喷吹法(例如,制作…

一个友好、强大、开源的GraphRAG UI

GraphRAG-UI&#xff1a;是一个用户友好的界面&#xff0c;用于GraphRAG&#xff0c;这是一个强大的工具&#xff0c;使用检索增强生成&#xff08;RAG&#xff09;方法来索引和查询大量文本数据。这个项目支持最新版本的 graphrag-0.3.3&#xff0c;旨在为 GraphRAG 提供方便的…

2024双十一买什么?双11好物清单来啦,速速码住这篇!

随着双十一的脚步越来越近&#xff0c;空气中似乎都弥漫着购物的兴奋气息。这个一年一度的购物狂欢节&#xff0c;就像是一场盛大的宝藏探寻之旅&#xff0c;无数的商品琳琅满目&#xff0c;令人眼花缭乱。在这个信息爆炸的时代&#xff0c;我们面临着海量的商品选择&#xff0…

挑战用文心快码挽救表弟的影楼!

&#x1f381;&#x1f449;点击进入文心快码 Baidu Comate 官网&#xff0c;体验智能编码之旅&#xff0c;还有超多福利&#xff01;&#x1f381; 最近老家开影楼的表弟找到我&#xff0c;说现在影楼生意也不好做了&#xff0c;经济形势不好&#xff0c;结婚的人也越来越少了…

Rope – 基于深度学习模型开源的AI换脸技术

Rope是什么 Rope是一款开源的AI换脸工具&#xff0c;基于insightface的inswapper_128模型构建&#xff0c;提供一个用户友好的图形界面。用户通过上传图片或视频&#xff0c;在几秒钟内完成换脸操作&#xff0c;效果逼真。Rope支持多种超分辨率算法&#xff0c;支持用户调整面…

如何在繁忙工作中保持领先?2024年好用的4款视频转文字服务

现在信息量爆炸&#xff0c;要在一堆视频里快速找到要点&#xff0c;那真是太关键了。尤其是那些天天得整理会议记录、把访谈内容变成文字&#xff0c;或者准备教学材料的朋友&#xff0c;有个好用的视频转文字工具&#xff0c;简直是救星。今儿个&#xff0c;我就来聊聊2024年…

从零开始搭建一个node.js后端服务项目

一、下载node.js及配置环境 网上很多安装教程&#xff0c;此处就不再赘述了 版本信息 C:\Users\XXX>node -v v20.15.0C:\Users\XXX>npm -v 10.7.0 二、搭建node.js项目及安装express框架 在任意位置创建一个项目文件夹&#xff0c;此处项目文件夹名为test&#xff0…

2024年双十一有什么值得买?双十一推荐好物清单分享!

​是不是很多朋友跟我一样&#xff0c;已经为双11做好了准备&#xff0c;打算开启买买买的节奏&#xff01;作为一名家居兼数码博主&#xff0c;每年双11的时候都会疯狂囤很多物品&#xff0c;所以今天就跟大家来分享一下&#xff0c;我的双11购物清单&#xff0c;也给大家参考…

nginx报“/app/nginx/client_body_temp/0000000003“ failed (13: Permission denied)

导入Excel多条数据报如下异常 nginx报"/app/nginx/client_body_temp/0000000003" failed (13: Permission denied) 现象描述&#xff1a; 1&#xff0c;导入Excel一条不报错 2&#xff0c;导入多条报服务器错误 3&#xff0c;测试环境是好的&#xff0c;生产环境导…

HyperWorks基于 Shrink Warp Mesh 的零部件网格剖分

Step01&#xff1a;读入模型 Exercise_4b.hm。 Step02&#xff1a;在名为 loose_gap 的 component 中建立 Loose Shrink Warp Mesh。 (1) 点击 Shaded Geometry 及 Surface Edges&#xff0c;将模型切换至渲染模式显示。 (2) 查看模型&#xff0c;注意模型中间隙&#xff08…

出差不再手忙脚乱!安利这4款远程控制软件,2024年工作尽在掌握

经常到处跑的人肯定遇到过这种情况&#xff1a;在外面突然有个急活儿要干&#xff0c;但是手里没电脑&#xff0c;或者得用到办公室的文件。这时候&#xff0c;真是急得团团转。不过别担心&#xff0c;今天我给你介绍三款特别好用的远程控制软件&#xff08;如向日葵远程控制软…

梯度下降算法与十分类

一、梯度下降算法 ​ &#xff1a;目标值和预测之间的平方差。 ​ &#xff1a;每个目标值和预测之间平方差的和 ​ &#xff1a;总的平均方差 1、定义 梯度下降&#xff08;Gradient Descent&#xff09;是一种用于最小化损失函数的优化算法。它通过不断更新模型参数&…