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--){
        scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
        ans=ceil(1.0*a/c);
        ans+=ceil(1.0*b/d);
        if(ans>k)puts("-1");
        else printf("%d %d\n",int(ceil(1.0*a/c)),int(ceil(1.0*b/d)));
    }
}

原文地址:https://www.cnblogs.com/LHYLHY/p/11675263.html

时间: 2024-10-12 11:39:55

Codeforces Round #592 (Div. 2) CF1244A Pens and Pencils题解的相关文章

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) 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")

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 #530 (Div. 2) (前三题题解)

总评 今天是个上分的好日子,可惜12:30修仙场并没有打... A. Snowball(小模拟) 我上来还以为直接能O(1)算出来没想到还能小于等于0的时候变成0,那么只能小模拟了.从最高的地方进行高度的模拟,如果遇到石头就去判断一下会不会小于0其他没有什么好说的了 代码 #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int

Codeforces Round #590 (Div. 3) Editorial

Codeforces Round #590 (Div. 3) Editorial 题目链接 官方题解 不要因为走得太远,就忘记为什么出发! Problem A 题目大意:商店有n件商品,每件商品有不同的价格,找出一个最小的可能值price,使得price * n >= sum,sum指的是原来商品价格的总和. 知识点:模拟 思路:求出sum/n向上取整即可,有两种方法.一是使用ceil()函数,但注意ceil()返回的是向上取整后的浮点数,所以要进行强制类型转换:二是直接向下取整,然后用if语句

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个人拿

Codeforces Round #424 (Div. 2) C. Jury Marks(乱搞)

题目链接:Codeforces Round #424 (Div. 2) C. Jury Marks 题意: 给你一个有n个数序列,现在让你确定一个x,使得x通过挨着加这个序列的每一个数能出现所有给出的k个数. 问合法的x有多少个.题目保证这k个数完全不同. 题解: 显然,要将这n个数求一下前缀和,并且排一下序,这样,能出现的数就可以表示为x+a,x+b,x+c了. 这里 x+a,x+b,x+c是递增的.这里我把这个序列叫做A序列 然后对于给出的k个数,我们也排一下序,这里我把它叫做B序列,如果我

[Codeforces] Round #352 (Div. 2)

人生不止眼前的狗血,还有远方的狗带 A题B题一如既往的丝帛题 A题题意:询问按照12345678910111213...的顺序排列下去第n(n<=10^3)个数是多少 题解:打表,输出 1 #include<bits/stdc++.h> 2 using namespace std; 3 int dig[10],A[1005]; 4 int main(){ 5 int aa=0; 6 for(int i=1;;i++){ 7 int x=i,dd=0; 8 while(x)dig[++dd