题目链接:http://codeforces.com/problemset/problem/402/A

题目意思:几经辛苦,终于体明题目噶意思了 = =,完全是考验一个人是否清醒的最简便方法- -!

给出4个数,分别为k,a,b和v。k:1个box最大可以分成的section;a:需要放置的nut的个数;b:divisor的数量  v:每个section的容量。有两个约束条件:(1)每个box的section数不能超过k个; (2)放置的nut的数量不能超过v个(即不能超过section的最大容量)。注意:x个divisor可以得到x + 1个section,每个section的容量为v个。

我的做法有点麻烦。以 b 与 k - 1的关系得到两个部分: b >= k-1 和 b < k

先讨论 b >= k-1 的情况。它表示可以利用divisor来划分出更多的section,最少为 k 个,box相应的最少为1个。b / (k-1) 表示有k个section的box数,从i = 1 ~ b/(k-1) 来扫描,每个box可以装的最多nut数为k * v,当然这个过程中有可能把所有的nut装完,也有可能k个section的box数用光都不能装满。对于后者的情况,求出未消耗完的divisor数(b -= b/(k-1)*(k-1))可以划分出的section数(b+1),然后加入去接下来用到的box(有b+1个section),能装(b+1)*v个nut,假设还没装得完,那么接下来用到的box,容量都为v。依次相加直到 >= a为止。

至于 b < k-1 这种情况比较简单。它表示装得最多nut的box 数最大的section 都比 k 小。那么它能划分出的section数最大为 b+1,能装的nut数最多为 (b+1)*v,接下来如果未装满所有nut,就需要用到容量为v的box数。

 #include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std; int main()
{
int k, a, b, v, i;
while (scanf("%d%d%d%d", &k, &a, &b, &v) != EOF)
{
int sum = ;
int cnt = ;
if (b >= k-) // 情况一
{
int flag = ;
for (i = ; i <= b/(k-); i++) // 有k个section的box数
{
sum += k * v; // 每个box的容量
cnt++; // box数递增
if (sum >= a) // 不需要用完所有含k个section的box
{
flag = ;
break;
}
}
if (!flag) // 用完k个section的所有box都不能装满
{
b -= b/(k-) * (k-); // divisor有剩
sum += (b+) * v; // 紧随着的box的section数为b+1,容量相应乘v
cnt++;
while (sum < a) // 用完这个特殊的box都不能装完所有的nut
{
sum += v; // 后面要用到的box容量都为v
cnt++;
}
}
}
else // 情况二
{
sum += (b + ) * v; // 第一个box的section为b+1
cnt++;
while (sum < a) // 这个box装不完所有的nut
{
sum += v;
cnt++;
}
}
printf("%d\n", cnt);
}
}

codeforces A. Nuts 解题报告的更多相关文章

  1. codeforces 31C Schedule 解题报告

    题目链接:http://codeforces.com/problemset/problem/31/C 题目意思:给出 n 个 lessons 你,每个lesson 有对应的 起始和结束时间.问通过删除 ...

  2. Timus 2068. Game of Nuts 解题报告

    1.题目描述: 2068. Game of Nuts Time limit: 1.0 secondMemory limit: 64 MB The war for Westeros is still i ...

  3. codeforces 499B.Lecture 解题报告

    题目链接:http://codeforces.com/problemset/problem/499/B 题目意思:给出两种语言下 m 个单词表(word1, word2)的一一对应,以及 profes ...

  4. codeforces 495C. Treasure 解题报告

    题目链接:http://codeforces.com/problemset/problem/495/C 题目意思:给出一串只有三种字符( ')','(' 和 '#')组成的字符串,每个位置的这个字符 ...

  5. codeforces 490B.Queue 解题报告

    题目链接:http://codeforces.com/problemset/problem/490/B 题目意思:给出每个人 i 站在他前面的人的编号 ai 和后面的人的编号 bi.注意,排在第一个位 ...

  6. CodeForces 166E -Tetrahedron解题报告

    这是本人写的第一次博客,学了半年的基础C语言,初学算法,若有错误还请指正. 题目链接:http://codeforces.com/contest/166/problem/E E. Tetrahedro ...

  7. codeforces 489A.SwapSort 解题报告

    题目链接:http://codeforces.com/problemset/problem/489/A 题目意思:给出一个 n 个无序的序列,问能通过两两交换,需要多少次使得整个序列最终呈现非递减形式 ...

  8. codeforces 485A.Factory 解题报告

    题目链接:http://codeforces.com/problemset/problem/485/A 题目意思:给出 a 和 m,a 表示第一日的details,要求该日结束时要多生产 a mod ...

  9. codeforces 483A. Counterexample 解题报告

    题目链接:http://codeforces.com/problemset/problem/483/A 题目意思:给出一个区间 [l, r],要从中找出a, b, c,需要满足 a, b 互质,b, ...

随机推荐

  1. 邁向IT專家成功之路的三十則鐵律 鐵律四:IT人快速成長之道-複製

    相信您一定看到過現今有許多各行各業的成功人士,他們最初都是從複製別人的成功經驗開始的,就算是一位知名的歌手,有許多都是在未成名以前,先行模仿知名歌手的唱腔.舞蹈.服裝等等開始的,然後在慢慢經過自我努力 ...

  2. Android 调用.so包时报错:No implementation found for native Lxxx, java.lang.UnsatisfiedLinkError: XXX时的解决办法(转)

    问题就是在调用自己同事写的.so包时,怎么也掉不通,程序一直报错退出,错误内容就是: 1 No implementation found for native Lxxx, 2 Java.lang.Un ...

  3. C# Main(string[] args)方法参数

    Main 方法是 C# 控制台应用程序或窗口应用程序的入口点,以下是各种情况下方法参数的输入方式: 1.通过vs启动,需要在“项目属性-调试-启动选项-命令行参数”中配置参数,格式为:参数一 参数二 ...

  4. Python实战之自己主动化评论

    Python实战之自己主动化评论 玩csdn博客一个多月了,渐渐发现了一些有意思的事,常常会有人用相同的评论到处刷.不知道是为了加没什么用的积分,还是纯粹为了表达楼主好人.那么问题来了,这种无聊的事情 ...

  5. linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换

    用域名获取IP地址或者用IP获取域名 #include<stdio.h> #include<sys/socket.h> #include<netdb.h> int ...

  6. 深度解析开发项目之 03 - enum的使用

    深度解析开发项目之 03 - enum的使用 01 - 在#import和@interface之间定义typedef enum 注意: 默认是0,1,2,3 02 - 定义可以操作的数据类型的属性 0 ...

  7. Oracle SQL_杂记

    1. 查询当前用户角色,当前用户下的表权限以及所有用户表权限 desc user_role_privs;select * from user_role_privs; desc user_tab_pri ...

  8. C语言宏定义时#(井号)和##(双井号)作用

    #的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号. #define example(instr) prin ...

  9. 小白学开发(iOS)OC_ 字符串重组(2015-08-13)

    // //  main.m //  字符串重组 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All right ...

  10. php 中 isset 和empty 的区别

    昨天终于开始学习php了,这个对于我来说听着很熟悉,但是学起来很陌生的东西,尤其是课上能听明白 但是真正写起了手生,都不知道手该往哪里放了,天哪~~~ 其中课上有讲到 isset和empty的区别,现 ...