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;
}
2019年全国高校计算机能力挑战赛 C语言程序设计决赛的更多相关文章
- 2019年全国高校计算机能力挑战赛初赛C语言解答
http://www.ncccu.org.cn 2019年全国高校计算机能力挑战赛分设大数据算法赛,人工智能算法赛,Office高级应用赛,程序设计赛4大赛项 C语言初赛解答 1:编程1 16.现有一 ...
- 2019年全国高校计算机能力挑战赛初赛java语言解答
1:题目1 16.某星球存在两种生物,A种生物有1个头6条腿,B种生物有3个头4条腿.来自地球的太空船刚刚在该星球降落,突然发现一大群这两种生物组成的队伍,由于时间紧,只数了头的数量和腿的数量,请帮助 ...
- 2019年全国高校计算机能力挑战赛初赛C++语言解答
1; 题目一 16.电商促销某种商品时,希望通过打折鼓励消费者组团消费.已知,团队消费金额=该团的人数和*商品单价.打折规则如下:当组团消费者数量不满50人时,商品消费金额没有折扣:消费者数量大于等于 ...
- 2019年全国高校sql数据库
2019年全国高校名单sql数据库信息: 根据教育部发布的文件整理形成可用.sql文件,导入数据库即可使用. 包括全国高等学校共计2956所,其中:普通高等学校2688所(含独立学院257所),成人高 ...
- 全国计算机等级考试二级Python语言程序设计考试大纲
全国计算机等级考试二级Python语言程序设计考试大纲(2018年版) 基本要求 掌握Python语言的基本语法规则. 掌握不少于2个基本的Python标准库. 掌握不少于2个Python第三方库,掌 ...
- Python3——2019年全国大学生计算二级考试
Python语言程序设计二级重点(2019年版) 第一章 程序设计基本方法 IPO程序编写方法 :输入(input),输出(output),处理(process): Python程序的特点: (1)语 ...
- 2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解
2019年湖南省大学生计算机程序设计竞赛 (HNCPC2019) 简要题解 update10.01 突然发现叉姐把这场的题传到牛客上了,现在大家可以有地方提交了呢. 不知道该干什么所以就来水一篇题解 ...
- 2019年春季学期《C语言程序设计II》课程总结
2019年春季学期<C语言程序设计II>课程总结 1.课程情况 教学内容 课堂小结 作业安排 优秀作业 备注 1.开学谈心 2.测验数据类型.运算符与表达式的自学情况,并讲解测验题目3.第 ...
- 2019年春季学期《C语言程序设计II》助教注意事项
本学期<C语言程序设计II>课程安排 理论课时24(1-12周),实验课时8(13周),课程设计课时16(14-15周) 理论课教学内容 附:教学进度表 本学期实验课和课程设计参考教材 & ...
随机推荐
- Mysql双活方案
#### 说明 Mysql主主互备即为两个mysql的互为备份机 ##### Windows下安装步骤(Linux下步骤类似,基本就是装上mysql,然后修改配置来完成主从的设置) - step1 ...
- 【Web技术】281- 滴滴开源小程序框架 Mpx2.0
滴滴Mpx框架负责人@hiyuki,滴滴出行网约车webapp乘客团队的负责人,也是滴滴开源的小程序框架Mpx的负责人和核心作者 Mpx是一款致力于提高小程序开发体验和效率的增强型小程序框架,目前在滴 ...
- redis(4)--redis集群之主从复制
集群 先来简单了解下redis中提供的集群策略, 虽然redis有持久化功能能够保障redis服务器宕机也能恢复并且只有少量的数据损失,但是由于所有数据在一台服务器上,如果这台服务器出现硬盘故障,那就 ...
- 201871010119-帖佼佼《面向对象程序设计(java)》第八周学习总结
博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...
- 深入解析Java反射
因为本人最近正筹备Samsara框架的开发,而其中的IOC部分非常依靠反射,因此趁这个机会来总结一下关于Java反射的一些知识.本篇为基本篇,基于JDK 1.8. 一.回顾:什么是反射? 反射(Ref ...
- AWS re:Invent 2019参会有感
感谢AWS方面的邀请,以及公司给予的机会,近期有幸赴美参与了享有盛名的AWS re:Invent大会.会议期间自己还算勤勉,参加了尽可能多的session.现笔者也已回到国内,交个作业,写一篇短文作为 ...
- vscode 同步扩展插件
第一步: 在 VSCode 中,安装用于同步配置的插件 settings sync 第二步:将 VSCode 配置上传到 GitHub 完成这一步需要 GitHub token 和 GitHu ...
- 更小的GIS数据格式-Geobuf
背景 我们经常遇到直接传输gis数据到前端展示的时候,有时候数据量一稍微多点,传输速度就减慢,因为我们用于传输的json格式比较大. Geobuf介绍 Geobuf是一种用于地理数据的紧凑二进制编码. ...
- 办公达人私藏的EXCEL辅助工具,一人抵十人,高效办公就靠它了!
有很多小伙伴在日常工作中都离不开EXCEL的使用,但EXCEL实在是有太多困难.又复杂的操作,时间紧任务重这一天又废柴了,哎! 别担心,今天将为您分享个逆天强大的EXCEL辅助工具,帮大家快速搞定—— ...
- Hack the Zico2 VM (CTF Challenge)
下载链接: Download this VM here: https://download.vulnhub.com/zico/zico2.ova 端口扫描: ╰─ nmap -p1-65535 -sV ...