luogu1900 自我数
分享一个非正解的做法
本题解内存最低(\(\le1\rm MiB\))
但是不开O2会tle
思路:每个数字仅会更新出1个新的数字,而且这个新数字比旧数字最多也就大70多。所以这里还是利用“筛数”的思想枚举所有数字筛数字,但这里我开一个小根堆来存储当前已经被发现不是自我数但是还未被遍历到的数字。从小到大遍历所有数字,如果堆是空的,或者堆顶(也就是堆里最小数字)不是当前遍历数字说明这个数字是自我数,统计进ans,输出ans即可
对于k个询问,我们从小到大排序离线操作,再开一个指针pos表示当前询问查询到哪个询问,并随着i的更新来更新询问。最后按照初始id把询问排序回去输出。
具体可见代码实现:
#include <bits/stdc++.h>
using namespace std;
struct ask
{
int id, x, y;
}a[5010];
int n, k, tot, ans, pos;
priority_queue<int, vector<int>, greater<int> >q;
bool cmp1(const ask &x, const ask &y)
{
return x.x < y.x;
}
bool cmp2(const ask &x, const ask &y)
{
return x.id < y.id;
}
int make(int x)
{
int res = x;
while (x > 0)
{
res += x % 10;
x /= 10;
}
return res;
}
int main()
{
scanf("%d%d", &n, &k);
for (int i = 1; i <= k; i++)
{
a[i].id = i;
scanf("%d", &a[i].x);
}
sort(a + 1, a + 1 +k, cmp1);
for (int i = 1; i <= n; i++)
{
if (q.empty() || q.top() != i)
{
tot++;
if (a[pos].x < i)
pos++;
while (a[pos].x == tot)
{
a[pos].y = i;
pos++;
}
pos--;
ans++;
}
else
while (!q.empty() && q.top() == i)
q.pop();
q.push(make(i));
}
printf("%d\n", ans);
sort(a + 1, a + 1 + k, cmp2);
for (int i = 1; i <= k; i++)
printf("%d%c", a[i].y, i == k ? '\n' : ' ');
return 0;
}
让我们一起膜拜大佬林瑞堂@olinr
luogu1900 自我数的更多相关文章
- [转载]数学【p1900】 自我数
题目描述-->p1900 自我数 本文转自@keambar 转载已经原作者同意 分析: 思路还是比较好给出的: 用类似筛选素数的方法筛选自我数. 但是要注意到题目限制的空间仅有4M,不够开10^ ...
- P1900 自我数
题意: 对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和. 例如,d(75)=75+7+5=87.给定任意正整数n作为一个起点,都能构造出一个无限递增的序列:n, d(n), d(d(n) ...
- 洛谷 P1900 自我数
P1900 自我数 题目描述 在1949年印度数学家D. R. Daprekar发现了一类称作Self-Numbers的数.对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和.例如,d(75 ...
- SGU Volume 1
SGU 解题报告(持续更新中...Ctrl+A可看题目类型): SGU101.Domino(多米诺骨牌)------------★★★type:图 SGU102.Coprimes(互质的数) SGU1 ...
- 拨开迷雾,找回自我:DDD 应对具体业务场景,Domain Model 到底如何设计?
写在前面 除了博文内容之外,和 netfocus 兄的讨论,也可以让你学到很多(至少我是这样),不要错过哦. 阅读目录: 迷雾森林 找回自我 开源地址 后记 毫无疑问,领域驱动设计的核心是领域模型,领 ...
- [LeetCode] Two Sum 两数之和
Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...
- 自我反思--table的简单数据分页
自我反思 几天没有写工作总结了,整个人都变得懒散了.公司的工作也确实是不紧张,对于我这种自制力不强的人简直是...(想不到词了),完全放了风了... 每天逛逛淘宝,买些乱七八糟其实并没有什么用 ...
- IT人的自我导向型学习:学习的4个层次
谈起软件开发一定会想到用什么技术.采用什么框架,然而在盛行的敏捷之下,人的问题逐渐凸显出来.不少企业请人来培训敏捷开发技术,却发现并不能真正运用起来,其中一个主要原因就是大家还没有很好的学习能力.没有 ...
- bzoj 2876: [Noi2012]骑行川藏 拉格朗日数乘
2876: [Noi2012]骑行川藏 Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1033 Solved: ...
随机推荐
- 无人零售的黑科技:RFID技术
无人零售的黑科技:RFID技术说起最近的热门话题,“无人零售商店”当属其一.自去年底,亚马逊推出第一家无人实体超市Amazon Go,到阿里.京东.大润发等各大企业纷纷加入,无人商店被推上了风口浪尖. ...
- vue开发后台管理系统小结
最近工作需要用vue开发了后台管理系统,由于是第一次开发后台管理系统,中间也遇到了一些坑,想在这里做个总结,也算是对于自己工作的一个肯定.我们金融性质的网站所以就不将代码贴出来哈 一.项目概述 首先工 ...
- does not contain bitcode. You must rebuild it with
*** does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE ...
- 新创建的maven项目,显示的jdk版本与使用的不一致
解决:是在安装的maven中的setting.xml配置文件中添加 在setting.xml配置文件中的<profiles></profiles>这个元素中加以下代码 如果加上 ...
- JAVA基础知识总结7(抽象类 | 接口)
抽象类: abstract 1.抽象:不具体,看不明白.抽象类表象体现. 2.在不断抽取过程中,将共性内容中的方法声明抽取,但是方法不一样,没有抽取,这时抽取到的方法,并不具体,需要被指定关键字abs ...
- IE6中浮动双边距bug
想要创建出漂亮的网页设计, 除了要认真学习每一个html和CSS代码之外,不可能不去了解一下臭名昭著的IE6和更早的那些IE浏览器的坏脾气,因为你本来写出的规规矩矩的代码, 漂亮的设计就此就要完成了, ...
- 【总结整理】行内标签span设置position:absolute/float属性可以设置宽度与高度
postion:absolute 跳出文本流,不是行内元素,设置宽高有效,我的理解. 引用下曹刘阳写的<编写高质量代码-web前端开发修炼之道>一书中看到的一句话:position:abs ...
- 指静脉屏幕说明usart hmi
1. 1.usart HMI 下载最新版软件 2.如上图可以设置横屏 3.txt的最大字符默认是10 要改大一些 4.t0.txt="aaa" 这是串口通讯命令但前面还有开始码
- NIO、AIO
- linux删除文件、创建文件
1.删除文件 rm huahua.txt 2.创建文件 touch huahua.txt