洛谷 P4571 BZOJ 2257 [JSOI2009]瓶子和燃料
> 上面hint那里是选择第2个瓶子和第3个瓶子
Time limit 10000 ms
Memory limit 131072 kB
OS Linux
Source Jsoi2009
吐槽
故事是这样的:我本来要写下面列表最后那题题树剖,然后草稿纸上思考了好久也没有想出来怎么在区间更新的同时维护gcd,于是查了查,找到了下面列表的倒数第二题,各处题解都说题意显然是区间gcd,但盯着题面并没有看出哪里有gcd,反而想到的是这题——[USACO1.4]母亲的牛奶 Mother's Milk。记搜?之后又找到了这题,终于知道小z的加油站怎么倒油了。
- [x] BZOJ 2257 [JSOI2009]瓶子和燃料
- [ ] BZOJ 5028 小z的加油站
- [ ] CodeChef DGCD Dynamic GCD
博客园居然不支持markdown待办事项
解题思路
题目应该再加一句话:\(k\leqslant n\)。倒燃料的方式类似更相减损,减到不能减就是火星人付出的最少的燃料了。我看这里看懂的
由于数据范围不大,\(n\) 最大才1k,每个数字最大为\(10^9\),所以可以暴力找因数,复杂度为\(O(n\sqrt{\max {a_i}})\)。另外还需要统计所有因数的出现次数,直接用map就好,复杂度就再加个\(\log n\times \sum d(a_i)\),其中\(d(a_i)\)表示\(a_i\)的因子总数。
源代码
#include<map>
#include<cstdio>
int n,k;
std::map<int,int> m;//离散化因数
std::map<int,int>::iterator it;
int main()
{
scanf("%d%d",&n,&k);
while(n--)
{
int a;
scanf("%d",&a);
for(int j=1;j*j<=a;j++)//枚举因子
{
if(a%j==0)
{
m[j]++;
if(a!=j*j) m[a/j]++;
}
}
}
for(it=m.end(),it--;it!=m.begin();it--)//一开始居然把这个循环放到了上面那个while里,WA了两发
{
if(it->second>=k)
{
printf("%d\n",it->first);
return 0;
}
}
return 0;
}
洛谷 P4571 BZOJ 2257 [JSOI2009]瓶子和燃料的更多相关文章
- [BZOJ 2257][JSOI2009]瓶子和燃料 题解(GCD)
[BZOJ 2257][JSOI2009]瓶子和燃料 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子 ...
- BZOJ 2257: [Jsoi2009]瓶子和燃料 裴蜀定理
2257: [Jsoi2009]瓶子和燃料 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- BZOJ 2257: [Jsoi2009]瓶子和燃料【数论:裴蜀定理】
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1326 Solved: 815[Submit][Stat ...
- bzoj 2257[Jsoi2009]瓶子和燃料 数论/裴蜀定理
题目 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy 的飞船上共有 N个瓶子(1< ...
- bzoj 2257: [Jsoi2009]瓶子和燃料
#include<cstdio> #include<iostream> #include<algorithm> #include<cmath> usin ...
- bzoj 2257: [Jsoi2009]瓶子和燃料【裴蜀定理+gcd】
裴蜀定理:若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立. 所以最后能得到的最小燃料书就是gcd,所以直 ...
- 2257: [Jsoi2009]瓶子和燃料
题意:给你n个数字,然后让你选出k个,这k个数字进行任意组合,问得到的最小结果是多少? 数学知识: 分析:根据题意得出数学公式: 那么,如何在n个之中选出k个呢?其实不用选,因为直接计算各个因子,然后 ...
- bzoj2257: [Jsoi2009]瓶子和燃料
2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec Memory Limit: 128 MB Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了 ...
- 【BZOJ2257】[JSOI2009]瓶子和燃料(数论)
[BZOJ2257][JSOI2009]瓶子和燃料(数论) 题面 BZOJ 洛谷 题解 很明显就是从\(n\)个数里面选\(K\)个数让他们的\(gcd\)最大. 暴力找所有数的因数,拿个什么东西存一 ...
随机推荐
- 【windows】windows安全基础
windows安全基础 安全主体 security principal 是可以进行身份验证的实体. 哪个安全主体在要求访问?这个维度可以是用户,计算机和进程.一旦确认以后,系统就会发放SID. 例子: ...
- linux下 sleep() 与 usleep()
usleep() 将进程挂起一段时间, 单位是微秒(百万分之一秒): 头文件: unistd.h 语法: void usleep(int micro_seconds); 返回值: 无 内容说明:本函数 ...
- supervisor启动elk7.4.0组件
es [program:elasticsearch] command = /srv/app/elk/elasticsearch/bin/elasticsearch autostart = true s ...
- 【输入法】向Android端Gboard字典中导入PC端搜狗细胞词库
[输入法]向Android端Gboard字典中导入PC端搜狗细胞词库 环境 Android 5.1.1 Gboard 8.7.10.272217667-release -armeabi-v7a PC端 ...
- c++多线程并发学习笔记(0)
多进程并发:将应用程序分为多个独立的进程,它们在同一时刻运行.如图所示,独立的进程可以通过进程间常规的通信渠道传递讯息(信号.套接字..文件.管道等等). 优点:1.操作系统在进程间提供附附加的保护操 ...
- JetBrains视图
三种视图模式:
- 06: django+celery+redis
目录: 1.1 Celery介绍 1.2 celery 组件 1.3 安装相关包 与 管理命令 1.4 celery与Django执行异步任务 1.5 在django中使用计划任务功能 1.1 Cel ...
- [LeetCode] 65. 有效数字
题目链接 : https://leetcode-cn.com/problems/valid-number/ 题目描述: 验证给定的字符串是否可以解释为十进制数字. 例如: "0"` ...
- python常量 (最全常量解析)
常量 一.常量 变量是变化的量,常量则是不变的量.python中没有使用语法强制定义常量,也就是说,python中定义常量本质上就是变量.如果非要定义常量,变量名必须全大写. AGE_OF_NICK ...
- TMS320F28335——SCI串口
一.IO配置 以SCIA为例:使用的是GPIO35--SCITXDA GPIOA36--SCIRXDA 使用寄存器: GPBPUD :设置上拉 GPIO32-GPIO63 对应位0 使能上 ...