当前位置: 首页 > news >正文

济南旅游团购网站建设动态电子商务网站建设报告

济南旅游团购网站建设,动态电子商务网站建设报告,中国企业网站建设,个人创业项目题意:多组样例T,给x,y,三个操作1.x1,y1 2.x-1,y-1 3.x/p,y/p,p是x,y的共素数,让x或y等于1问操作次数最少。 思路: 1.很简单想到的,为了把一个数变成1,要么减&…

题意:多组样例T,给x,y,三个操作1.x+1,y+1    2.x-1,y-1    3.x/p,y/p,p是x,y的共素数,让x或y等于1问操作次数最少。

思路:

1.很简单想到的,为了把一个数变成1,要么减,要么除法,加法说白了也是为了除法。

2.x和y的除法不一定能直接求出,15和7不行16和8就可以了,看不出来怎么判断?分解d=(x-y),因为a+k,b+k的gcd肯定是d的某一个质因数(题目也这么要求的)
因为能有素数除一定满足a=kb,所以a-b=(k-1)*p一定是有关联的。

3.考虑对于当前剩下的x,y的除法选择其中一个质因数(其实就是爆搜,枚举能除的),但是很显然超时,但是枚举的时候可能会出现 先除3再除7 和 先除7再除3,所以其实是重复的……加入记忆化搜索,可能大大减少,本来是30^30,变成了类似组合数的时间复杂度(如果有错误欢迎指正)

那么就此解决了,本题关键记忆化搜索,也就是点3,利用记忆化,将本来其实只是改变除法顺序重复的搜索大大减少,时间一来就足够了。
参考了:J. Xingqiu‘s Joke(2021ICPC-南京)(记忆化搜索 + 数论)_[icpc2021 nanjing r] xingqiu's joke-CSDN博客
代码是vp的时候改来的,所有有些地方是繁琐不必要的,如果看不惯请移步原文。
代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10;
const int mod = 1e9 + 7;
#define pii pair<int, int>
#define lowbit(x) (x & (-x))std::map<std::pair<int,int>,int> mp;int dfs(int x, int y, std::set<int> &se)
{if(mp.count({x,y})){return mp[{x,y}];}int ans=y-1;if(y==1){mp[{x,y}]=ans;return ans;}mp[{x,y}]=(y-1);for (auto i : se){int now=y-1;if((x-y)%i!=0) continue;int up = i - (y % i);if (up == i)up = 0;int down = y % i;if (1){int xx = x + up, yy = y + up;xx = xx / i;yy = yy / i;now=1+up+dfs(xx, yy, se);// std::cout << x << " 12 " << y << " " << now << '\n';mp[{x,y}]=std::min(now,mp[{x,y}]);}if (1){int xx = x - down, yy = y - down;xx = xx / i;yy = yy / i;now=1+down+dfs(xx, yy, se);// std::cout << x << " 23 " << y << " " << now << '\n';mp[{x,y}]=std::min(now,mp[{x,y}]);// std::cout << x << " 234 " << y << " " << mp[{x,y}] << '\n';}}return mp[{x,y}];}void solve()
{mp.clear();int x, y;std::cin >> x >> y;if (x < y)swap(x, y);int d = x - y;int now = d;std::set<int> zs;for (int i = 2; i <= sqrt(now); i++){if (now % i == 0){while (now % i == 0){now = now / i;}zs.insert(i);}}if (now != 1)zs.insert(now);dfs(x, y, zs);std::cout << mp[{x,y}] << '\n';// for(auto i : mp){//     std::cout << i.first.first << " " << i.first.second << " " << i.second << '\n';// }
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;cin >> t;while (t--)solve();}

http://www.dtcms.com/a/574280.html

相关文章:

  • 企业做网站用dedeCMS免费吗在线资源搜索引擎
  • 什么是离子注入的注入剂量?
  • 静态网站 挂马北京网站设计的公司价格
  • 厦门建设局网站商品房免费免费网站模板
  • 怎么做谷歌这样的网站刷赞网站推广免费链接
  • 5、foc控制系统——电流环设计
  • 代码随想录打卡day25:56.合并区间
  • 【C++】C++11新特性 (上)
  • vue3+ts element-plus动态Icon图标统一注册
  • 用户组管理指令大全
  • 网站建设经费保障青海网站开发多少钱
  • 跨越协议鸿沟:RS485转ETHERCAT网关在电力电动机保护中的破局之道
  • 【开题答辩全过程】以 扶贫农产品销售平台APP为例,包含答辩的问题和答案
  • 专业做网站建设公司有哪些o2o网站建设行业现状
  • 自己做网站服务器多少钱网站域名怎么修改吗
  • 黑马JAVAWeb-05 JDBC入门-预编译SQL-Mybatis入门-Mybatis日志输出-数据库连接池-增删改查-XML映射配置
  • 济南高端网站asp.net怎样做网站登录
  • 北京平台网站建设哪家好有口碑的镇江网站优化
  • 抖音来客如何实现自动回复
  • 网站设计入门闸北品牌网站建设
  • PhotoShop网页版(在线ps)在快速修复老照片,在线修旧如新
  • 网站怎么做评估wordpress获取当前子分类
  • 《P2585 [ZJOI2006] 三色二叉树》
  • 无需人类标注!Meta提出SPICE:让AI在文档语料库中自我对弈,推理能力持续进化
  • 手机网站制作套餐查企业不要钱的软件
  • 学做吃的网站有哪些php 网站开发流程
  • 金仓数据库提出“三低一平”的迁移理念
  • 网站建设方案书备案网店设计流程图
  • 带地板翻转的网站怎么做网站开发需求评估
  • 免费客户管理系统选型攻略:功能、体验与扩展性