Codeforces Round #592 (Div. 2) C - The Football Season(推公式)

?? ?? ??

题意加题解:

//x*w+y*d=p;
//x+y+z=0
int main()
{
    ll n,p,w,d;
    cin>>n>>p>>w>>d;
    ll y=0;
    while(y<w&&(p-d*y)%w) ++y;
    if(y==w) return puts("-1"),0;
    ll x=(p-d*y)/w;
    if(x<0||x+y>n) return puts("-1"),0;
    cout<<x<<" "<<y<<" "<<n-x-y<<" ";
    //stop;
    return 0;
}

原文地址:https://www.cnblogs.com/Herlo/p/12111925.html

时间: 2024-10-28 16:26:31

Codeforces Round #592 (Div. 2) C - The Football Season(推公式)的相关文章

Codeforces Round #592 (Div. 2)

D. Paint the Tree 题意: 给出一棵树,有三种颜色,要求任意链上的三点的颜色是不一样的,每个点图3种颜色都有自己的花费值,问最小的花费 Solution: 显然一个点度超过2,那么这3个点颜色都不同,无解 所以度都为1,2.树退化成链. 确定了第1,2个,第3个点也唯一确定了(不和1,2的一样),那第4个也出来了 所以两个点就能确定所有点.枚举前两个点颜色就行 /**/ #include <cstdio> #include <cstring> #include &l

Codeforces Round #592 (Div. 2) CF1244A Pens and Pencils题解

题目链接 入门题,求\(\lceil\frac{a}{c}\rceil\)与\(\lceil\frac{b}{d}\rceil\),判断和是否大于\(k\),大于输出\(-1\),小于等于则输出两数.唯一要注意的一点就是\(double\)与\(int\)类型之间的转换. #include<cstdio> #include<cmath> int a,t,b,c,d,k,ans; int main(){ scanf("%d",&t); while(t--)

Codeforces Round #592 (Div. 2) E

给你一个数组,你最多可以进行k次操作,每次操作可以使一个数+1或者-1,问操作之后数组的极差最小可能是多少 利用map来模拟移动,可以观察到每次应该选择数量少的一组数让他们进行移动是最优的 int main(){ int n; ll k; cin >> n >> k; vector<int> a(n); map<int,int> ls; for(int i = 0 ; i < n ; i++) cin >> a[i],ls[a[i]]++;

Codeforces Round #271 (Div. 2) D. Flowers (递推 预处理)

We saw the little game Marmot made for Mole's lunch. Now it's Marmot's dinner time and, as we all know, Marmot eats flowers. At every dinner he eats some red and white flowers. Therefore a dinner can be represented as a sequence of several flowers, s

Codeforces Round #246 (Div. 2) B. Football Kit

题目的意思是求出每个队穿主场衣服和客场衣服的次数 每个队作为主场的次数是n-1,作为客场的次数是n-1 当每个队打主场的时候肯定穿的主场衣服 当每个队打客场时,如果客场与主场的衣服不同,则穿客场衣服   如果客场与主场的衣服相同,则穿主场衣服 则只需要标记主场每种衣服有多少球队,当作为客场时查找与客场颜色相同的主场球队有多少即可 #include <iostream> #include <map> #include <vector> #include <algor

Codeforces Round #246 (Div. 2)

A.Choosing Teams 水题 #include <cstdio> #include <cstring> using namespace std; int main() { int n, k, ans, i, x; scanf("%d%d",&n,&k); ans = 0; for(i=0; i<n; ++i) { scanf("%d",&x); if(5-x >= k) ans++; } ans

Codeforces Round #258 (Div. 2/C)/Codeforces451C_Predict Outcome of the Game(枚举)

解题报告 http://blog.csdn.net/juncoder/article/details/38102391 题意: n场比赛其中k场是没看过的,对于这k场比赛,a,b,c三队赢的场次的关系是a队与b队的绝对值差d1,b队和c队绝对值差d2,求是否能使三支球队的赢的场次相同. 思路: |B-A|=d1 |C-B|=d2 A+B+C=k 这样就有4种情况,分别是: B>A&&C<B B>A&&C>B B<A&&C<

Codeforces Round #428 (Div. 2)

Codeforces Round #428 (Div. 2) A    看懂题目意思就知道做了 #include<bits/stdc++.h> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") #define rep(i,a,b) for (int i=a; i<=b; ++i) #define per(i,b,a) for (int i=b; i>=a; --i

Codeforces Round #424 (Div. 2) D. Office Keys(dp)

题目链接:Codeforces Round #424 (Div. 2) D. Office Keys 题意: 在一条轴上有n个人,和m个钥匙,门在s位置. 现在每个人走单位距离需要单位时间. 每个钥匙只能被一个人拿. 求全部的人拿到钥匙并且走到门的最短时间. 题解: 显然没有交叉的情况,因为如果交叉的话可能不是最优解. 然后考虑dp[i][j]表示第i个人拿了第j把钥匙,然后 dp[i][j]=max(val(i,j),min(dp[i-1][i-1~j]))   val(i,j)表示第i个人拿