目录

  • A编程从这里开始
  • B维恩牌
  • C杰哥的崩三咸鱼生活
  • D顺时针还是逆时针?
  • E黑摸仙wgc爱吃肠粉
  • F杯口朝上
  • G对称美
  • H小兔子下崽仔
  • I网络巨人在线锤人
  • J无所不知cwj
  • K寻找福建人

A编程从这里开始

三个数相加
套着模板改一下就可以过

#include<stdio.h>
int main()
{int a,b,c,n;scanf("%d",&n);for(int i=1 ; i<=n ; i++){scanf("%d %d %d",&a,&b,&c);printf("Case #%d:\n%d\n" ,i ,a+b+c);}return 0;
}

B维恩牌

由规则可知

一方打出4或者双方打出同样的牌,即平局

3克制1

2克制1

3克制2

使用很多if else也行,就是有点麻烦

#include <stdio.h>
int main(){int t;int a,b;scanf("%d",&t);for(int i = 1;i <=t;i++){int ans = -1;scanf("%d %d",&a,&b);if(a == b || a == 4 || b == 4)ans = 0;else if((a == 1 && b == 3) || (a == 2 && b == 1) || (a == 3 && b == 2))ans = 1;printf("Case #%d:\n%d\n",i,ans);}
}

C杰哥的崩三咸鱼生活

根据题意
分两种情况
可以算是签到题之一了

#include<stdio.h>
int main()
{int t;scanf("%d",&t);for(int i=1 ; i<=t ; i++){int h,u,s,a,d;scanf("%d %d %d %d %d",&h,&u,&s,&a,&d);printf("Case #%d:\n",i);if(a >= d){printf("%.2lf\n",h*0.05+u*0.05+a*0.4+s*0.3+d*0.2);}else{printf("%.2lf\n",h*0.05+u*0.05+d*0.4+s*0.3+a*0.2);}}
}

D顺时针还是逆时针?

计算几何基础题,利用向量叉积判断是顺时针还是逆时针
知道了数学公式就会容易很多

x1 * y2 - x2 * y1 > 0的话为逆时针,<0为顺时针

#include<stdio.h>
int main(){int T,x1,x2,y1,y2,Ax,Ay,Bx,By,Cx,Cy,cas = 0;scanf("%d",&T);   while(T --){scanf("%d%d%d%d%d%d",&Ax,&Ay,&Bx,&By,&Cx,&Cy);x1 = Bx - Ax;y1 = By - Ay;x2 = Cx - Bx;y2 = Cy - By;if((x1 * y2) - (x2 * y1) > 0) printf("Case #%d:\nNO\n",++cas);else printf("Case #%d:\nYES\n",++cas);}return 0;
}

E黑摸仙wgc爱吃肠粉

给定一开始n个肠粉的序数,通过m次将x、y号肠粉交换,输出最终的肠粉顺序
主要就是交换,看样例更容易读懂题意
可以用异或进行操作,但要注意相同的数字

#include <stdio.h>
int main(){int t;int n,m;int x,y;scanf("%d",&t);for(int i = 1;i <= t;i++){int num[110];scanf("%d %d",&n,&m);for(int j = 1;j <= n;j++){scanf("%d",&num[j]);}int temp = 0;while(m--){scanf("%d %d",&x,&y);temp = num[x];num[x] = num[y];num[y] = temp;}printf("Case #%d:\n",i);for(int j = 1;j <= n;j++){printf("%d ",num[j]);}printf("\n");}
}

F杯口朝上

给n个杯口朝上的杯子,有m个人,第m个人将第m倍数的杯子翻转,求最后杯口朝上的杯子有哪些

#include<stdio.h>
int main(){int num[200];int t, x = 1;int n, m;scanf("%d", &t);while(t--){int q = 0;scanf("%d %d", &n, &m);for(int i = 0; i <= n; i++){//num数组存储被反转的次数,这里是初始化num[i] = 0;}for(int i = 1; i <= m; i++){//人for(int j = 1; j <= n; j++){//杯子if(j % i == 0){num[j]++;}}}printf("Case #%d:\n", x++);for(int i = 1; i <= n; i++){if(num[i] % 2 == 0){//如果反转的次数是偶数次,那杯口朝上,输出q++;printf("%d ", i);}}if(q == 0){//没有一个杯口是朝上的,那就输出-1printf("-1");}printf("\n");}
}

G对称美

简单字符串判断回文
方法不少,可以用一个数组储存倒序,然后判断和原来的字符串是不是一样,也可以用下面的方法

#include<stdio.h>
#include<string.h>
int a[100],b[100][2];
int main()
{int t;scanf("%d",&t);for(int i=1;i<=t;i++){getchar();//吃掉换行,不然换行符会被scanf接收char cb[1000];scanf("%s",cb);int ans=1;for(int j=0;j<strlen(cb);j++){//strlen(cb)if(cb[j]!=cb[strlen(cb)-1-j]){//第一位和最后一位比较,第二位和倒数第二位比较...依次进行下去ans=0;}}printf("Case #%d:\n",i);if(ans==1)printf("YES\n");else printf("NO\n");}
}

H小兔子下崽仔

某个月兔子的数量=上个月兔子数+这个月出生的兔子数
这个月出生的兔子数=上上个月的兔子数(根据题意可知此时且这个月的兔子全是上上个个月的兔子生的,
因为上上个月的兔子是刚好到这个月所有兔子都成熟的,所以可以理解为这个月的新生兔子是上上个月的兔子数量)。
写成递推公式就是:f(n)=f(n-1)+f(n-2).
其实就是一个斐波那契数列

代码的话
1:可以一开始定义一个数组,把每个月的兔子数都存进去,最后然后通过索引输出n个值。
2:也可以每次输入一个月份后,用两个变量(三个也行)从头迭代到该月份,然后输出值。

第一种方法的代码:

#include<stdio.h>
#define LASTSUBSCRIPT 40int main(){int a[45],T;a[1]=1;a[2]=1;
//  int a[45]={0,1,1};for(int temp = 3;temp <= LASTSUBSCRIPT;temp++)a[temp] = a[temp-2] + a[temp-1];while(~scanf("%d",&T)){for(int T1=1;T1<=T;T1++){int n;scanf("%d",&n);printf("Case #%d:\n%d\n",T1,a[n]);}}return 0;
}

第二种方法

#include<stdio.h>
int main(){int T;while(~scanf("%d",&T)){for(int T1=1;T1<=T;T1++){int n,a=1,b=1,step=2;//a,b用于迭代。step是计数器 scanf("%d",&n);while(n>2){//如果输入是前两个月则跳过循环,否则进入while死循环 a=a+b;step++;if(step==n)break;b=b+a;step++;if(step==n)break;}if(n<3)printf("Case #%d:\n%d\n",T1,1);else if(step%2==1)printf("Case #%d:\n%d\n",T1,a);else//if (step%2==0) printf("Case #%d:\n%d\n",T1,b);}}return 0;
}

I网络巨人在线锤人

依据题意,
让数组下标从1开始,按照下标求和
用数组存数据,第一个数组a[i]存每个人的距离,第二个数组b[j]存第几个人。想求总共距离,就把a[b[j]]相加即可。

#include<stdio.h>
int main()
{int t,n,m,sum;int a[100],b[100];scanf("%d",&t);int cnt = 1; while(t--){int sum = 0;scanf("%d %d",&n,&m);for(int i = 1; i <= n; i++){scanf("%d",&a[i]); }for(int j = 1; j <= m; j++){scanf("%d",&b[j]);sum += a[b[j]];}printf("Case #%d:\n",cnt++);printf("%d\n",sum);}return 0;
}

J无所不知cwj

三种情况:

  1. 全是单选
  2. 有单选有多选
  3. 全是多选

全是单选的话,需要 n*a 元

单选和多选的话,需要 (n/m)*b + (n%m)*a 元

全部多选的话,如果n%m刚好等于0,那么包括在上面第二种情况中了,如果是n%m不等于0,我们可以用 (n/m+1)*b来代表

在任何情况下,我们把这三种情况分别输出再进行比大小,最小的即是结果

#include <stdio.h>
int main()
{int t;scanf("%d",&t);int n,m,a,b;for(int i=1 ; i<=t ; i++){scanf("%d %d %d %d",&n,&m,&a,&b);printf("Case #%d:\n",i);int ans1 = n*a;int ans2 = n/m*b + (n%m)*a;int ans3 = (n/m+1)*b;//三个数选出最小值int ans = ans1;if(ans > ans2) {ans = ans2;}if(ans > ans3) {ans = ans3;}printf("%d\n",ans);}
}

K寻找福建人

题目有点难读
注意行数和列数的不同
样例1:
5列

前三行用黑科技检查完3x3=9
4和5行使用单个的检测3x1=3
共9+3=12
样例2同理

#include<stdio.h>
int cb[1000000];
int main()
{int n;scanf("%d",&n);for(int i=1 ; i<=n ; i++){int t,k;int hp = 0;scanf("%d %d",&t,&k);for(int q=0;q<t;q++){scanf("%d",&cb[q]);}int cut = t;//cut表示即将扫描的行的人数 while(1){if(k<=cut){//>=k,就用扫描一行 for(int j=0;j<t;j++){//使每一列的人数减少1 if(cb[j]==0){continue;}cb[j]--;if(cb[j]==0){//下一行剩下的人数减少1 cut--;}}hp+=k;//耗费的成本增加k }else{break;//剩下的情况都需要一个一个检查,就退出循环 }}for(int p=0;p<t;p++){ hp+=cb[p];}printf("Case #%d:\n%d\n",i,hp);}
}

2020 BNUZ 国庆欢乐赛 题解相关推荐

  1. 2019BNUZ_ACM国庆欢乐赛题解

    目录 题目来源 : A.小沛的暑假安排 B.nsy上幼儿园 C.nsy上小学 D.怡姐的游戏 E.如风般奔跑 F.cjb找朋友 G. 黑魔仙wgc的攻击 H. 皓洲喜欢经纬线 I. 小枫买车 J. 单 ...

  2. 北师大珠海分校2017国庆欢乐赛题解

    我都老了还让我写这种题解. 约翰·洛吉·贝尔德 每次开k个电视,需要这k个电视的色彩都不一样 每种色彩需要一根信号源 现在问至少需要多少种信号源 那么我们可以找k个电视.他们都只用1个信号源,有不同颜 ...

  3. 2020 BNUZ 新生现场赛 题解

    文章目录 组合技 站好队 我不看月亮 记忆大王李华 用来签到的打牌游戏 你会看天气预报吗 小明的派对 茅亭里看雨 切西瓜 盛夏白瓷梅子汤 秉烛夜游 一醉方休 组合技 此题将n-1个元素加1可以等价于 ...

  4. 北师大珠海分校2016国庆欢乐赛题解

    Amazing Score 这题长得跟基本的作业题很像,每次输入12个数,奇数位为学分a,偶数位为分数b,总的加权平均分为,然后当b小于60的时候特判一下,整组分数记为0即可 #include< ...

  5. Comet OJ - 2019国庆欢乐赛(赛后整理)

    Comet OJ - 2019国庆欢乐赛(赛后整理) 比赛链接:传送门 PS: 做题失误: A题wa了好久不知道为什么,后来才知道乘法爆long long了 B题思路错了,应该在想清楚些. 比赛过程中 ...

  6. Comet OJ 2019 夏季欢乐赛题解

    Comet OJ 2019 夏季欢乐赛题解 我是来骗访问量的 A 完全k叉树 \(n\)个点的完全k叉树的直径. 直接做 B 距离产生美 直接做 C 烤面包片 \(n!!!\mod p\) 显然\(n ...

  7. BUU-ACM国庆新人欢乐赛题解

    A 模拟签到题 判断平年还是闰年,然后输出365.366即可. code #include <stdio.h> int main() {int x;scanf("%d" ...

  8. BNUZ-ACM 2018国庆新生欢乐赛题解

    目录 A.三角恋 B.台风闲聊 C.kuyee买奶茶 D.法师Knight可能很强大 E.看我一只穿云箭 F. 兔叽先生和长颈鹿女士 G.面积面积 H.所有人!都别过来! I.Everduo与星澈的合 ...

  9. 2022.10.1 NYIST 国庆欢乐进行曲题解

    目录 A.唱!练习时长两年半的acmer练习生歌颂国庆!!! B. 跳!鸡哥想要去鸡场!!! C.rap D.篮球!妈妈我要学篮球! E.速速与董学姐击剑 F.关于比赛提前半小时封榜这件事 G. 10 ...

最新文章

  1. 关于Eclipse插件开发(一)
  2. java poi excel读写_JAVA-POI操作Excel读写
  3. Servlet获取Web应用程序的初始化参数
  4. json schema如何约束为小数_如何使用jsonschema进行接口响应断言
  5. java isight zmf_isight集成catia和abaqus,nastran流程详解
  6. 大数据学习(07)--MapReduce
  7. python字典导入mongodb_python连接mongoDB进行数据提取→常用操作指南
  8. Element ui select同时获取value和label的值
  9. 南邮linux期末考试试题,南邮操作系统试卷及答案.doc
  10. POJ 2528 Mayor's posters (离散化和线段树使用)
  11. 安装dubbo管理控制台
  12. sqlserver导出表结构到excel
  13. python做什么生意好找_寻找python项目来提高你的技能
  14. ngrok跟小米球的使用
  15. 华为手机鸿蒙系统手机_华为推出鸿蒙系统2.0 明年华为手机将适配支持
  16. 第八章——ICellStyle单元格样式操作
  17. 2、【易混淆概念集】-前三章 2 净现值 NPV 内部报酬率 IRR 投资回报率 ROI
  18. windows立方体桌面
  19. 最新版gg服务器框架安装器,GG服务框架安装器
  20. Springboot中引入本地jar包,并通过maven打包(解决maven丢包的问题)

热门文章

  1. rmm 一个替换rm 的工具
  2. python3 规则引擎_Ilog、Drools、Jess规则引擎的Rule Language 对比
  3. 数据结构(七)高级排序算法——归并、快速排序
  4. TensorFlow学习笔记12----Creating Estimators in tf.contrib.learn
  5. android studio 屏幕翻转
  6. 噪声分析基础(公式)知识
  7. php钓鱼怎么使用方法,还不会用小药钓鱼的朋友们,请往这里看看!
  8. 歪果小姐姐教你用代码画画,真大佬!
  9. 记账之后的收支明细,如何以收支图表的形式呈现
  10. excel 公式 java_Java读取、创建Excel的公式