zoukankan      html  css  js  c++  java
  • 2021年1月30日个人赛补题报告

    C题:

    这个题的数据开到了10^18,很明显不能暴力。正确的做法是从1到n进行二分查找,对于每一个查找的值进行暴力模拟。之前只是单纯的写过二分算法,但并没有在实际做题中应用过。

    代码如下:

    #include<iostream>

    #include<algorithm>

    #include<map>

    #include<set>

    #include<stack>

    using namespace std;

    #define ll long long

    ll n;

    ll f(ll x)

    {

        ll i,j,k;

        ll tem=n;

        ll sum=0;

        while(tem>0)

        {

            if(tem<x)

            {

                sum+=tem;

                tem-=tem;

            }

            else

            {

                tem-=x;

                sum+=x;

            }

            if(tem>=10)

            {

                ll chi=tem/10;

                tem-=chi;

            }

        }

        return sum;

    }

    int main()

    {

        ll i,j,k;

        cin>>n;

        ll l,r;

        l=1;

        r=n;

        ll mid=(l+r)/2;

        ll p;

        if(n&1)

        {

            p=(n+1)/2;

        }

        else

        {

            p=n/2;

        }

        while(l<r)

        {

            mid=(l+r)/2;

          if(f(mid)>=(n+1)/2)

          {

              r=mid;

          }

          else

          {

              l=mid+1;

          }

        }

        cout<<r<<endl;

        return 0;

    }

    D题:

  • 相关阅读:
    抽象工厂模式
    外观模式
    策略模式
    状态模式
    观察者模式
    装饰者模式
    模板方法模式
    适配器模式
    中介者模式
    组合模式
  • 原文地址:https://www.cnblogs.com/chengxvzhishen/p/14366501.html
Copyright © 2011-2022 走看看