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

CSDN第17周周赛题解

CSDN第17周周赛题解

1、题目名称:判断胜负

已知两个字符串A,B。 连续进行读入n次。 每次读入的字符串都为A|B。 输出读入次数最多的字符串。

#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(){
int t;cin>>t;
map<string,int>mp;
while(t--){
string s;cin>>s;
mp[s]++;
}
string ans;
int mx=0,cnt=0;
for(auto [x,y]:mp){
if(y>mx){
mx=y;
ans=x;
cnt=1;
}
else if(y==mx){
cnt++;
}
}
if(cnt!=1) puts("dogfall");
else cout<<ans;
return 0;
}

2、题目名称:买铅笔

P老师需要去商店买n支铅笔作为小朋友们参加编程比赛的礼物。她发现商店一共有 3 种包装的铅笔,不同包装内的铅笔数 量有可能不同,价格也有可能不同。为了公平起 见,P老师决定只买同一种包装的铅笔。 商店不允许将铅笔的包装拆开, 因此P老师可能需要购买超过 n 支铅笔才够给小朋 友们发礼物。 现在P老师想知道,在商店每种包装的数量都足够的情况 下,要买够至少 n 支铅笔最少需要花费多少钱。

#include <bits/stdc++.h>
using namespace std;
int n,x,y,s,minx=0x7fffffff;
int main()
{
scanf("%d",&n); //读入n
for (int i=1;i<=3;i++)
{
scanf("%d%d",&x,&y);
s=(n/x+(n%x!=0))*y; //当n不能整除x时,需要多买一包,此时布尔表达式的值为1,就是加上一包,用包数乘以
价格得到这种包装的价格
if (s<minx) minx=s; //如果s比min小,就更新min
}
printf("%d\n",minx);
return 0;
}

3、题目名称:拯救爱情

小艺酱走到一个花之占卜店中。 店员小Q看到小艺酱可怜的样子,允许小艺酱免费占卜一次。 花瓣占卜: 1. 一瓣“在一 起”,一瓣“不在一起”;开始的花瓣表示“在一起”。 2. 直到最后一个花瓣落地游戏结束。 3. 可以选择多朵花,选择撕一 朵花就必须撕完。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e5+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 a[N];
int main(){
int n;
cin>>n;
ll s = 0;
rep(i,1,n){
cin>>a[i];
s+=a[i];
}
sort(a+1,a+n+1);
if(s%2){
cout<<s;
return 0;
}
else {
for(int i=1;i<=n;i++){
if(a[i]&1){
s-=a[i];
break;
}
}
if(s%2==0){
assert(1<0);
cout<<0<<'\n';
return 0;
}
cout<<s;
}
return 0;
}

4、题目名称:拯救公主

在Flower Kingdom里,住着一位美丽的公主Ana,有一天Ana得了一种怪病,神医告知国王,在遥远的幽谷中有一种药 能治愈Ana, 但是神医只有一份不完整的地图,地图的描述如下: 该地图的共有3行,第一行有m列,m为奇数,第二行有m+1列,第三行有m+2列; 每一行用一个字符串表示,只有【两种字符】;‘.'表示草地,可以从它上面通过,‘’表示岩石,每一行最多一个‘’; 入口 在左上角,由于在对角线方向上,因此即使对角线两边都有岩石,但是缝隙较大,人可以通过,故人可以向八个方向行 走; 真实地图是由该地图的【每一行无限循环】得到的,这种神奇的药草就生长在第x行第y列的草地上,药草可能会在岩石上; 国王决定派遣勇敢的骑士David前去寻找拯救公主的解药; 现在聪明的你是否知道David能否找到该药?

#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 col[4];
int pos[4];
char a[4][N];
int main(){
int t;cin>>t;
while(t--){
int m;cin>>m;
int x,y;cin>>x>>y;
col[1] = m;
col[2]=m+1;
col[3]=m+2;
1.out 通过
2.out 通过
运行时间:
占用内存:18.539k
运行时间:
占用内存:18.543k
mst(pos,0);
rep(i,1,3){
scanf("%s",a[i]+1);
for(int j=1;j<=col[i];j++){
if(a[i][j]=='*'){
pos[i]=j;
break;
}
}
}
int cnt =0;
for(int i=1;i<=3;i++){
if(pos[i]) cnt++;
}
if(cnt<3) cout<<'YES'<<'\n';
else {
int mx = 0;
int cc = 0;
for(int i=1;i<=3;i++){
if(mx<col[i]){
mx = col[i];
cc = i;
}
}
int ok =1;
// printf("%d %d %d\n",pos[1],pos[2],pos[3]);
for(int i=pos[cc];i<=2e6;i+=mx){
if(i>y) break;
// printf("i=%d\n",i);
// printf("%d %d %d\n",(i-pos[1])%m==0,((i-pos[2]%(m+1)==0)),((i-pos[3])%(m+2)==0));
if((i-pos[1])%m==0 && ((i-pos[2])%(m+1)==0) && ((i-pos[3])%(m+2)==0) ){
ok = 0;
break;
}
}
y%=col[x];
if(y>1e6) ok = 0;
if(y==0) y+=col[x];
if(a[x][y]=='*'){
ok = 0;
}
if(ok) cout<<"YES"<<'\n';
else cout<<"NO"<<'\n';
}
}
return 0;
}

相关文章:

  • Biotin-PEG-AC,Biotin-PEG-Acrylate,生物素PEG丙烯酸酯线性杂双功能PEG试剂
  • Centos7安装配置Minio
  • 【程序人生】我填写《2022年国内软件质量调查问卷》的感想
  • 基于C++实现对UNet图像分割的部署
  • 2022年全国职业院校技能大赛中职组网络安全竞赛试题B模块 —wirehark数据分析与取证results.pcap(解析教程)
  • 机器学习100天(十七):017 逻辑回归梯度下降
  • 继承、多态、组合(Java系列5)
  • react笔记_10react路由
  • 33页企业内容管理与应用建设整体解决方案
  • JavaFX爱好者看过来,这款工具值得拥有
  • 三角函数公式
  • 面向工业园区的5G垂直组网类服务探讨
  • URLLC关键技术研究与空口时延分析
  • YOLOv5s.yaml文件解读
  • 数据管理篇之数据质量
  • 5G无线技术基础自学系列 | 5G接入类KPI
  • 彻底卸载2345王牌输入法的方法
  • Python解题 - CSDN周赛第17期 - 拯救公主
  • ImportError: DLL load failed while importing etree: 找不到指定的模块。
  • 太神了!开源大佬的SpringBoot+微服务架构笔记,一般人真肝不出来