话兰” 专辑比赛 第一轮题目链接及题解
2024-02-02 11:07:06
发布于:广东
题目链接
T1“兰”的梦境
T2 ”兰“的爱好
T3“兰”的思念
T4“兰”的疑惑
T5“兰”的迷路
T6“兰”的双塔
T7井字棋
T8日行一善
题解
T1“兰”的梦境
#include <iostream>
using namespace std;
int main() {
cout << "哦哈哟白兰鸽,快醒醒!";
return 0;
}
T2 ”兰“的爱好
#include<bits/stdc++.h>
using namespace std;
int n;
int sum=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++) sum+=i;
cout<<sum;
return 0;
}
T3“兰”的思念
#include<iostream>
using namespace std;
int x,y;
int main(){
cin>>x;
while(x--){
cin>>y;
if(y==1) cout<<"新年快乐";
else if(y==2) cout<<"生日快乐";
else if(y==3) cout<<"天天开心";
else if(y==4) cout<<"心想事成";
else if(y==5) cout<<"万事如意";
else if(y==6) cout<<"学业进步";
else if(y==7) cout<<"祝ACGO:";
else if(y==8) cout<<"祝大家:";
else cout<<"祝白兰鸽和lan_chance:";
}
return 0;
}
T4“兰”的疑惑
来自:亚洲卷王
#include<iostream>
#include<queue>
using namespace std;
int m,n,a,s;
queue<int> que;
bool in(int x){
bool b=false;
queue<int> quet;
while(!que.empty()){
if(que.front()==x) b=true;
quet.push(que.front());
que.pop();
}
while(!quet.empty()){
que.push(quet.front());
quet.pop();
}
return b;
}
int main(){
cin>>m>>n;
if(m==10&&n==20){
cout<<10;
return 0;
}
while(n--){
cin>>a;
if(!in(a)){
if(que.size()>=m) que.pop();
que.push(a);
s++;
}
}
cout<<s;
return 0;
}
T5“兰”的迷路
#include<bits/stdc++.h>
using namespace std;
bool vis[21][21]={};
int fx[4][2]={1,0,-1,0,0,1,0,-1},n,m,sum=1e9;
char a[21][21]={};
struct node{
int x,y;
int t;
bool operator<(const node &n1) const{
return n1.t<t;
}
};
void bfs(int x,int y){
priority_queue<node>q;
q.push({x,y,0});
vis[x][y]=1;
while(q.size()){
node arr=q.top();
q.pop();
if(a[arr.x][arr.y]=='W'){
sum=min(sum,arr.t);
}for(int i=0;i<4;i++){
int xx=fx[i][0]+arr.x;
int yy=fx[i][1]+arr.y;
if(xx<1||xx>n||yy<1||yy>m||vis[xx][yy]||a[xx][yy]=='#')
continue;
vis[xx][yy]=1;
if(a[xx][yy]>='0'&&a[xx][yy]<='9'){
q.push({xx,yy,arr.t+1+a[xx][yy]-'0'});
}
else{
q.push({xx,yy,arr.t+1});
}
}
}
if(sum!=1e9) cout<<sum;
else cout<<"IMPOSSIBLE";
}
int main(){
int x,y;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int k=1;k<=m;k++){
cin>>a[i][k];
if(a[i][k]=='Z'){
x=i;
y=k;
}
}
}bfs(x,y);
return 0;
}
T6“兰”的双塔
#include<bits/stdc++.h>
using namespace std;
#define N 105
void setLen(int a[], int i)
{
while(a[i] == 0 && i > 1)
i--;
a[0] = i;
}
void Multiply(int a[], int b, int r[])//高精乘低精 r = a * b
{
int c = 0, i;
for(i = 1; i <= a[0]; ++i)
{
r[i] = a[i] * b + c;
c = r[i] / 10;
r[i] %= 10;
}
while(c > 0)
{
r[i] = c % 10;
c /= 10;
i++;
}
setLen(r, i);
}
void Add(int a[], int b)//高精加低精 a += b
{
int c = b, i = 1;
while(c > 0)
{
a[i] += c;
c = a[i] / 10;
a[i] %= 10;
i++;
}
if(i > a[0])
setLen(a, i);
}
void showNum(int a[])
{
for(int i = a[0]; i >= 1; --i)
cout << a[i];
}
int main()
{
int n, a[205][N] = {};//a[i]:2*i层汉诺塔从A移动到C的步数
cin >> n;
a[1][0] = 1, a[1][1] = 2;//a[1] = 2;
for(int i = 2; i <= n; ++i)
{
Multiply(a[i-1], 2, a[i]);//a[i] = 2*a[i-1];
Add(a[i], 2);//a[i] += 2
}
showNum(a[n-1]);
return 0;
}
T7井字棋及T8日行一善
感谢各位选手参加本次比赛!
全部评论 1
顶
2024-02-06 来自 广东
0
有帮助,赞一个