zoukankan      html  css  js  c++  java
  • CF1244C: The Football Season

    CF1244C:The Football Season

    题意描述:

    • 给定(n,p,w,d),求(x*w+y*d==p)
    • ((x+y)<=n)
    • 数据范围:
      • ((1leq nleq10^{12},0leq pleq10^{17},1leq dleq wleq10^5))

    思路:

    • 求解目标: (x*w+y*d=p)

    • 考虑存在一组解

      • [left{ egin{array} =x_0 \y_0=k*w+v(0<v<w)\ end{array} ight. ]

    • 则有

      • (x_0*w+y_0*d=p)
      • (x_0*w+(k*w+v)*d=p)
      • (x_0*w+k*d*w+v*d=p)
      • ((x_0+k*d)*w+v*d=p)
    • 所以存在一组解

      • [left{ egin{array} =x=x_0+k*d \y=v\ end{array} ight. ]

    • 并且由于(w>d)

      • (x+y=x_o+k*d+v<x_0+k*w+v)
    • 前者比后者更可能成为答案

    • (x+y)更有可能小于等于(n)

    • 所以直接枚举所有的(v)就好,又因为((0<v<w)),所以最多枚举(1e5)

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    ll n, p, w, d;
    int main()
    {
        cin >> n >> p >> w >> d;
        for(ll y = 0, x; y < w; y++){
            if((p-d*y)%w==0) x = (p-d*y)/w;
            if(x >= 0 && x + y <= n){
                cout << x << " " << y << " " << n-x-y << endl;
                return 0;
            }
        }
        puts("-1");
        return 0;
    }
    
  • 相关阅读:
    avalon background-image写法
    eslint 规则
    性能优化 && 用户体验
    gif
    react 生命周期
    git reset
    js 正则表达式
    大小写问题
    python中的负数取模问题(一个大坑)
    python中的__init_subclass__是什么?
  • 原文地址:https://www.cnblogs.com/zxytxdy/p/11670509.html
Copyright © 2011-2022 走看看