zoukankan      html  css  js  c++  java
  • 2020 10 23 个人赛

    C题:

    落了一个条件,啊啊啊,就WA了!

    思路:模拟,计算出加油站前的距离sum1和加油站后的距离sum2,然后模拟每一趟路程,如果此时的油量能够支撑到达下一趟的加油站,就不用加油,否则就需要加油,其中最后一趟需要特判(只需要和这一趟比较即可)。

    另外看题解的时候学会了位运算的意义:a<<b:  a*(2^b)   a>>b:  a/(2^b)

    代码如下:

    #include<bits/stdc++.h>

    using namespace std;

    #define ll long long

    int main()

    {

       ll n,i,j,k;

       ll a,b,f;

       cin>>a>>b>>f>>k;

       if(f>b)

       {

           cout<<-1<<endl;

           return 0;

       }

       ll sum1,sum2;

       sum1=f-0;

       sum2=a-f;

       if(sum2>b)

       {

           cout<<-1<<endl;

           return 0;

       }

       ll tank=b;

       bool flag=1;

       ll ans=0;

       for(i=0;i<k-1;i++)

       {

           if(i&1)

           {

               if(tank<sum2)

               {

                   flag=0;

                   break;

               }

               else if(tank>=(a+sum1))

               {

                   tank-=a;

               }

               else

               {

                   ans++;

                   tank=b-sum1;

               }

           }

           else

           {

               if(tank<f)

               {

                   flag=0;

                   break;

               }

               else if(tank>=(a+sum2))

               {

                   tank-=a;

               }

               else

               {

                   ans++;

                   tank=b-sum2;

               }

           }

       }

       if(i&1)

       {

           if(tank<sum2)

           {

               flag=0;

           }

           else if(tank>=sum2&&tank<a)

           {

               ans++;

           }

           else

           {

               ;

           }

       }

       else

       {

           if(tank<sum1)

           {

               flag=0;

           }

           else if(tank>=sum1&&tank<a)

           {

               ans++;

           }

           else

           {

               ;

           }

       }

       if(flag==0)

       {

           cout<<-1<<endl;

       }

       else

       {

           cout<<ans<<endl;

       }

        return 0;

    }

  • 相关阅读:
    创造别人想要的东西(2)----创业15问
    创造别人想要的东西(1)----创业的本质
    有点迷茫
    普林斯顿大学算法公开课(1)----介绍
    工业控制系统信息安全与信息安全、功能安全的区别【转自工控工程网】
    十条概念区分信息安全与隐私保护【转自安全牛】
    NBT(NetBIOS Over TCP)名称解析概述
    SMB协议概述
    PCI DSS合规建设ASV扫描介绍
    信息安全等级测评师(初级 技术)
  • 原文地址:https://www.cnblogs.com/chengxvzhishen/p/13908967.html
Copyright © 2011-2022 走看看