贪心算法problemA(1000)

来源:互联网 发布:初学java什么书比较好 编辑:程序博客网 时间:2024/05/21 00:45

一.简单题意

就是一个酒店在走廊搬桌子的问题,走廊两边,一边是偶数房间一边是奇数房间,搬动一次需要十分钟,可以同时进行,但是当我搬的桌子用到相同走廊的时候就不能同时进行。比如我搬的桌子是从1~5和6~10就需要20分钟。

二.解题思路

开始用贪心算法,可以求出答案,但一直wa,后来没有用贪心,就求需要走过的走廊次数,用最多的乘以10就可以。

三.感想

虽然这个题出在贪心算法,但却不是用贪心算法来解,我们应该用最简单的方法去解决问题

四.ac代码

#include<iostream>using namespace std;struct room{    int begin_room;    int end_room;}r[201];int main(){    int temp;    int n, m, p, max[201], time,a,b ;    cin >> n;    for (int i = 0; i < n; i++)    {        p = 0;        cin >> m;        for (int i = 0; i < 201; i++)        {            max[i] =0;        }        for (int j = 0; j < m; j++)        {            cin >> r[j].begin_room >> r[j].end_room;            a = (r[j].begin_room-1) / 2;            b = (r[j].end_room - 1) / 2;            if (a > b)            {                        temp = a;                a = b;                b= temp;            }            for (int i = a; i <= b; i++)            {                max[i] = max[i] + 1;            }        }        time = 0;        for (int i = 0; i < 201; i++)        {            if (max[i] > time)            {                time = max[i];            }        }                cout << time*10 << endl;    }    return 0;}


0 0
原创粉丝点击