题解【Luogu6022 快乐水】
\]
大概在半年前出过这道(((
然后当天读完这题,把自己写的 std 改了一下 ll 和特判信息交上去就 A 了。
捡了个大便宜。
\]
你一开始有 \(n\) 瓶快乐水。
有 \(m\) 个附属品,每喝一瓶快乐水就可以得到这 \(m\) 个附属品各 \(1\) 个,若有 \(a[i]\) 个附属品 \(i\) ,就可以再换一瓶快乐水。
问一共可以喝多少瓶快乐水。若可以无限白嫖就输出 Inf 。
\]
一瓶一瓶处理快乐水显然是会 TLE 的,所以我们要批量处理快乐水。
\(~\)
我们开个桶 cnt[x] 表示 " 附属品 \(x\) 的数量 " 。
每次我们批量处理当前的 \(n\) 瓶快乐水:
- 令
ans += n,表示喝掉了当前的 \(n\) 瓶快乐水。 - 令
cnt[i] += n,表示得到了这 \(m\) 个附属品各 \(n\) 个。 - 令
n += cnt[i] / a[i], cnt[i] %= a[i],表示用把能换的快乐水都换了。
直到 \(n=0\) ,此时 \(ans\) 就是所求。
\(~\)
当然,还有无限白嫖快乐水的情况,在该情况下,\(n\) 永远不会等于 \(0\) ,也就是说快乐水会越喝越多了。
稍加分析一下我们发现:**若不能无限白嫖,在任意时刻快乐水的数量不会大于等于初始给出的 \(n\) **。
想想看,如果可以无限白嫖,就相当于说,你用 \(n\) 瓶快乐水经过若干轮变换,换到了 \(k\) \((n \leq k)\) 瓶快乐水,那你再在这 \(k\) 瓶快乐水中选出 \(n\) 瓶快乐水再进行若干轮变换,又可以得到 \(k\) 瓶快乐水,如此往复,你总是可以白嫖快乐水。
于是就可以用上述性质判断是否无限白嫖快乐水了。
\]
#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;
}
\]
题解【Luogu6022 快乐水】的更多相关文章
- Codeforces Round #352 (Div. 2),A题与B题题解代码,水过~~
->点击<- A. Summer Camp time limit per test 1 second memory limit per test 256 megabytes input s ...
- 题解-UOJ284 快乐游戏鸡
Problem uoj 题意大意: 一棵树,点权\(w_i\),每次玩家可以在树上行走,一条边需要\(1\)的时间,只能往儿子走.每次游戏需要从\(s\)到\(t\). 玩家有一个总死亡次数,初始为\ ...
- 华东交通大学2018年ACM“双基”程序设计竞赛部分题解
链接:https://ac.nowcoder.com/acm/contest/221/C来源:牛客网 C-公式题(2) 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其 ...
- Codeforces Round #368 (Div. 2) A. Brain's Photos (水题)
Brain's Photos 题目链接: http://codeforces.com/contest/707/problem/A Description Small, but very brave, ...
- Codeforces Round #339 (Div. 2) A. Link/Cut Tree 水题
A. Link/Cut Tree 题目连接: http://www.codeforces.com/contest/614/problem/A Description Programmer Rostis ...
- codevs 2495 水叮当的舞步IDA*
/* 比较简单的A* 估价函数很简单就是除了左上角的联通快之外的不同的个数 加上迭代 好像答案最多在16步之内出解 这样裸裸的交上去是50分 在考虑剪枝 每个选颜色的时候一定是选左上角联通快附近的颜色 ...
- What Is Your Grade?(水,排序)
What Is Your Grade? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- [Usaco2008 Open] Clear And Present Danger 寻宝之路[最短路][水]
Description 农夫约翰正驾驶一条小艇在牛勒比海上航行. 海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛.一 张藏宝图上说,如果他的路程上 ...
- [Usaco2008 Dec]Hay For Sale 购买干草[01背包水题]
Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包 ...
随机推荐
- GitHub上的计算机视觉学习资料推荐
9月份将要读研,导师是做cv的,最近学习时找到了不少的计算机视觉的资料,记录一下,同时也分享给需要的朋友 assmdx/ComputerVisionDoc AceCoooool/interview-c ...
- C#反射与特性(七):自定义特性以及应用
目录 1,属性字段的赋值和读值 2,自定义特性和特性查找 2.1 特性规范和自定义特性 2.2 检索特性 3,设计一个数据验证工具 3.1 定义抽象验证特性类 3.2 实现多个自定义验证特性 3.3 ...
- C语言之运算符和表达式
运算符优先级: 求余运算用法: 声明变量的名字和类型: 变量的类型决定占用内存空间的大小.数据的存储形式,合法的表数范围.可参与的运算种类.变量名标识了内存中的一个存储单元. 自动类型转换: 运算符和 ...
- BFT-SMaRt:用Java做节点间的可靠信道
目录 一.引子 二.名词统一 1. 节点id 2. 节点 3. 本地节点 4. 配置域 5. TTP 6. 陌生域 三.节点服务类 四.节点通信系统概览 五.节点通信层准备 1. 创建socket服务 ...
- 如何实施DevOps
对于长期在孤立的架构下工作的组织来说,转移到协作式DevOps系统似乎是难以成功的.为了进一步提高效率,必须改变观念,并进行团队文化改变.例如:许多人认为只有自动化工具才能解决DevOps,其实这是不 ...
- kubernetes concepts -- Replication Controller
Edit This Page ReplicationController NOTE: A Deployment that configures a ReplicaSet is now the reco ...
- [bzoj2038] [洛谷P1494] [2009国家集训队] 小Z的袜子(hose)
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只 ...
- 5分钟搭建网站实时分析:Grafana+日志服务实战
原文地址:https://yq.aliyun.com/articles/227006 阿里云日志服务是针对日志类数据一站式服务,用户只需要将精力集中在分析上,过程中数据采集.对接各种存储计算.数据索引 ...
- 玩转Django2.0---Django笔记建站基础十二(Django项目上线部署)
第十二章 Django项目上线部署 目前部署Django项目有两种主流方案:Nginx+uWsGI+Django或者Apache+uWSGI+Django.Nginx作为服务器最前端,负责接收浏览器的 ...
- 个人第三次作业——结对编程 (姜玖林&于丁)
博客要求 Github项目地址:https://github.com/zhibihuayue/PairProgramming 作业地址 : https://www.cnblogs.com/cheris ...