每周一赛(E题,广搜求方案)
Description
In this problem, you are given an integer number s. You can transform any integer number A to another integer number B by adding x to A. This xis an integer number which is a prime factor of A (please note that 1 and A are not being considered as a factor of A). Now, your task is to find the minimum number of transformations required to transform s to another integer number t.
Input
Input starts with an integer T (≤ 500), denoting the number of test cases.
Each case contains two integers: s (1 ≤ s ≤ 100) and t (1 ≤ t ≤ 1000).
Output
For each case, print the case number and the minimum number of transformations needed. If it's impossible, then print -1.
Sample Input
2
6 12
6 13
Sample Output
Case 1: 2
Case 2: -1
题意:
例如:6+3=9,9+3=12加了两次
6+3=9,9+3=12,12的质因数只有2,3所以这种方案不行
6+2=8,8+2=10,10的质因数只有2,5所以不行
所以例二输出-1
利用搜索的方法,每次都枚举当前数的所有质因数,而且这里不需要标记,直到当前记录值等于目标值,这时也不要返回,用一个开始赋值很大的数来不断地更新最小值。
这么一来的话,就真的是每种情况都得枚举到了,这是会超时的!虽然我特意舍弃DFS而用了BFS还是不能幸免~~~~~
所以要进行优化,用一个开始赋值非常大的数组,然后每次记录当前入队列的节点他的当前值是什么,记下他的当前走了几步,后面每次当一个节点进队列时,就可以判断一下
他当前的步数是否小于以前走过的,如果小于就入队列,不小于就不进,这样就减少了很多毫无意义的尝试了
最后不得不说一句,做质因数标记那个数组在程序输入之前自动做好就行了,也花不了多少时间,而我竟然多次一举,去写了个辅助程序........................
#include"iostream"
#include"algorithm"
#include"cstring"
#include"cstdio"
#include"queue"
using namespace std;
int book[1010];
int mark[1010];
struct node
{
int as;
int step;
}; const int maxn=1000000000;
int ans=1000000000;
int flag;
int c;
int a;
int b;
int step=0; void BFS()
{
memset(mark,0x3f,sizeof(mark));
queue<struct node> que;
struct node cc,e,t;
cc.as=a;
cc.step=0;
que.push(cc);
while(!que.empty())
{
e=que.front();
que.pop();
if(e.as==b)
{
if(ans>e.step) ans=e.step;
}
for(int i=2;i<e.as;i++)
{
if(e.as%i) continue;
if(book[i]!=1) continue;
//cout<<"iqian"<<i<<endl;
// cout<<i<<endl;
if(mark[e.as+i]>e.step+1)
{
t=e;
t.as+=i;
if(t.as>b) continue;
t.step++;
mark[t.as]=t.step;
que.push(t);
}
}
}
} int main()
{
int n,f;
book[1]=1;
book[2]=1;
book[3]=1;
book[5]=1;
book[7]=1;
book[11]=1;
book[13]=1;
book[17]=1;
book[19]=1;
book[23]=1;
book[29]=1;
book[31]=1;
book[37]=1;
book[41]=1;
book[43]=1;
book[47]=1;
book[53]=1;
book[59]=1;
book[61]=1;
book[67]=1;
book[71]=1;
book[73]=1;
book[79]=1;
book[83]=1;
book[89]=1;
book[97]=1;
book[101]=1;
book[103]=1;
book[107]=1;
book[109]=1;
book[113]=1;
book[127]=1;
book[131]=1;
book[137]=1;
book[139]=1;
book[149]=1;
book[151]=1;
book[157]=1;
book[163]=1;
book[167]=1;
book[173]=1;
book[179]=1;
book[181]=1;
book[191]=1;
book[193]=1;
book[197]=1;
book[199]=1;
book[211]=1;
book[223]=1;
book[227]=1;
book[229]=1;
book[233]=1;
book[239]=1;
book[241]=1;
book[251]=1;
book[257]=1;
book[263]=1;
book[269]=1;
book[271]=1;
book[277]=1;
book[281]=1;
book[283]=1;
book[293]=1;
book[307]=1;
book[311]=1;
book[313]=1;
book[317]=1;
book[331]=1;
book[337]=1;
book[347]=1;
book[349]=1;
book[353]=1;
book[359]=1;
book[367]=1;
book[373]=1;
book[379]=1;
book[383]=1;
book[389]=1;
book[397]=1;
book[401]=1;
book[409]=1;
book[419]=1;
book[421]=1;
book[431]=1;
book[433]=1;
book[439]=1;
book[443]=1;
book[449]=1;
book[457]=1;
book[461]=1;
book[463]=1;
book[467]=1;
book[479]=1;
book[487]=1;
book[491]=1;
book[499]=1;
book[503]=1;
book[509]=1;
book[521]=1;
book[523]=1;
book[541]=1;
book[547]=1;
book[557]=1;
book[563]=1;
book[569]=1;
book[571]=1;
book[577]=1;
book[587]=1;
book[593]=1;
book[599]=1;
book[601]=1;
book[607]=1;
book[613]=1;
book[617]=1;
book[619]=1;
book[631]=1;
book[641]=1;
book[643]=1;
book[647]=1;
book[653]=1;
book[659]=1;
book[661]=1;
book[673]=1;
book[677]=1;
book[683]=1;
book[691]=1;
book[701]=1;
book[709]=1;
book[719]=1;
book[727]=1;
book[733]=1;
book[739]=1;
book[743]=1;
book[751]=1;
book[757]=1;
book[761]=1;
book[769]=1;
book[773]=1;
book[787]=1;
book[797]=1;
book[809]=1;
book[811]=1;
book[821]=1;
book[823]=1;
book[827]=1;
book[829]=1;
book[839]=1;
book[853]=1;
book[857]=1;
book[859]=1;
book[863]=1;
book[877]=1;
book[881]=1;
book[883]=1;
book[887]=1;
book[907]=1;
book[911]=1;
book[919]=1;
book[929]=1;
book[937]=1;
book[941]=1;
book[947]=1;
book[953]=1;
book[967]=1;
book[971]=1;
book[977]=1;
book[983]=1;
book[991]=1;
book[997]=1;
cin>>n;
f=1;
while(n--)
{ cin>>a>>b;
c=b-a;
if(c<0) cout<<"Case "<<f++<<": "<<-1<<endl;
else
{
BFS();
if(ans!=1000000000) cout<<"Case "<<f++<<": "<<ans<<endl;
else cout<<"Case "<<f++<<": "<<-1<<endl;
ans=1000000000;
}
}
return 0;
}
每周一赛(E题,广搜求方案)的更多相关文章
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...
- HEX SDUT 3896 17年山东省赛D题
HEX SDUT 3896 17年山东省赛D题这个题是从矩形的左下角走到右上角的方案数的变形题,看来我对以前做过的题理解还不是太深,或者是忘了.对于这种题目,直接分析它的性质就完事了.从(1,1)走到 ...
- 2018年数学建模国赛B题 智能RGV的动态调度策略
第一种情况大致思路: 每秒判断各个CNC的状态,若工作完成或者是出于空闲状态下则向RGV发出一个请求.同时,RGV每秒判断自己的状态(上下料.移动.闲置.清洗等),如果是处于闲置状态,则启用调度算法, ...
- hdu6578 2019湖南省赛D题Modulo Nine 经典dp
目录 题目 解析 AC_Code @ 题目 第一题题意是一共有{0,1,2,3}四种数字供选择,问有多少个长度为n的序列满足所有m个条件,每个条件是说区间[L,R]内必须有恰好x个不同的数字. 第二题 ...
- 2013杭州现场赛B题-Rabbit Kingdom
杭州现场赛的题.BFS+DFS #include <iostream> #include<cstdio> #include<cstring> #define inf ...
- [SYSU]每周一赛
2014年每周一赛第一场 A.Cutting Sausages B.Rectangular Fields //待做 ...
- 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路
这篇文章主要是介绍下C题的解题思路,首先我们对这道C题进行一个整体的概括,结构如下: C题:经济类 第一问:发现危险人群. 发现:欺诈的方式开始.雇佣或浪漫的承诺. 数据→确定特定的经济萧条地区→确定 ...
- 2013年山东省赛F题 Mountain Subsequences
2013年山东省赛F题 Mountain Subsequences先说n^2做法,从第1个,(假设当前是第i个)到第i-1个位置上哪些比第i位的小,那也就意味着a[i]可以接在它后面,f1[i]表示从 ...
- 2013年省赛H题
2013年省赛H题你不能每次都快速幂算A^x,优化就是预处理,把10^9预处理成10^5和10^4.想法真的是非常巧妙啊N=100000构造两个数组,f1[N],间隔为Af2[1e4]间隔为A^N,中 ...
随机推荐
- X86 Linux 下 SIGBUS 总结
SIGBUS 在 x86 Linux 上并不多见,但一旦出现,其调用堆栈常常让人摸不着头脑,加之信号问题各平台系统间差异较大,更让人难以理清,这里稍微总结一下 x86 Linux 上大概有哪些情形会触 ...
- Windows服务使用log4net记录日志
该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇. 比较流行的日志组件有以下四种,Topshelf都有相应的组件提供 log4net NL ...
- 《Windows核心编程系列》十二谈谈Windows内存体系结构
Windows内存体系结构 理解Windows内存体系结构是每一个励志成为优秀的Windows程序员所必须的. 进程虚拟地址空间 每个进程都有自己的虚拟地址空间.对于32位操作系统来说,它的地址空间是 ...
- Android偏好设置(6)应用和监听各偏好参数
Reading Preferences By default, all your app's preferences are saved to a file that's accessible fro ...
- python 字符串的split()函数详解(转)
作者:宋桓公 出处:http://www.cnblogs.com/douzi2/ 如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同 ...
- 转】Mahout构建图书推荐系统
原博文出自于: http://blog.fens.me/hadoop-mahout-recommend-book/ 感谢! Mahout构建图书推荐系统 Hadoop家族系列文章,主要介绍Hadoop ...
- 移动端UI自动化Appium测试——DesiredCapabilities参数配置及含义
一.DesiredCapabilities的作用: 负责启动服务端时的参数设置,启动session的时候是必须提供的. Desired Capabilities本质上是key value的对象,它告诉 ...
- Android基础夯实--重温动画(三)之初识Property Animation
每个人都有一定的理想,这种理想决定着他的努力和判断的方向.就在这个意义上,我从来不把安逸和快乐看作生活目的的本身--这种伦理基础,我叫它猪栏的理想.--爱因斯坦 一.摘要 Property Anima ...
- 4 Visual Effects 视觉效果 读书笔记 第四章
4 Visual Effects 视觉效果 读书笔记 第四章 Well, circles and ovals are good, but how about drawing r ...
- 程序员的职业方向: 是-->技术?还是-->管理?
岁之后还能不能再做程序员....... 绝大多数程序员最终的职业目标可能都是CTO,但能做到CEO的人估计会比较少,也有一少部分人自己去创业去当老板,也有部分人转行了,当老板的人毕竟是少数,转行的人都 ...