武汉工程大学2020GPLT选拔赛(上)
比赛链接
A L1-1 I LOVE WIT
模拟,每个字母单独一行,前面的空格按规律输出。可以直接输出,也可以模拟过程
#include<bits/stdc++.h> using namespace std; int main(){string s="I LOVE WIT";for(int i=0;i<s.size();++i){for(int j=1;j<=i;++j){cout<<" ";}cout<<s[i]<<endl;}return 0; }B L1-2 单位换算
根据题目总结公式:
sum=n122.54*10
注意如果不是整数就保留一位小数,否则不留小数
C L1-3 Pokémon
根据题目要求输出运算
cv对应着相应的概率,再看f等于0或1,乘以对应的概率,直接运算就可以。
注意读入与输出时都有百分号,特别处理一下
D L1-4 颠倒阴阳
我们先分析分析有多少步骤
首先当然是将n转化成2进制形式
然后取反
然后高低位翻转
最后转发成十进制
中间两步我们可以合在一起,因为我们用数组来存二进制,取反后存的时候可以直接倒着存,就相当于翻转了。
取反时不要讲多余部分取反,直接判断n是否已除尽
详细看代码吧
E L1-5 演唱会
题目好理解
我们读入是将时分秒分别存入hh,mm,ss中,然后分别加上1,22,33,注意进位,从ss开始每满60进一位,最后比较时分别于演唱会开始与结束时间比较,从小时开始比到秒
(这么做还要进位太麻烦了吧)
其实直接将所有时间都转化成秒,直接对比多方便
怎么方便怎么做
#include<bits/stdc++.h> using namespace std; int main(){int hh,mm,ss;int sum;char ch;cin>>hh>>ch>>mm>>ch>>ss;sum=hh*3600+mm*60+ss;sum+=3600+22*60+33;int beg=19*3600,ed=21*3600;if(sum<beg){cout<<"arrive on time";}else if(sum<ed){cout<<"arrive late";}else{cout<<"too late";}return 0; }F L1-6 分鸽子
(吃鸽子!!鸽子保护协会表示抗议)
终于有个涉及算法的题了
二分问题
我们要知道正确答案是在区域[l,r]之间的,一开始l=1,r=1e9+2,然后不断缩小l与r的范围
我们先枚举一个mid作为答案,然后判断mid是否符合条件,如果符合说明可能存在更佳的答案,就把左边界更新(扩大)
如果不符合说明当前答案太大了,就把右边界缩小
这个条件怎么判断呢?
我一开始是先看mid*m与sum(a[i])也就是需要的鸽子肉与有的鸽子肉比较,如果大于已有mid肯定多了
如果小于就看mid是不是比单个鸽子肉小,因为不能混搭
我感觉这样做问题不大,结果过了一半,懵了
然后换了一个判断方法,直接看每个鸽子以当前mid标准能分成几份,如果份数大于人数,即符合要求,反之不符合
具体看代码吧
总结
以上是生活随笔为你收集整理的武汉工程大学2020GPLT选拔赛(上)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 理想汽车三季度获得净利润28.1亿元 连
- 下一篇: 牛客网【每日一题】5月8日题目精讲 co