博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题解 CF939B 【Hamster Farm】
阅读量:5269 次
发布时间:2019-06-14

本文共 1526 字,大约阅读时间需要 5 分钟。

题目分析

实质上就是求余数,找到n mod a[i] 的最小值,然后把 i 与 n/a[i] 输出。就是一道纯粹的模拟题,不过因为翻译,要注意隐隐约约有10e18的数据范围,一定要小心,用long long才行(一开始吓得我想用高精(雾))。

主要思路

枚举出每一个 a[i] 然后让 n mod a[i] ,去找最小值。

代码实现

第一种方法:(有点像楼上dalao的)

PS:这个可以被优化为第二种方法

时间复杂度O(k),空间复杂度O(k);

#include
#include
using namespace std;#define ll long long //long long打起来有点费劲(偷懒#define mn 100010#define go(i,j,n,k) for(register ll i=j;i<=n;i+=k)//循环偷懒inline ll read(){//读入优化 ll x=0,f=1;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')f=-f;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}const ll inf=9223372036854775807;//初始化最小值用的ll n,k,a[mn],mi,mii;//n 仓鼠的总数 k 笼子种数 //a[]记录所有笼子可装仓鼠的只数 mi 记录最佳的笼子剩余的只数//mii 记录最佳笼子的编号int main(){ n=read();k=read(); go(i,1,k,1){ a[i]=read(); }//读入 mi=inf;//初始化最小值(最佳) go(i,1,k,1){ if(n%a[i]

第二种方法:(简单的优化)

(理论)

时间复杂度:O(k) 空间复杂度:O(1);

重复的就不多讲了,以下主要讲优化

#include
#include
using namespace std;#define ll long long#define mn 100010#define go(i,j,n,k) for(register ll i=j;i<=n;i+=k)inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')f=-f;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}const ll inf=9223372036854775807;ll n,k,a,m,mi,mii;//a 变为了单个的变量 m 记录当前最佳笼子的a的值int main(){ n=read();k=read(); mi=inf; go(i,1,k,1){//变为一个循环 a=read();//读入不变 if(n%a

后记

不知为什么优化后占用内存还会这么多,,,

第二次发题解请大佬多多指教,,,

转载于:https://www.cnblogs.com/yizimi/p/10056206.html

你可能感兴趣的文章
MySQL储存过程详解
查看>>
青花瓷使用
查看>>
小画家开发笔记
查看>>
Python_002_Python语言基础
查看>>
4.6上午
查看>>
linux之sort用法
查看>>
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Redis-jedis模拟多线程购票
查看>>
聊一聊 Flex 中的 flex-grow、flex-shrink、flex-basis
查看>>
Gcc 安装过程中部分配置
查看>>
Logparser介绍
查看>>
Js实现客户端表单的验证
查看>>
python使用input()来接受字符串时一直报错“xxx is not defined”
查看>>
哈啊哈
查看>>
vue-router在ie9及以下history模式支持
查看>>
linux基础命令--lsof
查看>>
Mysql limit
查看>>
加解密与数据校验
查看>>
stm8s_IAP_xmode串口升级
查看>>
usb 编程知识 总结
查看>>