5 条题解
-
6
</span>#include <bits/stdc++.h> using namespace std; struct P { int a,b; }s[5]; bool check(P q,P p) { if(p.b !=q.b)return q.b<p.b; else return q.a<p.a; } int main() { int n; cin >> n; for(int i = 1;i<=3;i++) { cin >> s[i].a >> s[i].b; int x=s[i].a,y=s[i].b; while(s[i].a<n) { s[i].a+=x; s[i].b+=y; } } sort(s+1,s+4,check); cout<<s[1].b; } //总体来说还挺简单的?上课讲了的,如果懒得去翻就看我的吧 //已AC,点个赞吧
-
2
题前吐槽
这题也太简单了吧,就是个 ,楼下还要个带cmp的sort!!! 楼下这是当成不定数量的吗?怎么弄也比那个简单啊!这叫总体简单!!!其实有了ceil就不用模拟一袋一袋的买了。
题解
这题太简单了,没得说,就是输入,然后模拟三个价格,注意因为购买数量只有是最小的大于 的数才有可能花费最少(用ceil)。
科普ceil
ceil就是一个函数,传入小数,传出比该小数大或等于的最小整数。 举例子: ceil(5.25) = 6 ceil(7.00) = 7 ceil(4.011) = 5
#include <bits/stdc++.h> using namespace std; int n, a1, a2, a3, b1, b2, b3; int c1, c2, c3; int main() { scanf("%d%d%d%d%d%d%d", &n, &a1, &b1, &a2, &b2, &a3, &b3); c1 = ceil(1.0 * n / a1) * b1; c2 = ceil(1.0 * n / a2) * b2; c3 = ceil(1.0 * n / a3) * b3; printf("%d\n", min(c1, min(c2, c3))); return 0; }
延伸与拓展
如果把题目修改一下呢?比如说有 个包装的铅笔(),总不能还手动吧…… 观察一下代码,会发现神似,只有a1、b1、c1之类的需要改,妥妥的循环啊!
#include <bits/stdc++.h> using namespace std; int n, k, a, b, c, ans = 1e9; // 都可以不用数组了,因为和下一个没关系 int main() { scanf("%d%d", &n, &k); for (int i = 1; i <= k; i++) { scanf("%d%d", &a, &b); c = ceil(1.0 * n / a) * b; // 核心 ans = min(ans, c); // 求值 } printf("%d\n", ans); return 0; }
时间复杂度 ,空间复杂度不用数组 。 如果 ,那么基本上都可以,但是注意如果 、 等过大,需要开 long long。
-
1
hetao28428387
LV 9
P1392[入门][NOIP2016普及组]买铅笔
代码:
#include<bits/stdc++.h> using namespace std; int main(){ int a,b,c,d,e,f,g,h,i,j;cin>>a>>b>>e>>c>>f>>d>>g; h=ceil(1.0*a/b)*e; i=ceil(1.0*a/c)*f; j=ceil(1.0*a/d)*g; cout<<min(h,min(i,j)); return 0; }
- 1
信息
- ID
- 1392
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 568
- 已通过
- 237
- 上传者