Educational Codeforces Round 158 (Rated for Div. 2)
A. Line Trip
题意是:有n个加油点,人要来回两趟,问你最少要多少油?
using namespace std;
int a[100];
void solve(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
int ans=a[1];
for(int i=2;i<=n;i++){
ans=max(ans,a[i]-a[i-1]);
}
ans=max(ans,2*(m-a[n]));
cout<<ans<<"\n";
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t=1;
cin>>t;
for(int i=1;i<=t;i++)solve();
return 0;
}
B. Chip and Ribbon
题意是:从点一出发,按顺序对每个位置+1,或者你可以跳跃,目的是让每个位置的值等于给的值,问你最少要跳跃多少次?
#define int long long
using namespace std;
const int N=2e5+10;
int a[N];
void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int ans=0;
for(int i=1;i<=n;i++){
if(a[i]>a[i-1]){
ans+=a[i]-a[i-1];
}
}
cout<<ans-1<<"\n";
}
signed main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t=1;
cin>>t;
for(int i=1;i<=t;i++)solve();
return 0;
}
C. Add, Divide and Floor
题意是:每次操作是选一个x,然后对每个数组中的每个数加上x然后除以2,问你最少要进行多少次操作,时数组中的数相等,如果操作数小于等于数组长度,打印出每次操作的x
思路:猜想是,要是数组的所有数相等,那么是最大的和最小的相等,中间的一定相等,而且加上的x的大小其实并不影响操作数的大小,所以这里x只取1,0。
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int a[N];
void solve(){
int n;
cin>>n;
int mx=0;
int mi=1e9;
for(int i=1;i<=n;i++){
cin>>a[i];
mx=max(mx,a[i]);
mi=min(mi,a[i]);
}
vector<int>ans;
while(mi!=mx){
if(mi%2==mx%2){
ans.push_back(0);
}else if(mx%2==0){
ans.push_back(1);
mx++;
mi++;
}else{
ans.push_back(0);
}
mi/=2;
mx/=2;
}
cout<<ans.size()<<"\n";
if(ans.size()==0)return;
if(ans.size()<=n){
for(auto c:ans){
cout<<c<<" ";
}
}
cout<<"\n";
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t=1;
cin>>t;
for(int i=1;i<=t;i++)solve();
return 0;
}
本文作者:yufan1102
本文链接:https://www.cnblogs.com/yufan1102/p/17855595.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现