\[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. POJ 3304 Segments(判断直线与线段是否相交)

    题目传送门:POJ 3304 Segments Description Given n segments in the two dimensional space, write a program, ...

  2. iOS多线程编程原理及实践

    摘要:iOS开发中,开发者不仅要做好iOS的内存管理,而且如果你的iOS涉及多线程,那你也必须了解iOS编程中对多线程的限制,iOS主线程的堆栈大小为1M,其它线程均为512KB,且这个限制开发者是无 ...

  3. Java项目之客户信息管理软件

    模拟实现基于文本界面的客户信息管理软件,该软件能够实现对客户对象的插入. 修改和删除(用数组实现),并能够打印客户明细表. 项目采用分级菜单方式.主菜单如下: “添加客户”的界面及操作过程如下所示: ...

  4. Bonny手机APP试用体验

    在上周四(即6月13日)下午,应王建民老师的邀请,我参观了学长学姐们的软件设计评比以及专业交流的活动,看到了形形色色学长学姐设计出的软件我觉得非常有趣,并对学长学姐们设计的软件的种类与功能感到由衷的钦 ...

  5. python列表(数组)

    列表(list)  就是 数组 - 列表是Python中的一个对象 - 对象(object)就是内存中专门用来存储数据的一块区域 - 之前我们学习的对象,像数值,它只能保存一个单一的数据 - 列表中可 ...

  6. Spring Boot2 系列教程 (十七) | 整合 WebSocket 实现聊天室

    微信公众号:一个优秀的废人.如有问题,请后台留言,反正我也不会听. 前言 昨天那篇介绍了 WebSocket 实现广播,也即服务器端有消息时,将消息发送给所有连接了当前 endpoint 的浏览器.但 ...

  7. 安装Mysql 8.0的艰难体验

    背景: Mysql 8.0 以后版本,在性能等方面有了很大提升,而且在自动编号.Timestamp等字段的设置上有了很方便的进步,因此在一年前即开始将原有的基于5.5版本的服务器逐渐向8.0转移.但转 ...

  8. 初探ASP.NET Core 3.x (1) - 关于ASP.NET Core

    I 什么是ASP.NET Core ASP.NET is an open source web framework, created by Microsoft, for building modern ...

  9. Python工具类(一)—— 操作Mysql数据库

    如何调用直接看__main__函数里如何调用此工具类就阔以啦! # encoding=utf-8 import pymysql # 导入所有Mysql配置常量,请自行指定文件 from conf.se ...

  10. 创建dynamics CRM client-side (四) - Namespace Notation in JS

    我们在开发的时候会写很多functions. 但是这些functions 管理起来很麻烦. 微软内部建议我们使用namespace notation的形式管理我们的代码 // Converting f ...