zoukankan      html  css  js  c++  java
  • Codeforces 864 C Bus 思维

      题目链接: 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掉,妈的智障

  • 相关阅读:
    [spring]AOP(切面)编程
    [spring]基于注解的spring配置
    [redis]redis五种数据类型和应用场景
    [redis]redis实现分页的方法
    [zookeeper]ZooInspector的使用
    [log4j]SLF4J+log4j的使用
    [zookeeper]依赖jar的问题
    导出word功能,用html代码在word中插入分页符
    jq实现千分位的转换
    oracle 创建表空间及oracle 11g表空间之最大最小
  • 原文地址:https://www.cnblogs.com/FriskyPuppy/p/7599249.html
Copyright © 2011-2022 走看看