HAUT2016级新生周赛(四) - 参赛分享
来源:互联网 发布:机房网络布线图 编辑:程序博客网 时间:2024/06/06 17:51
今天参加了HAUT2016级新生周赛(四),第四场比赛,做了题分享一下思路,给大家分享,以及自己做个记录。
比赛网址链接如下:
http://218.28.220.249:50015/JudgeOnline/
总共出了6题,做了5个题,把做了的分享一下:
Problem A: ykc的简单数学题
题目分析:
本题要让我们求拐点的数目,根据题目的描述,所谓拐点,就是斜率由正变成负,或者由负变成正的点。所以我们的目的就是要找到这些点。于是做一次遍历,把每一个有这种情况的点都拿出来就ok了。
代码如下:
#include<iostream>using namespace std;const int SIZE = 1000;int main(){ int n; int num[SIZE]={0}; cin>>n; for(int i=0;i<n;++i){ cin>>num[i]; } if(n <= 2){ cout<<0<<endl; }else{ int flag = num[1]-num[0]; int total = 0; for(int i=2;i<n;++i){ if((num[i]-num[i-1])*flag < 0){ total += 1; } flag = num[i]-num[i-1]; } cout<<total<<endl; } return 0;}
Problem C: 1的个数
题目分析:
本题要求我们求一个数的二进制表示中有多少个1。由题意,一个最直接的想法就是%2来统计1的个数,以此思想进行循环就可以了。
代码如下:
#include<iostream>using namespace std;int main(){ int M; cin>>M; int count=0; while(M>0){ if(M%2 == 1){ count +=1; } M/=2; } cout<<count<<endl; return 0;}
Problem D:约瑟夫环
题目分析:把这个问题转化为数学问题,模拟这个过程,并排序重新编号,问题变成当有2个人的时候(N=2),报道(M-1)的人出列,最后出列的应该是在只有一个人时,报数时得到的最后自出列的序号加上M,因为报到M-1的人已经出列,只剩下2个人,另一个出列者就是最后者,用函数表示:
F(2)=F(1)+M
可以得到递推公式:
F(i)=F(i-1)+M
因为可能会超出总人数范围,所以要求模
F(i)=(F(i-1)+M)%i
把公式代换进本题就可以
代码如下:
#include <iostream>using namespace std;int main(){ int n, m, s = 0; cin>>n>>m; for (int i = 2; i <= n; i++){ s = (s + m) % i; } cout<<s+1<<endl; return 0;}
Problem E:Beru-taxi
题目分析:已知你的坐标和n个司机的坐标和速度,求上车的最短时间 ,直接写就可以代码如下:
#include<iostream>#include<math.h>#include<iomanip>#include<stdio.h>using namespace std;const int N = 1000;int main(){ double a,b; double x,y,v; int n; double len,min=99999.00; cin>>a>>b; cin>>n; for(int i=0;i<n;++i){ cin>>x>>y>>v; len = sqrt((x-a)*(x-a)+(y-b)*(y-b))/v; if(min>len){ min = len; } } printf("%.4f\n",min); return 0;}
Problem F:零钱问题
题目分析:,这是一个找零钱算法。
代码如下:
#include <iostream>using namespace std;int getMin(int x);int main(){ int m, n, t; cin>>t; m = 100-t; n = getMin(m); cout<<m<<" "<<n<<endl; return 0;}int getMin(int x){ int money[5] = {50,10,5,2,1}; int total = 0; while(x>0){ for(int i=0;i<5;++i){ if(x-money[i]>=0){ total+=1; x-=money[i]; break; } } } return total;}
0 0
- HAUT2016级新生周赛(四) - 参赛分享
- 题解-ACM2016级新生周赛(11.13)
- ACM2016级新生第三周训练赛
- ZZNU17级新生周赛第一场
- ZZNU17级新生周赛第二场
- ZZNU17级新生周赛第三场
- ZZNU17级新生周赛第四场
- ZZNU17级新生周赛第五场
- ZZNU17级新生周赛第六场
- ZZNU17级新生周赛第七场
- 南阳理工学院软件、计科16级新生联合月赛(10月)
- SWUN_2016级新生校赛_开关灯
- JetBrains使用技能分享征集大赛参赛作品——PHPStorm(10.0版)实用小技巧
- 省赛(蓝桥杯)参赛心得
- 中科杯看到的不错的参赛项目,分享给你们
- 分享四
- 分享四
- 近期活动盘点:基于雷达图像预测未来降水参赛经验分享、大数据基础设施讲座、药品行业分析及大数据应用思享会(11.22-11.29)
- 下拉框元素定位
- php读取一个文件内容
- 微信公众号开发---解决Access Token过期的问题(.Net实现)
- Freemarker入门
- JDBC报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- HAUT2016级新生周赛(四) - 参赛分享
- 现代化Web的微服务架构最佳实践全景
- 简单排序方法:直接插入排序、冒泡排序、简单选择排序
- php超全局变量
- Android开源项目
- cmath 中的j0,j1,jn及y0,y1,yn的问题。疑重大‘BUG’
- 8.Mac PHPStorm 快捷键
- 最长公共子序列问题(LCS) Longest common subsequence
- leetcode_50. Pow(x, n)