UOJ Logo Luck_ZY的博客

博客

临汾市信息素养测试(中学组)题解

2021-12-05 09:42:09 By Luck_ZY

中学组前三题很水,有点思路就可以过了

乒乓球题解

#include <iostream>
#include <cstring>
using namespace std;
int win[62503]; 
int w,l;
int main()
{
    char s;
    for(int i=1;cin>>s&&s!='E';i++)//循环读入,当读到字符E结束 
    {
        if(s=='W')win[i]=1; 
        else win[i]=2; 
    }
    //----------------11分制 ----------------
    for(int i=1;1;i++)
    {
        if(win[i]==1)w++;//胜场+1 
        if(win[i]==2)l++;//负场+1 
        if(win[i]==0)//读到0则记录结束,输出记录结束前的分数。 
        {
            cout<<w<<":"<<l<<endl<<endl;
            break;
        }
        if(w-l>=2||l-w>=2)
            if(w>=11||l>=11)//当双方比分相差大于2且一方分数大等于11输出 
            {
                cout<<w<<":"<<l<<endl;
                w=0;//比分清零 
                l=0;
            }
    }
    w=0;//清零,为21分制计算做准备 
    l=0;
    //----------------21分制 ----------------
    for(int i=1;1;i++)//一切同上,唯一区别就是判定从11变为21 
    {
        if(win[i]==1)w++;
        if(win[i]==2)l++;
        if(win[i]==0)
        {
            cout<<w<<":"<<l;
            break;
        }
        if(w-l>=2||l-w>=2)
            if(w>=21||l>=21)//11变为21 
            {
                cout<<w<<":"<<l<<endl;
                w=0;
                l=0;
            }
    }
    return 0;//华丽地结束  ㄟ(▔▽▔)ㄏ
} 

小A的糖果

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long sum=0//计数器,n,x;
    cin>>n>>x;//输入
    long long a[n+1];
    cin>>a[1];//处理第一个单独超限。
    if(a[1]>x)
        {
        sum+=a[1]-x;//增加吃的量
        a[1]=x;//a[i]>=x,要吃的最少,即是a[i]=x;
        }
    for(int i=2;i<=n;i++)
        {
        cin>>a[i];//输入
        if(a[i]+a[i-1]>x)//照例处理
            {
            sum+=a[i]+a[i-1]-x;
            a[i]=x-a[i-1];
            }
        }
    cout<<sum;//输出
    return 0;//养成好习惯
} 

素养测试 此题极淼,结构体是个摆设,想用就用吧

#include<iostream>
using namespace std;
int n;
double ok=0;//用来储存综合分数。这里一定要是浮点型!不然就会WA(我的血泪史啊)
struct xs{//结构体
    int xh,a1,a2;//xh是学号,a1是学业成绩,a2素质拓展成绩。
}a[1010];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].xh>>a[i].a1>>a[i].a2;
        ok=a[i].a1*0.7+a[i].a2*0.3;//计算并储存存综合分数
        if(ok>80&&a[i].a1+a[i].a2>140){//判断
            cout<<"Excellent"<<endl;
        }else{
            cout<<"Not excellent"<<endl;
        }
    }
    return 0;//拜拜!
}

Luck_ZY的机器人 //实际上就是滑雪 搜索的题,对于初中生来讲可能麻烦点???大佬除外

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int n,m,a[201][201],s[201][201],ans;
bool use[201][201];//这个就是所谓的不需要
int dfs(int x,int y){
    if(s[x][y])return s[x][y];//记忆化搜索
    s[x][y]=1;//题目中答案是有包含这个点的
    for(int i=0;i<4;i++)
    {  int xx=dx[i]+x;
       int yy=dy[i]+y;//四个方向
       if(xx>0&&yy>0&&xx<=n&&yy<=m&&a[x][y]>a[xx][yy]){
          dfs(xx,yy);
          s[x][y]=max(s[x][y],s[xx][yy]+1);
       }
    }
    return s[x][y];
}
int main()
{    
   scanf("%d%d",&n,&m);//同题目的R,C
   for(int i=1;i<=n;i++)
     for(int j=1;j<=m;j++)
       scanf("%d",&a[i][j]);
    for(int i=1;i<=n;i++)//找从每个出发的最长距离
      for(int j=1;j<=m;j++)
        ans=max(ans,dfs(i,j));//取最大值
    printf("%d",ans);
    return 0;
}

评论

NaCl
Luck_ZY yyds!
isansm
yyds
isansm
yyds

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。