\[Preface
\]

大概在半年前出过这道(((

然后当天读完这题,把自己写的 std 改了一下 ll 和特判信息交上去就 A 了。

捡了个大便宜。

\[Description
\]

你一开始有 \(n\) 瓶快乐水。

有 \(m\) 个附属品,每喝一瓶快乐水就可以得到这 \(m\) 个附属品各 \(1\) 个,若有 \(a[i]\) 个附属品 \(i\) ,就可以再换一瓶快乐水。

问一共可以喝多少瓶快乐水。若可以无限白嫖就输出 Inf

\[Solution
\]

一瓶一瓶处理快乐水显然是会 TLE 的,所以我们要批量处理快乐水。

\(~\)

我们开个桶 cnt[x] 表示 " 附属品 \(x\) 的数量 " 。

每次我们批量处理当前的 \(n\) 瓶快乐水:

  1. ans += n ,表示喝掉了当前的 \(n\) 瓶快乐水。
  2. cnt[i] += n ,表示得到了这 \(m\) 个附属品各 \(n\) 个。
  3. n += cnt[i] / a[i], cnt[i] %= a[i] ,表示用把能换的快乐水都换了。

直到 \(n=0\) ,此时 \(ans\) 就是所求。

\(~\)

当然,还有无限白嫖快乐水的情况,在该情况下,\(n\) 永远不会等于 \(0\) ,也就是说快乐水会越喝越多了。

稍加分析一下我们发现:**若不能无限白嫖,在任意时刻快乐水的数量不会大于等于初始给出的 \(n\) **。

想想看,如果可以无限白嫖,就相当于说,你用 \(n\) 瓶快乐水经过若干轮变换,换到了 \(k\) \((n \leq k)\) 瓶快乐水,那你再在这 \(k\) 瓶快乐水中选出 \(n\) 瓶快乐水再进行若干轮变换,又可以得到 \(k\) 瓶快乐水,如此往复,你总是可以白嫖快乐水。

于是就可以用上述性质判断是否无限白嫖快乐水了。

\[Code
\]

#include<cstdio>

#define RI register int

using namespace std;

inline int read()
{
int x=0,f=1;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-f;s=getchar();}
while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
return x*f;
} const int N=100100,M=10; int n,m,lim; int a[N],cnt[M]; long long ans; int main()
{
n=read(),m=read(); lim=n; for(RI i=1;i<=m;i++)
a[i]=read(); while(n)
{
ans+=n; for(RI i=1;i<=m;i++)
cnt[i]+=n; n=0; for(RI i=1;i<=m;i++)
n+=cnt[i]/a[i],cnt[i]%=a[i]; if(n>=lim)
{
puts("Inf");
return 0;
}
} printf("%lld\n",ans); return 0;
}

\[Thanks \ for \ watching
\]

题解【Luogu6022 快乐水】的更多相关文章

  1. Codeforces Round #352 (Div. 2),A题与B题题解代码,水过~~

    ->点击<- A. Summer Camp time limit per test 1 second memory limit per test 256 megabytes input s ...

  2. 题解-UOJ284 快乐游戏鸡

    Problem uoj 题意大意: 一棵树,点权\(w_i\),每次玩家可以在树上行走,一条边需要\(1\)的时间,只能往儿子走.每次游戏需要从\(s\)到\(t\). 玩家有一个总死亡次数,初始为\ ...

  3. 华东交通大学2018年ACM“双基”程序设计竞赛部分题解

    链接:https://ac.nowcoder.com/acm/contest/221/C来源:牛客网 C-公式题(2) 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其 ...

  4. Codeforces Round #368 (Div. 2) A. Brain's Photos (水题)

    Brain's Photos 题目链接: http://codeforces.com/contest/707/problem/A Description Small, but very brave, ...

  5. Codeforces Round #339 (Div. 2) A. Link/Cut Tree 水题

    A. Link/Cut Tree 题目连接: http://www.codeforces.com/contest/614/problem/A Description Programmer Rostis ...

  6. codevs 2495 水叮当的舞步IDA*

    /* 比较简单的A* 估价函数很简单就是除了左上角的联通快之外的不同的个数 加上迭代 好像答案最多在16步之内出解 这样裸裸的交上去是50分 在考虑剪枝 每个选颜色的时候一定是选左上角联通快附近的颜色 ...

  7. What Is Your Grade?(水,排序)

    What Is Your Grade? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  8. [Usaco2008 Open] Clear And Present Danger 寻宝之路[最短路][水]

    Description     农夫约翰正驾驶一条小艇在牛勒比海上航行.     海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛.一 张藏宝图上说,如果他的路程上 ...

  9. [Usaco2008 Dec]Hay For Sale 购买干草[01背包水题]

    Description     约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草.  顿因有H(1≤H≤5000)包 ...

随机推荐

  1. Winform PPT切换图片效果

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. 【转】推荐!国外程序员整理的Java资源大全

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  3. JAVA封装、继承、多态

    封装 1.概念: 将类的某些信息隐藏在类的内部,不允许外部程序访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: a.只能通过规定的方法访问数据 b.隐藏类的实例细节,方便修改和实 ...

  4. Core 定时任务之HangFire

    ASP.NET Core 使用 Hangfire 很简单,首先,Nuget 安装程序包 > install-package Hangfire -pre 然后ConfigureServices添加 ...

  5. <a>标签的href和onclick属性【转】

    1链接的onclick 事件被先执行,其次是href属性下的动作(页面跳转,或 javascript 伪链接): 2假设链接中同时存在href 与onclick,如果想让href 属性下的动作不执行, ...

  6. Linux环境下Mysql开启远程访问权限

    如何通过Window的数据库可视化工具远程连接装在Linux上的Mysql呢?可以按照以下步骤逐一确认! 检查监听端口是否存在 netstat -ntlp |grep mysql 检查Mysql配置配 ...

  7. macOS 10.11.* 安装scrapy

    1.安装brew,然后修改brew源为某高校 2.更新python brew install python 3.安装pip 4.安装scrapy,这里肯定会有一个坑,之前在网上看到10.11开启了什么 ...

  8. Alibaba Nacos 服务发现组件集群部署

    前面学习了单机模式下的启动,生产环境中部署nacos肯定是使用集群模式cluster保证高可用. 官方文档的集群部署推荐使用VIP+域名模式,把所有服务列表放到一个vip下面,然后挂到一个域名下面. ...

  9. BigInteger的权限设计

    通过储存菜单权限的一个字段(id自定义也是可以的) 1 将选中菜单树的id转换成字符数组的形式, 进行BigInteger对权限进行2的权的和计算 public static BigInteger s ...

  10. visul studio 使用git扫盲帖。

    写给和一样的菜B 有必要知道的命令: git rm --cached (文章底部有git命令大全) 创建.gitignore文件 windows版: 在项目根目录下面创建gitignore.txt文件 ...