题解(自记录) | 2025西安交通大学编程大赛

A-Card Master

#include<bits/stdc++.h>

#define ll long long

using namespace std;

int main(){

int a,b,c;cin >> a >> b >> c;

if(a==b && b==c)cout <<100+a+b+c;

else cout << a+b+c;

}

题解思路:根据题意模拟算出三张牌的总和,并检查三张牌是否两两相等,若相等则额外增加100。

B-Nobody Can Log In

#include<bits/stdc++.h>

#define ll long long

using namespace std;

int main(){

int n;cin >> n;

while(n--){

string a,b;cin >> a;

for(int j=0;j<a.size();j++){

if(a[j]=='i'||a[j]=='1'||a[j]=='l'||a[j]=='I')continue;

else b.push_back(a[j]);

}

cout << b ;

if(n!=0)cout << endl;

}

}

题解思路:由题意模拟去掉字符串中含有'i','1','I','l'的字符,然后将处理过后的字符串输出即可

C-Quantum Mechanics

#include<bits/stdc++.h>

#define ll long long

using namespace std;

int main(){

int n;cin >> n;vector<double>ans(1ll<<9);

for(int i=0;i<(1ll<<n);i++){

double a,b;

cin >> a >> b;

a=a*a+b*b;

int cnt=0,k=i;

while(k){

if(k&1){ans[cnt]+=a;}

k >>= 1;

cnt++;

}

}

for(int i=0;i<n;i++){

cout << 1-ans[i]<<" "<<ans[i]<<endl;

}

}

题解思路:由题意,存在2n组数据,所以需要读取2n*2个数据,ans记录每位1的概率和,通过二进制算法算出每个数字代表每位1的概率之和,算完后通过1-P可得每位0的概率和,并输出

D-Symmetrical Isolation: The Battle of Black and White

#include<bits/stdc++.h>

#define ll long long

using namespace std;

int main(){

string a;

int n,m;cin >> n >> m;int flag1=1,flag2=1;

vector<vector<int>>Map(n+5,vector<int>(m+5,0)),Map1(n+5,vector<int>(m+5,0)),Map2(n+5,vector<int>(m+5,0));

for(int i=1;i<=n;i++){

cin >> a;

a='W'+a;

for(int j=1;j<=m;j++){

if(a[j]=='B')Map[i][j]=1;

else Map[i][j]=0;

}

}

for(int i=1;i<=n;i++){

for(int j=1;j<=m;j++){

{Map1[i][j]=Map[i][j];Map2[i][j]=Map[i][j];}

}

}

for(int i=1;i<=n;i++){

for(int j=1;j<=m;j++){

if(Map[i][j]==1){Map1[n-i+1][j]=1;Map2[i][m-j+1]=1;}

}

}

for(int i=1;i<=n;i++){

for(int j=1;j<=m;j++){

if((Map1[i][j]==1&&Map1[i][j-1]==1)||(Map1[i][j]==1&&Map1[i-1][j]==1)){flag1=0;}

if((Map2[i][j]==1&&Map2[i][j-1]==1)||(Map2[i][j]==1&&Map2[i-1][j]==1)){flag2=0;}

}

}

if(flag1==0&&flag2==0)cout << "No"<<endl;

else cout <<"Yes"<<endl;

}

题解思路:用二维数组记录每个位置的黑白,并分别开两个二维数组记录黑块竖直轴对称和平行轴对称,遍历这两个二维数组,若发生两个黑块相邻的情况则分别令flag1和flag2等于0,若两个都为零则无法满足题意输出No,反之Yes

E-Pythagorean Cup

#include<bits/stdc++.h>

#define ll long long

using namespace std;

int main(){

string a;cin >> a;ll sum=0;

reverse(a.begin(),a.end());

for(int i=0;i<a.size();i++){

if(a[i]=='H'){sum+=i+1;}

}

if(sum%2==0)cout << "Bob"<<endl;

else cout << "Alice"<<endl;

}

题解思路:由题意,当杯子内液体满时自动流完,所以每个杯子的状态仅有半满和空,Alice先手,先将最右端的杯子标记为1,最左端的标记为n,记录每个半满杯子的下标,并将其全部相加,若为奇数则Alice最后倒杯子的液体,获胜,反之则Bob获胜

F-Beat Verdict: Precision Strike

G-Primal Core Optimization: Attribute Balance

H-9-Nine

I-Ori

J-Bastion

K-Seele Vollerei

L-Gros-Phi

M-History of Terra

N-Kessoku Band

O-Discrete Logarithm

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务