2019年全国高校计算机能力挑战赛 C语言程序设计决赛

2019年全国高校计算机能力挑战赛 C语言程序设计决赛

毕竟这个比赛是第一次举办,能理解。。
希望未来再举办时,能够再完善一下题面表述、数据范围。

话说区域赛获奖名额有点少吧。舍友花60块想混个创新创业分也太难。。

水进了决赛圈,一共6题。
前4题,大概C语言课后习题的难度?
第5题,贪心排个序就好了吧
第6题,图论,拓扑排序,但我用暴力的,因为不知道范围呀,希望能骗点分。

第1题

#include<stdio.h>

const int maxn = 10050;
char s[maxn];
int cnt[5];

int main(){
    char c;
    int pos = 0;
    while((c = getchar()) != EOF){
        s[pos++] = c;
    }
    for(int i=0;i<pos;i++){
        if(s[i] == '+') cnt[1]++;
        else if(s[i] == '-') cnt[2]++;
        else if(s[i] == '*') cnt[3]++;
        else if(s[i] == '/') cnt[4]++;
    }
    printf("+ %d\n",cnt[1]);
    printf("- %d\n",cnt[2]);
    printf("* %d\n",cnt[3]);
    printf("/ %d\n",cnt[4]);
    return 0;
} 

第2题

#include<stdio.h>

const int maxn = 450;
int n;
int a[maxn][maxn];

int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            scanf("%d",&a[i][j]);
        }
    }
    int cnt = 0;
    for(int i=1;i<=n;i++){
        if(a[i][i] > 0)
            cnt++;
    }
    for(int i=1;i<=n;i++){
        int pos = n-i+1;
        if(pos == i) continue;
        else{
            if(a[i][pos] > 0)
                cnt++;
        }
    }
    printf("%d",cnt);
    return 0;
}
/*
4
1 2 3 4
5 6 7 8
9 0 0 12
1 0 0 -16
*/

第3题

#include<stdio.h>

typedef long long ll;
const int maxn = 1010;
int n;
ll a[maxn];
ll b[maxn];

int main(){
    scanf("%d",&n);
    bool flag = true;
    for(int i=1;i<=n;i++){
        scanf("%ld",&a[i]);
        int temp = a[i];
        int min_x = 9;
        while(temp){
            if(temp%10 < min_x) min_x = temp%10;
            temp /= 10;
        }
        ll new_num;
        if(a[i] == 0){
            new_num = a[i];
            b[i] = new_num;
            flag = false;
        }else{
            ll new_num = (a[i]/100*10+min_x)*10+min_x;
            b[i] = new_num;
            if(b[i] == a[i]) flag = false;
        }
    }
    if(flag == true){
        printf("Done");
        for(int i=1;i<=n;i++) printf(" %ld",b[i]);
    }else{
        printf("Error");
        for(int i=1;i<=n;i++) {
            if(b[i] == a[i]) printf(" %ld",b[i]);
        }
    }
    return 0;
}

/*
4
321 96 5 232
3
0 9 322
*/

第4题

#include<stdio.h>

const int maxn = 10010;
char s[maxn];
char ans[maxn];
int pos = 0;

void solve(int start,int ends){
    for(int i=start;i<ends;i++){
        for(int j=start+1;j<ends;j++){
            if((s[i] >= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')){
                if((s[j] >= 'A' && s[j] <= 'Z') || (s[j] >= 'a' && s[j] <= 'z')){
                    if(s[i] == (s[j] + 1) || s[i] == (s[j] - 1)){
                        ans[pos++] = ' ';
                        for(int j=start;j<ends;j++){
                            ans[pos++] = s[j];
                        }
                        return;
                    }
                }
            }
        }
    }
}

int main(){
//  freopen("out.txt","w",stdout);
    char c;
    int start = 0;
    int ends = 0;
    while((c = getchar()) != EOF){
        s[ends++] = c;
        if(c == '.'){ //处理最后一个
            solve(start,ends-1);
            break;
        }
        if(c == ' '){
            solve(start,ends-1);
            start = ends;
        }
    }
    if(pos == 0) printf("Accept!");
    else{
        for(int i=1;i<pos;i++) printf("%c",ans[i]);
    }
    return 0;
}

/*
There is nothing can stop us from hard working.
nothing stop working
hi st 

There is a cat in the box.

*/

第5题

#include<stdio.h>

const int maxn = 10010;
int n;
int a[maxn];
int b[maxn];

int qusort(int s[],int start,int end)
{
    int i,j;
    i=start;
    j = end;
    s[0]=s[start];
    while(i<j)
    {
        while(i<j&&s[0]<s[j])
        j--;
        if(i<j)
        {
            s[i]=s[j];
            i++;
        }
        while(i<j&&s[i]<=s[0])
            i++;
        if(i<j)
        {
            s[j]=s[i];
            j--;
        }
    }
    s[i]=s[0];
    if (start<i)
        qusort(s,start,j-1);
    if (i<end)
        qusort(s,j+1,end);
    return 0;
}

int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    for(int j=1;j<=n;j++){
        scanf("%d",&b[j]);
    }
    qusort(a,1,n);
    qusort(b,1,n);
    int pos = 1;
    int cnt = 0;
    for(int i=1;i<=n;i++){
        if(a[i] > b[pos]){
            cnt++;
            pos++;
        }
    }
    printf("%d",cnt);
    return 0;
}
/*
6
2 13 26 33 45 9
3 8 30 15 18 40
*/

第6题

dfs暴力找最长的拓扑路径

#include<stdio.h>

const int maxn = 400;
int g[maxn][maxn];
int n;
int a[maxn];
int ans = 0;
int in[maxn];
int out[maxn];
int c;

void dfs(int x,int cur){
    if(x == c){
        if((cur-a[c]) > ans) ans = cur-a[c];
        return;
    }
    for(int i=1;i<=n;i++){
        if(i == x) continue;
        if(i!=c && out[i] == 0) continue;
        if(g[x][i] == 1){
            dfs(i,cur+a[i]);
        }
    }
}

int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    int u,v;
    while(scanf("%d%d",&u,&v) && u!=-1 && v!=-1){
        if(g[u][v] == 0){
            g[u][v] = 1;
            in[v]++;
            out[u]++;
        }
    }
    scanf("%d",&c);
    if(in[c] == 0) printf("0");
    else{
        for(int i=1;i<=n;i++){
            if(i == c) continue;
            if(out[i] == 0) continue;
            dfs(i,a[i]);
        }
        printf("%d",ans);
    }
    return 0;
}

/*
4
8 12 16 10
1 2
2 3
4 2
1 3
-1 -1
3

3
8 12 16
1 2
1 3
-1 -1
3
*/

队友用拓扑排序做的

#include<iostream>
#include<stack>
#include<vector>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstring>
using namespace std;
typedef long long ll;
struct node{
    vector<int> zi;
    int day;
    int ind;
    int maxT;
    vector<int> last;
    int cost;
}sub[500];
vector<int> ans;
int n,c;
void toposort() {
    queue<int> q;
    for (int i = 1; i <=n; i++)
        if (sub[i].ind  == 0) q.push(i);
    while (!q.empty()) {
        int u = q.front();
        q.pop();
        ans.push_back(u);
        for(int i = 0;i<sub[u].last.size ();i++ ){
            int cur = sub[u].last[i];
            sub[u].maxT = max(sub[cur].cost,sub[u].maxT );
        }
        sub[u].cost = sub[u].day + sub[u].maxT ;
        sub[u].maxT = sub[u].cost ;
        for(int i = 0;i<sub[u].zi.size() ;i++ ){
            int cur = sub[u].zi[i];
            if(--sub[cur].ind == 0 ){
                q.push(cur);
            }
        }
    }
    return ;
}
int main(){
    cin>>n;
    for(int i = 1;i<=n;i++){
        int t;
        cin>>t;
        sub[i].day = t;
        sub[i].ind = 0;
        sub[i].maxT = 0;
        sub[i].cost = 0;
    }
    while(1){
        int a,b;cin>>a>>b;
        if(a == -1 && b == -1){
            break;
        }
        sub[a].zi.push_back(b);
        sub[b].last.push_back(a);
        sub[b].ind ++;
    }
    cin>>c;
    toposort();
    cout<<sub[c].cost - sub[c].day ;
    return 0;
}

原文地址:https://www.cnblogs.com/fisherss/p/11963644.html

时间: 2024-08-01 10:35:19

2019年全国高校计算机能力挑战赛 C语言程序设计决赛的相关文章

2016全国高校大数据专业师资培训班在秦皇岛成功举办

2016年7月29日,由中国电子学会嵌入式系统与机器人分会主办的2016全国高校大数据专业师资培训班(暑假)在河北.秦皇岛河北科技师范学院圆满落幕. 本期师资培训班从7月22日开始,为期8天,河北科技师范学院作为协办方为培训班提供了培训场地,而作为承办方的北京奇观技术有限责任公司以及北京博创智联科技有限公司提供了培训使用的实验设备.大数据教学实验系统以及云计算.大数据领域内的优秀讲师和强大的技术支持团队. 本期培训课程内容是针对全国高校计算机方向量身定制的,涵盖了系统安装配置.提供上层编程API

调研《构建之法》指导下的全国高校的历届软工实践作品、全国互联网+竞赛、物联网竞赛等各类全国性大学生信息化相关的竞赛平台的历届作品及其看法

1,豌豆荚一览 作品内容:主要是一款聚合阅读类作品,他收录了500+应用的内容,可以在一个应用里面,看完自己感兴趣的应用的最近更新的内容,更通俗的讲就是用一个应用代替其他阅读类的应用,你可以在豌豆荚一览中看到其他应用最新更新内容,比如可以看知乎日报,开眼,一个等等之类的..... 作品源于的平台:豌豆荚设计奖里的作品,链接:http://sspai.com/30278 作品的优势:我们手机里面有很多的应用,每天都要在这些应用花费很多时间,其中有一些可能下载下来都不会打开几次,但是删掉又可惜的,于

第二届全国高校SDN网络应用创新大赛获奖名单出炉

8月28日,第二届全国高校SDN网络应用创新开发大赛决赛在华南理工大学进行,在参与决赛的30支队伍中,最终决出了5支一等奖队伍.10支二等奖队伍.13支三等奖队伍及最佳创意奖.最佳潜力奖.个人理论奖等.本次决赛代表历时8个月的第二届全国高校SDN网络应用创新大赛完美落幕. 第二届全国高校SDN网络应用创新大赛合照 据了解,本次大赛共吸引了来自全国59所高校.108支参赛队伍的476名参赛选手参赛,其中有18支本科生队伍.12支研究生队伍进入了8月份在广州华南理工大学进行的复赛阶段.复赛阶段采用理

全国高校学科评估:各专业排名前十的高校

全国高校学科评估:各专业排名前十的高校 考试点考研2016-03-07 17:06:08考研资讯 考研辅导 研院信息阅读(33332)评论(2) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 文章来源于考试点 转载请注明出处 2017考研已经逐渐提上日程,择校择专业也成为许多同学关心的头等大事.现下各种各种的高校排名不在少数,各式榜单很容易使人眼花缭乱.下面是教育部公布的各专业排名前十的高校,也是目前较为权威可信的高校专业评估,大家可以以此做

“第二届全国高校软件定义网络(SDN)应用创新开发大赛” 第八次培训研讨会的通知

各相关高校.单位: 为推动互联网应用创新人才的培养,教育部科技发展中心将于决定于2014年11月至2015年8月举办"第二届全国高校软件定义网络(SDN)应用创新开发大赛"(教技发中心函[2014]126号).本赛项由互联网应用创新开放平台联盟主办,华南理工大学信息网络工程研究中心承办,关于大赛详细信息可浏览网址:www.iiu.edu.cn/chuangxin和www.scut.edu.cn/sdn. 为保障赛事顺利进行,赛项执委会将于2015年5月16日(周六)在江苏省未来网络创新

凌阳爱普协办&ldquo;2014全国高校物联网院长高峰论坛&rdquo;

8月1日-8月3日,全球领导品牌研华科技与业界先进企业凌阳爱普将于昆山(研华协同创新研发中心A+TC暨智慧城市与物联网应用展示中心)共同举办"2014全国高校物联网院长高峰论坛",会议以"驱动物联教育创新 共建产学合作典范"为主题,我们期盼通过此次会议,与您共同促进基于物联网应用的教育模式创新,推动全国高校物联网专业健康发展. 物联网作为一项战略性新兴产业,对建设创新型国家意义重大.随着物联网行业在国内的起步与飞速发展,未来3年内我国将有50万物联网人才缺口.为进一

凌阳教育助力&ldquo;2014全国高校物联网院长高峰论坛&rdquo;

8月1日-8月3日,全球领导品牌研华科技与业界先进企业凌阳爱普将于昆山(研华协同创新研发中心A+TC暨智慧城市与物联网应用展示中心)共同举办"2014全国高校物联网院长高峰论坛",会议以"驱动物联教育创新 共建产学合作典范"为主题,我们期盼通过此次会议,与您共同促进基于物联网应用的教育模式创新,推动全国高校物联网专业健康发展. 物联网作为一项战略性新兴产业,对建设创新型国家意义重大.随着物联网行业在国内的起步与飞速发展,未来3年内我国将有50万物联网人才缺口.为进一

调研《构建之法》指导下的全国高校优秀实践作品三篇

当我准备开始写这篇随笔的时候,我并没有着急的就去查看优秀作品内容.因为平常有审题的习惯,所以我首先先看了一遍<构建之法>这本书的目录.序言.大概的内容和读者读后感.在简要的阅读了一番之后,我觉得作者对于软件工程体会非常的深刻,应该有多年的项目工作经验和管理经验.写<构建之法>这本书也是非常的用心,举出非常多的实际的案例来说明.结合我对于<构建之法>粗浅的理解,选择了我认为有特色的三篇全国高校优秀作品. 1."守艺人"--传统手工艺文化交流APP (南

PhantomJS爬虫 -----全国高校查询-------计算机科学与技术前50大学

Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的, Selenium可以根据我们的指令,让浏览器自动加载页面,获取需要的页面,甚至页面截屏,或者判断网站上某些动作是否发生. Selenium自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用.但是我们有时候需要让它内嵌在代码中运行,所有我们而已用一个叫PhantomJS的工具代替真实的浏览器. PhantomJS是一个基于Webkit的"无界面"(headless)浏览器,它会把网站加