打卡信奥刷题(3056)用C++实现信奥题 P6767 [BalticOI 2012/2020] 玫瑰 (Day0)

张开发
2026/4/6 5:07:44 15 分钟阅读

分享文章

打卡信奥刷题(3056)用C++实现信奥题 P6767 [BalticOI 2012/2020] 玫瑰 (Day0)
P6767 [BalticOI 2012/2020] 玫瑰 (Day0)题目背景因为特殊原因本题目另外24 2424组数据请在 这里 提交。Valentine 是人赢。题目描述现在 Valentine 要给他的N NN个妹子买玫瑰花现在 Valentine 面前有两家店每一家店有无数朵玫瑰花但是他们按束卖。第一家店一束花里有A AA朵每一束花要用B BB块钱。第二家店一束花里有C CC朵每一束花要用D DD块钱。求 Valentine 至少买N NN朵花最少需要花多少钱。至少可以这么理解假如M N MNMN但是买M MM朵花的钱比买N NN朵花的少Valentine 就会买M MM朵花并把多出来的花给其他妹子没错Valentine 很花心。输入格式一行五个整数N , A , B , C , D N,A,B,C,DN,A,B,C,D意义见题目所述。输出格式一行一个整数代表最小花费。输入输出样例 #1输入 #15 1 4 3 6输出 #112输入输出样例 #2输入 #222 2 3 10 14输出 #231说明/提示样例说明对于样例1 11Valentine 可以选择在第二家店买2 22束花。对于样例2 22Valentine 可以选择在第一家店买1 11束花在第二家店买2 22束花。数据规模与约定本题采用捆绑测试。Subtask 120 ptsN , A , B , C , D ≤ 1000 N,A,B,C,D \le 1000N,A,B,C,D≤1000。Subtask 280 pts无特殊限制。对于100 % 100\%100%的数据1 ≤ N ≤ 10 15 1 \le N \le 10^{15}1≤N≤10151 ≤ A , B , C , D ≤ 10 5 1 \le A,B,C,D \le 10^51≤A,B,C,D≤105保证答案不超过10 18 10^{18}1018。说明翻译自 BalticOI 2020 Day0 B Roses。与 BalticOI 2012 Day0 A 内容一致。C实现#includebits/stdc.h#defineRregister#definegc()getchar()#definelllonglong#defineldlongdoubleusingnamespacestd;inlinellrd(){R ll x0;Rcharcgc();while(c9||c0)cgc();while(c0c9)x(x1)(x3)(c^48),cgc();returnx;}// 快读加速intmain(){ll nrd(),ard(),brd(),crd(),drd(),ans1e18;ld xb*1.0/a,yd*1.0/c;if(xy)swap(a,c),swap(b,d);ll s(na-1)/a;for(R ll is,k,f100000;i0f;i--,f--)// 用 f 来限制循环次数{ki*bmax((ll)0,n-i*ac-1)/c*d;if(kans)ansk;}printf(%lld\n,ans);return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容

更多文章