码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 864 C Bus 思维

时间:2017-09-26 23:41:14      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:需要   map   lap   技术分享   temp   加油   理解   .com   turn   

  题目链接: http://codeforces.com/problemset/problem/864/C

  题目描述: 输入a, b, f, k , 一段长度为a的路来回走, 中间f的地方有一个加油站, 油罐的容量为b, 问想要走b次这条路至少需要加多少次油  

  解题思路: 由于K <= 1e4, 所以将每次需要走路的连续序列构造出来再去遍历一遍这个序列看啥时候需要加油就可以了

  代码: 

技术分享
#include <iostream>
#include <cstdio>
#include <map>
#include <iterator>
#include <string>
using namespace std;

const int maxn = 1e4+100;
int dis[maxn];

int main() {
    int a, b, f, k;
    cin >> a >> b >> f >> k;
    int temp1 = f;
    int temp2 = a-f;
    temp1 *= 2, temp2 *= 2;
    dis[1] = f;
    int flag = 0;
    if( k & 1 ) flag = 1;
    if( flag == 1 ) {
        dis[k+1] = a-f;
        int temp = 1;
        for( int i = 2; i <= k; i++ ) {
            if( temp==1 ) {
                dis[i] = temp2;
            }
            else {
                dis[i] = temp1;
            }
            temp = -temp;
        }
    }
    else {
        dis[k+1] = f;
        int temp = 1;
        for( int i = 2; i <= k; i++ ) {
            if( temp==1 ) {
                dis[i] = temp2;
            }
            else {
                dis[i] = temp1;
            }
            temp = -temp;
        }
    }
//    for( int i = 1; i <= k+1; i++ ) {
//        cout << dis[i] << " ";
//    }
//    cout << endl;

    int ans = 0;
    flag = 0;
    int temp = 0;
    for( int i = 1; i <= k+1; i++ ) {
        if( dis[i] > b ) {
            flag = 1;
            break;
        }
        if( temp + dis[i] <= b ) {
            temp += dis[i];
        }
        else {
            temp = dis[i];
            ans ++;
        }
    }
    if( flag ) {
        cout << "-1" << endl;
    }
    else {
        cout << ans << endl;
    }
    return 0;
}
View Code

  思考: 自己首先一开始想当然的理解了题意, 造成的后果就是样例怎么也推不出来, 还以为是题错了就咸鱼了一个点儿........后来自己又重新把题画了一遍才发现是自己傻逼, 然后才A掉,妈的智障

Codeforces 864 C Bus 思维

标签:需要   map   lap   技术分享   temp   加油   理解   .com   turn   

原文地址:http://www.cnblogs.com/FriskyPuppy/p/7599249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!