洛谷 P1602 Sramoc问题
题目描述
话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个sramoc(k,m)函数,这什么东西?什么意思?于是餐厅找来了资深顾问团的成员,YQ,SC,HQ,经过大量的查阅,大家获得了一些信息,Sramoc ( K , M ) 表示用数字0、1、2…、K-1组成的自然数中能被M整除的最小数。例如 K=2,M=7的时候,Sramoc( 2 , 7 ) = 1001。自然电话号码就是1001,为了尽快将快餐送出,电脑组的童鞋们埋头算起了这个齐葩的号码。。。
输入输出格式
输入格式:
第1行为两个整数 k, m (2≤k≤10, 0≤m≤1000)。
输出格式:
仅1行,那个电话号码(最小的数)。
输入输出样例
2 7
1001
吐槽
看题面应该是某次比赛的题目之一,比赛的题目背景都是连贯的,打比赛一大乐趣就是欣赏各种有趣的题目背景了。
被搬到公共题库后,题目背景就支离破碎了。丧失了读题目背景的乐趣,实在是一种损失……
解题思路
乍一看题,感觉是一道普通的数位搜索,类似USACO1.5中一道名为 特殊的质数肋骨(Superprime Rib)的搜索题。
于是按照题意敲了一波广搜,每次拓展时按照0、1、2…k-1的顺序在已有数字后面接数字,这样就能保证搜索到的数字是递增出现的,第一个搜到的满足条件的数字一定是最小的。交上去得了80分,一看,两个点WA,输出负数,应该是溢出了。把int改成long long,90分,还是WA了一个点,依然溢出。换成__int128,交上去还是90,然而那个不过的点TLE了……随着数位的增多,搜到的数是成指数型增长的啊……
瞄了一眼题解
这题正解可以是这样——在广搜时,队列里的每个元素由一个高精度的数(字符串)和那个数模m的值。拓展节点时,如果拓展得到的余数为零,直接返回输出即可,要是这个余数不为零且之前没有出现过,就加入队列,之前出现过,就舍弃吧。我不太明白为何出现过的相同的余数不用加入队列,是他们拓展结果重复吗?先留坑
源代码
#include<queue>
#include<cstdio>
#include<string>
#include<iostream>
int k,m;
struct Node{
int yu;
std::string s;
}n[],temp;
bool used[]={};
Node bfs()
{
std::queue<Node> q;
for(int i=;i<k;i++)
{
temp.yu=i%m;
temp.s="";
temp.s+=i%m+'';
q.push(temp);
used[i%m]=;
}
while(!q.empty())
{
temp=q.front();
q.pop();
for(int i=;i<k;i++)
{
Node v=temp;
v.s=temp.s;
v.s+=i+'';
v.yu=(temp.yu*+i)%m;
if(v.yu==) return v;
if(!used[v.yu]) q.push(v),used[v.yu]=;
}
}
} int main()
{
scanf("%d%d",&k,&m);
std::cout<<bfs().s;
return ;
}
洛谷 P1602 Sramoc问题的更多相关文章
- 洛谷P1602 Sramoc问题
P1602 Sramoc问题 题目描述 话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个sramoc(k,m)函数,这什么东西?什么意思?于是餐 ...
- 洛谷——P1602 Sramoc问题
P1602 Sramoc问题 $bfs$搜索 保证第一个搜到的符合条件的就是最小的 #include<bits/stdc++.h> #define N 110000 using names ...
- 洛谷P1602 Sramoc问题 题解报告【同余+bfs】
题目描述 话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个sramoc(k,m)函数,这什么东西?什么意思?于是餐厅找来了资深顾问团的成员,YQ ...
- 洛谷 1602 Sramoc问题
Description 话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个sramoc(k,m)函数,这什么东西?什么意思?于是餐厅找来了资深顾问 ...
- 洛谷1602 Sramoc问题
刚看到这道题的时候感觉像spfa. 然后发现其实bfs就可以做了. //Serene #include<algorithm> #include<iostream> #inc ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
随机推荐
- CON1023 明明的计划
比赛说明 邀请码:a08f 来源:自出 描述:无 难度:NOIP提高组day1 赛时答疑:私信询问 奖励:无 试题列表 赛题 #A:数学题赛题 #B:明明泡妹子赛题 #C:明明去酒店 U5012 数学 ...
- 【POJ 3630】 Phone List
[题目链接] http://poj.org/problem?id=3630 [算法] 字典树 [代码] #include <algorithm> #include <bitset&g ...
- Labeling Balls(拓扑)
http://poj.org/problem?id=3687 看题意看了半天没看懂怎么回事,看完Discuss彻底凌乱了..后来看了题解才懂,就是逆向建图+拓扑排序,建图时要判重边. #include ...
- Mock实现模拟python的对象
Mock库的应用 Mock在Python3.3之前是第三方库,需要安装 pip install Mock :导入 import mock Mock在Python3.3之后是Python标准库,导入方式 ...
- 微信js sdk上传多张图片
微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="111111111111 ...
- MSSQL:删除系统作业计划
use [msdb]declare @job_name varchar(100)set @job_name = N'EveryDayBackup.Subplan_1'--注:jobName为维护计划对 ...
- 【DP、线段树优化】琪露诺
跟去年(2017)PJ第四题几乎是一样的?/吐血 DP方程可以很简单的推出来,f[i]=max{f[k]}+a[i] 然而这样做是O(n^2)的 看一下数据,200000的话要不nlogn 要不n 由 ...
- Blender插件编写指南
前言 Blender插件是Blender的利器, 用户可以使用各种插件扩充Blender的功能. Blender Python插件以bpy.props, bpy.types.Operator, bpy ...
- D - Vanya and Fence
Problem description Vanya and his friends are walking along the fence of height h and they do not wa ...
- SQL SERVER 2000 如何提高大数据筛选GROUP BY 的效率
数据库有83W条记录,本想计算20180101之后的每天赔付情况,故写了以下SQL语句: SELECT 起保时间,sum(赔付金额) as 日赔付 FROM maindata WHERE 起保时间&g ...