1.比赛概况:比赛总共4题,满分400,赛时拿到180分
第一题 | 满分100 | 得分100 |
第二题 | 满分100 | 得分80 |
第三题 | 满分100 | 得分0 |
第四题 | 满分100 | 得分0 |
2.比赛过程: 刚开始时感觉第一题很简单画了画图,然后把代码写上后测了几组样例就过去了。然后写第二题枚举了一下可能的情况但不全面所以只得了80分。第三题无思路,第四题无思路。 最后20分钟把第三题写了以下代码但是错的,然后检查了一下就交卷了。3.
3.题解报告:(第一题)题目:
我的思路:这道题可以在距离输入后记录距离然后算出时间最小值最后输出。
正解思路:考虑相遇的情况:如果每个人都朝向最近的一个端点进行行走,因为每人的速度都是相同的,因此不会出现相遇的情况。所以本题就找出来每个人都朝向自己离得最近的一个端点进行行走时的最大值。
AC代码:
#include<iostream>
using namespace std;
int n,l,a[1919810],maxx=0;
int main(){
cin>>n>>l;
for(int i=1;i<=n;i++){
cin>>a[i];
maxx=max(min(a[i],l-a[i]),maxx);
}
cout<<maxx;
return 0;
}
(第二题)题目:
我的思路:按照样例一 一用if枚举各种情况
AC代码:
错误原因:思考情况不全面
(第三题):题目:
题目大意:n个场馆的编号分别用 1,2,3, . . , n 表示;m 种动物的编号分别用 1,2,3, . . , m 表示。每一个场馆中只饲养了一只动物,不同的场馆可能饲养着相同种类的动物。
这个动物园的门票比较特殊,游客在购买门票时必须说明要参观的场馆的起止编号 a 和 b(起止编号会打印到游客购买的门票上),代表游客只能参观动物园的第 a个场馆至第 b 个场馆(包含 a, b)里的动物,其他的场馆不能去。门票按一个场馆十元收费
我的思路:枚举
AC代码:
#include<iostream>
using namespace std;
int n,m,a[1005],t[1005];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int l=1,r=0,cnt=0,vis,ans=0x3f3f3f3f;
while(r<n){
t[a[r]]++;
if(t[a[r]]==1){
cnt++;
}
while(t[a[l]]>=2){
t[a[l]]--;
l++;
}
r++;
if(cnt==m){
ans=min(ans,r-1);
}
}
cout<<ans*10;;
return 0;
}
错误原因:思路错误,原本因该用二分而我用的是枚举
(第四题)题目:
我的思路:无
正解思路:消灭掉所有的数字。第一种操作是消除掉一个数字,代价为 ,第二种操作是消除掉一种数字,代价为 。我们把所有相同的数字数量统计出来,这两种操作选择最优即可。
AC代码:
4.总结:第一题第二题我觉得还可以,第3,4题就觉得比较难。因为思维有点受限制。以后改正。