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;
}

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

  1. 2019年全国高校计算机能力挑战赛初赛C语言解答

    http://www.ncccu.org.cn 2019年全国高校计算机能力挑战赛分设大数据算法赛,人工智能算法赛,Office高级应用赛,程序设计赛4大赛项 C语言初赛解答 1:编程1 16.现有一 ...

  2. 2019年全国高校计算机能力挑战赛初赛java语言解答

    1:题目1 16.某星球存在两种生物,A种生物有1个头6条腿,B种生物有3个头4条腿.来自地球的太空船刚刚在该星球降落,突然发现一大群这两种生物组成的队伍,由于时间紧,只数了头的数量和腿的数量,请帮助 ...

  3. 2019年全国高校计算机能力挑战赛初赛C++语言解答

    1; 题目一 16.电商促销某种商品时,希望通过打折鼓励消费者组团消费.已知,团队消费金额=该团的人数和*商品单价.打折规则如下:当组团消费者数量不满50人时,商品消费金额没有折扣:消费者数量大于等于 ...

  4. 2019年全国高校sql数据库

    2019年全国高校名单sql数据库信息: 根据教育部发布的文件整理形成可用.sql文件,导入数据库即可使用. 包括全国高等学校共计2956所,其中:普通高等学校2688所(含独立学院257所),成人高 ...

  5. 全国计算机等级考试二级Python语言程序设计考试大纲

    全国计算机等级考试二级Python语言程序设计考试大纲(2018年版) 基本要求 掌握Python语言的基本语法规则. 掌握不少于2个基本的Python标准库. 掌握不少于2个Python第三方库,掌 ...

  6. Python3——2019年全国大学生计算二级考试

    Python语言程序设计二级重点(2019年版) 第一章 程序设计基本方法 IPO程序编写方法 :输入(input),输出(output),处理(process): Python程序的特点: (1)语 ...

  7. 2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解

    2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解 update10.01 突然发现叉姐把这场的题传到牛客上了,现在大家可以有地方提交了呢. 不知道该干什么所以就来水一篇题解 ...

  8. 2019年春季学期《C语言程序设计II》课程总结

    2019年春季学期<C语言程序设计II>课程总结 1.课程情况 教学内容 课堂小结 作业安排 优秀作业 备注 1.开学谈心 2.测验数据类型.运算符与表达式的自学情况,并讲解测验题目3.第 ...

  9. 2019年春季学期《C语言程序设计II》助教注意事项

    本学期<C语言程序设计II>课程安排 理论课时24(1-12周),实验课时8(13周),课程设计课时16(14-15周) 理论课教学内容 附:教学进度表 本学期实验课和课程设计参考教材 & ...

随机推荐

  1. E1.Send Boxes to Alice(Easy Version)//中位数

    发送盒子给Alice(简单版本) 题意:准备n个盒子放巧克力,从1到n编号,初始的时候,第i个盒子有ai个巧克力. Bob是一个聪明的家伙,他不会送n个空盒子给Alice,换句话说,每个盒子里面都有巧 ...

  2. unity3d 柏林噪声 PerlinNoise 规律 算法

    测试 每个小数值取100次 print(0.1); LaTest3(0.1f, 0.1f); print("Max:" + La.Max() + "|Min:" ...

  3. 深入学习 Arduino LinkedList库(一个变长的集合类数组)

    QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 博主是做Android App开发出身的,所以对Java这门语言算是有 ...

  4. 【Web技术】400- 浅谈Shadow DOM

    编者按:本文作者:刘观宇,360 奇舞团高级前端工程师.技术经理,W3C CSS 工作组成员. 为什么会有Shadow DOM 你在实际的开发中很可能遇到过这样的需求:实现一个可以拖拽的滑块,以实现范 ...

  5. 前端小白要搞懂什么是HTML,看这一篇就够了

    本文是<HTML5与CSS3基础语法自学教程>的第一篇,首发于[前端课湛]微信公众号. 导读:本小节主要讲解 HTML 的基本信息,其中包含 HTML 概念.HTML 发展历程和 HTML ...

  6. JS-常考算法题解析

    常考算法题解析 这一章节依托于上一章节的内容,毕竟了解了数据结构我们才能写出更好的算法. 对于大部分公司的面试来说,排序的内容已经足以应付了,由此为了更好的符合大众需求,排序的内容是最多的.当然如果你 ...

  7. C语言每日一练——第6题

    一.题目要求 计算500~800区间素数的个数cnt,并按所求素数的值从大到小的顺序,计算其间隔间的减.加之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数.....的值sum.最后把 ...

  8. django----csrf跨站请求伪造 auth组件 settings源码 importlib模块

    目录 importlib模块 csrf跨站请求伪造 form表单发送 ajax发送 csrf装饰器 auth模块 如何创建超级用户(root) 创建用户 校验用户名和密码是否正确 保存用户登录状态 判 ...

  9. webpack打包出现WARNING in configuration The 'mode' option has not been set, webpack will fallback to 'production' for this value. 错误

    打包运行的时候出现以下错误 WARNING in configurationThe 'mode' option has not been set, webpack will fallback to ' ...

  10. django基础之day10,cookie session token

    https://www.cnblogs.com/Dominic-Ji/p/10886902.html cookie session token