CSDN竞赛第28期题解

CSDN竞赛第28期题解

1、题目名称:小Q的鲜榨柠檬汁

团建活动是大家所想要的。 小Q给大家准备了鲜橙汁。 现在有n个朋友买回了k瓶饮料,每瓶有l毫升的饮料,同时还买回
了c个柠檬, 每个柠檬可以切成d片,p克盐。 已知每个朋友需要nl毫升的饮料,一片柠檬,以及np克盐。 小Q想知道每
个朋友最少可以喝多少杯饮料。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = {
    
    402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define VI vector<int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n){
    
    
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[n]);
}
template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y){
    
    
if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){
    
    
if(x>y) x=y;
}
int main(){
    
    
ll n,k,l,c,d,p,nl,np;cin>>n>>k>>l>>c>>d>>p>>nl>>np;
ll asn = min({
    
    c*d/n,p/np/n,k*l/nl/n});
cout<<asn;
return 0;
}

2、题目名称:三而竭

一鼓作气再而衰三而竭。 小艺总是喜欢把任务分开做。 小艺接到一个任务,任务的总任务量是n。 第一天小艺能完成x份
任务。 第二天能完成x/k。 。。。 第t天能完成x/(k^(t-1))。 小艺想知道自己第一天至少完成多少才能完成最后的任务。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = {
    
    402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define VI vector<int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n){
    
    
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[n]);
}
template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y){
    
    
if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){
    
    
if(x>y) x=y;
}
ll n,k;
bool ck(ll x){
    
    
ll s = 0;
for(int i=1;i<=1e5;i++){
    
    
s+=x;
x/=k;
if(s>=n) return true;
}
return false;
}
int main(){
    
    
cin>>n>>k;
ll l=1,r=n,ans=0;
while(l<=r){
    
    
ll m =l+r>>1;
if(ck(m)) ans=m,r=m-1;
else l=m+1;
}
cout<<ans;
return 0;
}

3、题目名称:隧道逃生

小海豚喜欢打游戏,现在它在操纵游戏人物小C逃脱废弃的隧道,逃生装置在小C的前方 X 米远的位置。但是游戏机只有
两个按钮:前进和后退,按前进,小C会前进 m 米,按后退,小C会后退 n 米。 小海豚必须设法把小C送到逃生装置上,
方能逃离隧道,请你帮帮小海豚,告诉它至少要操作多少次,才能通关。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = {
    
    402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define VI vector<int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n){
    
    
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[n]);
}
template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y){
    
    
if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){
    
    
if(x>y) x=y;
}
unordered_map<int,int>mp;
ll x,m,n;
void dfs(int p,int v){
    
    
if(p<0) return;
if(p>x+10*n) return;
if(mp.count(p)&&mp[p]<=v) return;
mp[p] = v;
dfs(p+m,v+1);
dfs(p-n,v+1);
}
int main(){
    
    
cin>>x>>m>>n;
dfs(0,0);
cout<<mp[x];
return 0;
}

4、题目名称:收件邮箱

已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用
的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = {
    
    402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define db double
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define all(a) a.begin(),a.end()
#define VI vector<int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n){
    
    
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[n]);
}
template <typename T> //x=max(x,y) x=min(x,y)
void cmx(T &x,T y){
    
    
if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){
    
    
if(x>y) x=y;
}
int n ;
string s;
bool ck(int i){
    
    
if(i+2<n && s[i]=='d'&&s[i+1]=='o'&&s[i+2]=='t') return true;
return false;
}
bool ck2(int i){
    
    
if(i+1<n && s[i]=='a'&&s[i+1]=='t') return true;
return false;
}
int main(){
    
    
cin>>s;
n =s.size();
string t;
int ok = 0;
for(int i=0;i<n;i++){
    
    
if(i==0||i==n-1){
    
    
t+=s[i];
}
else if(ck(i)&&i!=n-3){
    
    
t+=".";
i+=2;
}
else if(!ok && ck2(i) && i!=n-2){
    
    
t+="@";
i++;
ok = 1;
}
else t+=s[i];
}
cout<<t;
return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45750972/article/details/129057047