bzoj题目链接

> 上面hint那里是选择第2个瓶子和第3个瓶子

Time limit 10000 ms

Memory limit 131072 kB

OS Linux

Source Jsoi2009

吐槽

故事是这样的:我本来要写下面列表最后那题题树剖,然后草稿纸上思考了好久也没有想出来怎么在区间更新的同时维护gcd,于是查了查,找到了下面列表的倒数第二题,各处题解都说题意显然是区间gcd,但盯着题面并没有看出哪里有gcd,反而想到的是这题——[USACO1.4]母亲的牛奶 Mother's Milk。记搜?之后又找到了这题,终于知道小z的加油站怎么倒油了。

博客园居然不支持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;
}

最新文章

  1. ReactNative入门(安卓)——API(下)
  2. ASP.NET Core服务器综述
  3. PythonNote01_HTML标签
  4. 使用WMI和性能计数器监控远程服务器权限设置
  5. [转]Hibernate update和saveOrUpdate详解
  6. (源码)自己写的ScrollView里套漂亮的圆角listview(算是漂亮吧。。。)
  7. C语言学习总结(一) 基本语法
  8. BZOJ 3529 数表(莫比乌斯反演)
  9. hadoop(一)
  10. Effective Java 第三版——23. 优先使用类层次而不是标签类
  11. win32 dll工程开发创建对话框
  12. AJAX的简洁写法
  13. linux基础命令学习笔记(二)
  14. 详解UML中的6大关系(关联、依赖、聚合、组合、泛化、实现)
  15. [原创]Studio 3T mogodb数据库工具使用介绍
  16. 微信小程序获取到Openid
  17. vue-router两种模式的区别
  18. GROUP BY和 HAVING 及 统计函数 执行顺序等
  19. [ActionScript 3.0] 通过as3操作web内容
  20. RoCE、softRoCE与iWRAP

热门文章

  1. CNN(卷积神经网络)原理讲解及简单代码
  2. 第六周总结&amp;第四次实验报告
  3. 函数 FUNCTION
  4. C++中的数组操作符重载
  5. C++基础-多态
  6. HNUSTOJ 1601:名字缩写
  7. 通过编写串口助手工具学习MFC过程——(六)添加Edit编辑框控件
  8. P1397 [NOI2013]矩阵游戏(递推)
  9. 00.AutoMapper 之入门指南(Getting Started Guide)
  10. 关于express 连接 mongodb数据库报错