首页 > 其他 > 详细

题解 P5613 【[MtOI2019]黑蚊子多】

时间:2020-02-27 14:21:44      阅读:54      评论:0      收藏:0      [点我收藏+]

题目传送门

一道模拟题目,签到送分题。

您需要的知识

1.while循环

2.for循环

3.一维数组

思路:

Step 1:按题目要求,定义a[],n,m,k

    int a[10001];
    int n,m,k;

Step 2:输入n,m,k

    cin>>n>>m>>k;

Step 3:对于 \(60\%\) 的数据,\(k=0\)
所以先来个判断就能得到60分
如果k==0就输出n/m向上取整
小学三年级的知识……

    if(k==0)
    {
        if(n%m==0)cout<<n/m;
        else cout<<n/m+1;
    }

如果你写到这,就可以得到60分了!

Step 4:如果不是\(k=0\)怎么办
先加一个else

    else
    {

    }

Step 5:定义2个变量,stecnt,都归零

    int cnt=0;
    int ste=0;

这里可以连着写

Step 6:输入a[i]
不赘述了

    for(int i=1;i<=k;i++)
        cin>>a[i];

Step 7:按照题目方法模拟,也不难,while+for即可

    while(ste<n)
    {
        cnt+=1;
        ste+=m;
        for(int i=1;i<=k;i++)
        if(a[i]==ste)m++;
    }

Step 8:输出cnt,别输出错了!

    cout<<cnt;

Step 9:

    return 0;

满分代码

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int a[10001];
int main()
{
    int n,m,k;
    cin>>n>>m>>k;
    if(k==0)
    {
        if(n%m==0)cout<<n/m;
        else cout<<n/m+1;
    }
    else
    {
        int cnt=0;
        int ste=0;
        for(int i=1;i<=k;i++)
            cin>>a[i];
        while(ste<n)
        {
            cnt+=1;
            ste+=m;
            for(int i=1;i<=k;i++)
                if(a[i]==ste)m++;
        }
        cout<<cnt;
    }
    return 0;
}

题解 P5613 【[MtOI2019]黑蚊子多】

原文:https://www.cnblogs.com/tearing/p/12371852.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!