L1-1 编程解决一切 5分
#include<bits/stdc++.h>
#define int long long
using namespace std;
bool tin = 0 ;
void solve()
{
cout<<"Problem? The Solution: Programming.";
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
if(tin)
cin>>T;
while(T--)
{
solve();
}
return 0;
}
L1-2 再进去几个人 5分
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int a,b;
cin>>a>>b;
cout<<b-a;
return 0;
}
L1-3 帮助色盲 10分
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int a,b;
cin>>a>>b;
if(b||a==2)
{
cout<<"-\n";
}
else if(a==0)
{
cout<<"biii\n";
}
else if(a==1)
{
cout<<"dudu\n";
}
if(a==0||a==2)
cout<<"stop";
else if(a==1)
{
cout<<"move";
}
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
//cin>>T;
while(T--)
{
solve();
}
return 0;
}
L1-4 四项全能 10分
#include<bits/stdc++.h>
using namespace std;
#define int long long
bool tin =0;
void solve()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int n,m;
cin>>n>>m;
int sum=0;
for(int i=0;i<m;i++)
{
int x;
cin>>x;
sum+=x;
}
int ma=n*(m-1);
cout<<max(0LL,sum-ma);
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
if(tin)
cin>>T;
while(T--)
{
solve();
}
return 0;
}
L1-5 别再来这么多猫娘了!15分
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int n;
cin>>n;
vector <string > s(n);
for(int i=0;i<n;i++)
cin>>s[i];
int k;
cin>>k;
cin.ignore();
string ss;
getline(cin,ss);
int ans=0;
string st="遮沙避风了";//是啥都行,与原字符区分开就行,最好使用组合符号如x_x;
int nn=st.size();
for(int i=0;i<n;i++)
{
while(ss.find(s[i])!=-1)
{
int b=ss.find(s[i]);
ss.erase(b,s[i].size());
ss.insert(b,st);
ans++;
}
}
while(ss.find(st)!=-1)
{
int b=ss.find(st);
ss.erase(b,nn);
ss.insert(b,"<censored>");
}
if(ans>=k)
{
cout<<ans<<'\n';
ss="He Xie Ni Quan Jia!";
}
cout<<ss;
}
signed main()
{
int T;
T=1;
//cin>>T;
while(T--)
{
solve();
}
return 0;
}
L1-6 兰州牛肉面 15分
#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve()
{
map<int,double> pri;
map<int,int> num;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
double a;
cin>>a;
pri[i]=a;
}
while(1)
{
int a,b;
cin>>a>>b;
num[a]+=b;
if(!a&&!b)
break;
}
double ans=0;
for(int i=1;i<=n;i++)
{
cout<<num[i]<<'\n';
ans+=pri[i]*1.0*num[i];
}
cout<<fixed<<setprecision(2)<<ans;
}
signed main()
{
int T;
T=1;
//cin>>T;
while(T--)
{
solve();
}
return 0;
}
L1-7 整数的持续性 20分
#include<bits/stdc++.h>
#define int long long
using namespace std;
bool tin = 0;
int ans[100005];
void solve()
{
int a,b;
cin>>a>>b;
int n=b-a;
for(int i=a;i<=b;i++)
{
int t=i;
int num=0;
while(t>=10)
{
num++;
int ne=1;
while(t)
{
ne*=t%10;
t/=10;
}
t=ne;
}
ans[i-a]=num;
}
int m=0;
for(int i=0;i<=n;i++)
{
m=max(m,ans[i]);
}
int j=0;
cout<<m<<'\n';
for(int i=0;i<=n;i++)
{
if(ans[i]==m)
{
if(j)
cout<<' ';
else
j=1;
cout<<i+a;
}
}
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
if(tin)
cin>>T;
while(T--)
{
solve();
}
return 0;
}
L1-8 九宫格 20分
#include<bits/stdc++.h>
using namespace std;
#define int long long
bool tin =1;
int n=9;
bool hang(vector <vector<int>>a)
{
for(int i=0;i<n;i++)
{
set<int> st;
for(int j=0;j<n;j++)
{
if(a[i][j]>=1&&a[i][j]<=9)
{
if(st.count(a[i][j]))
return 0;
st.insert(a[i][j]);
}
else
return 0;
}
}
return 1;
}
bool lie(vector <vector<int>>a)
{
for(int i=0;i<n;i++)
{
set<int> st;
for(int j=0;j<n;j++)
{
if(a[j][i]>=1&&a[j][i]<=9)
{
if(st.count(a[j][i]))
return 0;
st.insert(a[j][i]);
}
else
return 0;
}
}
return 1;
}
bool gong(vector <vector<int>>a)
{
for(int i=0;i<n;i+=3)
{
for(int j=0;j<n;j+=3)
{
set<int> st;
for(int k=i;k<i+3;k++)
{
for(int l=j;l<j+3;l++)
{
if(a[k][l]>=1&&a[k][l]<=9)
{
if(st.count(a[k][l]))
return 0;
st.insert(a[k][l]);
}
else
return 0;
}
}
}
}
return 1;
}
void solve()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
vector <vector <int> > a(n,vector <int>(n));
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cin>>a[i][j];
}
if(hang(a)&&lie(a)&&gong(a))
cout<<'1';
else
cout<<'0';
cout<<'\n';
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
if(tin)
cin>>T;
while(T--)
{
solve();
}
return 0;
}
L2-1 鱼与熊掌 25分
#include<bits/stdc++.h>
#define int long long
using namespace std;
bool tin = 0;
vector <int> h[100005];
void solve()
{
int n,m,k,x,y;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>k;
while(k--)
{
cin>>x;
h[x].push_back(i);
}
}
cin>>k;
while(k--)
{
int ans=0;
cin>>x>>y;
map<int,bool> ma;
for(auto x:h[x])
ma[x]=1;
for(auto x:h[y])
ans+=ma[x];
cout<<ans<<'\n';
}
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
if(tin)
cin>>T;
while(T--)
{
solve();
}
return 0;
}
L2-2 懂蛇语 25分
#include<bits/stdc++.h>
#define int long long
using namespace std;
bool tin = 0;
string ans[100005];
void solve()
{
unordered_map<string,vector <string> > ma;
int n;
cin>>n;
string s;
getline(cin,s);
for(int i=0;i<n;i++)
{
getline(cin,s);
string st="";
int t=s.size();
for(int i=0;i<t;i++)
{
if(i==0&&s[i]!=' '||s[i]!=' '&&s[i-1]==' ')
st+=s[i];
}
ma[st].push_back(s);
}
int m;
cin>>m;
getline(cin,s);
for(int i=0;i<m;i++)
{
getline(cin,s);
string st="";
int t=s.size();
for(int i=0;i<t;i++)
{
if(i==0&&s[i]!=' '||s[i]!=' '&&s[i-1]==' ')
st+=s[i];
}
int ok=1;
int num=0;
for(auto x:ma[st])
ans[num++]=x;
sort(ans,ans+num);
if(num)
{
for(int i=0;i<num;i++)
{
if(i)
cout<<"|";
cout<<ans[i];
}
}
else
cout<<s;
cout<<'\n';
}
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
if(tin)
cin>>T;
while(T--)
{
solve();
}
return 0;
}
L2-3 满树的遍历 25分
#include<bits/stdc++.h>
#define int long long
using namespace std;
bool tin = 0;
vector <int> h[100005];
int n,x;
int num=0;
int ans[100005];
void dfs(int t)
{
ans[num++]=t;
for(auto y:h[t])
dfs(y);
}
void solve()
{
cin>>n;
int g=0;
for(int i=1;i<=n;i++)
{
cin>>x;
if(x)
h[x].push_back(i);
else
g=i;
}
int k=h[g].size();
int ok=1;
//cout<<k<<'\n';
for(int i=1;i<=n;i++)
{
if(ok)
{
if(h[i].size())
{
if(h[i].size()!=k)
{
ok=0;
}
}
}
if(!ok)
{
if(h[i].size()>k)
k=h[i].size();
}
}
cout<<k<<' ';
if(ok)
cout<<"yes";
else
cout<<"no";
cout<<'\n';
dfs(g);
for(int i=0;i<num;i++)
{
if(i)
cout<<' ';
cout<<ans[i];
}
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
if(tin)
cin>>T;
while(T--)
{
solve();
}
return 0;
}
L2-4 吉利矩阵 25分
#include<bits/stdc++.h>
#define int long long
using namespace std;
bool tin = 0 ;
int l,n;
int ans=0;
int xx[5],yy[5];
void dfs(int num)
{
// cout<<num<<' ';
if(num==n*n)
{
ans++;
}
else
{
for(int i=0;i<=l;i++)
{
int x=num/n,y=num%n;
if(xx[x]+i>l||yy[y]+i>l)
break;
if(x==n-1)
i=l-yy[y];
if(y==n-1)
i=l-xx[x];
xx[x]+=i,yy[y]+=i;
dfs(num+1);
xx[x]-=i,yy[y]-=i;
}
}
}
void solve()
{
cin>>l>>n;
dfs(0);
cout<<ans;
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
if(tin)
cin>>T;
while(T--)
{
solve();
}
return 0;
}
L3-1 夺宝大赛 30分
L3-037 夺宝大赛 - 团体程序设计天梯赛-练习集 (pintia.cn)https://pintia.cn/problem-sets/994805046380707840/exam/problems/type/7?problemSetProblemId=1781658570803388428&page=1其实是一道简单题,多起点单终点直接看成单起点多终点,bfs一便记录步数然后处理数据即可
#include<bits/stdc++.h>
#define int long long
using namespace std;
bool tin = 0 ;
int ma[125][125];
pair <int,int> bb[120];
int n,m;
int nu[120][120];
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
void bfs(int a,int b)
{
queue <pair <int,int> > q;
q.push({a,b});
nu[a][b]=1;
while(!q.empty())
{
int x=q.front().first,y=q.front().second;
q.pop();
for(int i=0;i<4;i++)
{
int xx=x+dx[i],yy=y+dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&nu[xx][yy]==0&&ma[xx][yy]!=0)
{
q.push({xx,yy});
nu[xx][yy]=nu[x][y]+1;
}
}
}
}
void solve()
{
cin>>n>>m;
int ax=0,bx=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>ma[i][j];
if(ma[i][j]==2)
ax=i,bx=j;
}
}
bfs(ax,bx);
int k;
cin>>k;
int a,b;
map<int,int> mp;
mp[INT_MAX]++;
vector <pair <int,int> > ans(k+1);
for(int i=1;i<=k;i++)
{
cin>>b>>a;
ans[i].first=nu[a][b];
if(ans[i].first==0)
ans[i].first=INT_MAX;
mp[ans[i].first]++;
ans[i].second=i;
}
sort(ans.begin()+1,ans.end());
int ok=1;
for(int i=1;i<=k;i++)
{
if(mp[ans[i].first]==1)
{
cout<<ans[i].second<<' '<<ans[i].first-1;
ok=0;
break;
}
}
if(ok)
cout<<"No winner.";
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int T=1;
if(tin)
cin>>T;
while(T--)
{
solve();
}
return 0;
}