Portal -->broken qwq

Description

   给定\(n\)和\(k\),我们要在\(1,2,3,...,n\)中选择若干的数,每一种选择的方案被称为选数方案。

  我们定义一种选数方案是合法的,当且仅当\(k\)没有被选,且任意两个选的数互质。

  我们定义一种选数方案是极大的,当且仅当它是合法的,且不能再从剩下的数中选择任意一个,或者选的是\(k\)。

  极大的选数方案的最小的选的个数。

  数据范围:多组数据,数据组数\(T<=50\),\(1<=n<=1000,1<=k<=n\),\(k\)不是质数

Solution

  这种互质的题有一个比较有效的方法,我们可以将每一个数的质因子分成两类,一类是\(<=\sqrt n\)的,一类是\(>\sqrt n\)的,不难注意到\(>\sqrt n\)的质因子最多只能有一个

  这题的话我们发现\(<=\sqrt n\)的质数其实很少,只有\(11\)个,所以可以考虑状压

  在dp之前我们要先想一下对于那些含有\(>\sqrt n\)质因子的数要怎么处理,其实仔细想一下会发现比如说\(>\sqrt n\)的质因子集合为\(\{a_1,a_2,a_3...a_m\}\),那么最起码这\(m\)个数都要选,所以我们直接将这部分加到答案里面去就好了

  那接下来我们就只用考虑不含\(>\sqrt n\)质因子的数了

​  记\(f[i][j]\)表示前\(i\)个数中选出数的质因子的并的状态为\(j\),\(j\)是一个二进制,表示选出来的数中都出现了哪些质数(按编号来存,比如\(2\)是第一个质数对应的状态就是\(2^0\),\(3\)是第二个质数所以对应\(2^1\),以此类推)

​  假设我们当前考虑第\(i\)个数(也就是\(i\)啦。。)的转移,只有在\(j\)这个状态中不存在\(i\)的任意一个质因子的时候才可以将\(i\)选进来(不然就不互质了),我们用\(st(i)\)表示\(i\)这个数的质因数的状态,那么也就是在\(j\&st(i)\)为\(0\)的时候有:
\[ f[i][j|st(i)]=min(f[i-1][j|st(i)],f[i-1][j]+1-(i是否含有>\sqrt n的质因数)) \]
​  当\(i\)含有\(>\sqrt n\)的质因数的时候要将其\(-1\)不算贡献是因为所有含有\(>\sqrt n\)的数已经在最开始的时候加到答案里面去了(就是那个\(m\)个数),不能再选

​  那最后的问题就是空间,滚动一下把第一维滚动掉就好了ovo

​  然后的话就是需要预处理的东西有:质数表,每个数的质因数的状态,每个数的最大质因子(用来判断是否含有\(>\sqrt n\)的质因数)

  

​  代码大概长这个样子

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1010,inf=2147483647;
int mxp[N],p[N],st[N],f[2][1<<12];
int vis[N];
int n,m,cnt,K,ans,all,T;
void prework(int n){mxp[1]=1; cnt=0; for (int i=2;i<=n;++i){if (!vis[i]){mxp[i]=i; p[++cnt]=i;st[i]=(i<=31?1<<cnt-1:0);}for (int j=1;j<=cnt&&p[j]*i<=n;++j){vis[i*p[j]]=true;if (i*p[j]==74)int debug=1;mxp[i*p[j]]=max(p[j],mxp[i]);st[i*p[j]]=st[i]|(p[j]<=31?st[p[j]]:0);if (i%p[j]==0) continue;}}
}
bool ok(int St,int x){return (St&st[x])==0;}
void solve(){m=1;while (p[m]<=n) ++m;--m;ans=max(0,m-11);m=min(m,11);all=1<<m;int now=1,pre=0;for (int i=0;i<all;++i) f[0][i]=inf;f[0][0]=0;for (int i=1;i<=n;++i){for (int j=0;j<all;++j) f[now][j]=f[pre][j];f[now][0]=0;for (int j=0;j<all;++j){if (!ok(j,i)) continue;if (((j|st[i])<all)&&f[pre][j]!=inf&&i!=K)f[now][j|st[i]]=min(f[pre][j|st[i]],f[pre][j]+1-(mxp[i]>31));}swap(now,pre);}printf("%d\n",f[pre][all-1]+ans+(K!=1));
}int main(){
#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);
#endifscanf("%d",&T);prework(1000);for (int o=1;o<=T;++o){scanf("%d%d",&n,&K);printf("Case #%d: ",o);solve();}
}

转载于:https://www.cnblogs.com/yoyoball/p/9398610.html

双马尾机器人(???)相关推荐

  1. 【51Nod1386】双马尾机器人(分块+dp)

    对于这种找互质的数的集合的题,一般是讨论每个数的质因子会不会有重复. 听说这种互质的题把质因子分为小于 n\sqrt{n}n​ 和大于 n\sqrt{n}n​ 是经典套路? 因为当 nnn 很小的时候 ...

  2. 装上螺旋桨,加州理工让只能行走的双足机器人「上了天」,还玩起了障碍滑板、走绳索...

    视学算法报道 编辑:杜伟.陈萍 能走能飞,这才是最酷的双足机器人吧?! 有的机器人可以行走,有的可以飞行.你见过既能行走又能飞行的双足机器人吗? 加州理工学院的研究人员就打造了这样一台机器人 LEON ...

  3. diy直立双足机器人_速看!近期国内外机器人资讯大汇总

    导语 三季度即将过半,二季度机器人事件回顾,智览行业发展.二季度机器人行业呈现出了怎样的发展动态呢?从行业大角度出发,带领大家回顾过去二季度的行业精彩. 国内 钛米机器人钛元助力首款人工智能5G农业机 ...

  4. 波士顿动力双足机器人Atlas放出逆天体操表演,网友:比我还强

    问耕 发自 凹非寺 量子位 出品 | 公众号 QbitAI 波士顿动力又有新作发布! 这次是双足机器人Atlas,继表演跑酷.后空翻等绝技之后,刚刚Atlas又放出一段逆天的技能展示:全程高能的机器人 ...

  5. ROS(12):双足机器人开发调研

    本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/49474219 未经博主允许不得转载.  博主地址是:http://blog.cs ...

  6. android 两足机器人,基于Android的双足机器人语音控制系统研究

    摘要: 随着智能终端的快速普及和移动互联网的高速发展,人们通过一部手机连接整个世界的目标似乎已经实现.进入二十一世纪后,人工智能是科技领域绕不开的一个主题.虽然当下对于人工智能的研究或应用还都处于初级 ...

  7. 人工机器:机器人模块化和双足机器人被动行走

    对于机器人,作为服务人或者家庭成员,是否能走进千家万户,还要看机器人的双足是否能够实现. 服务机器人构件: 1.双足机器人的两条腿; 2.被动行走和能源问题; 3.机器组件的模块化; 4.情感作用以及 ...

  8. 基于气动人工肌肉的双足机器人关节设计

    介绍了一种由气动人工肌肉构建的双足机器人关节,该关节利用气动人工肌肉的柔性特性,可以有效控制双足机器人快速行走或跑步时的落地脚冲击问题. 详细给出了气动人工肌肉的工作原理以及由其构成的关节系统的硬件架 ...

  9. diy直立双足机器人_Aelos Pro 机器人:让编程变得更有趣

    前言 拥有一台酷炫的机器人是每个人儿时的梦想,爱搞机最近也有机会拿到一款来自乐聚的新品: Aelos Pro 机器人.相信有了解过机器人的朋友,应该对乐聚有所耳闻,乐聚在人形机器人领域一直都是行业的佼 ...

最新文章

  1. 创业5年,我有5点关于人的思考
  2. jdk-11.0.2 64位最新版
  3. Error和Exception的区别
  4. abrtd:Executable ‘some execution‘ doesn‘t belong to any package and ProcessUnpackaged is set to ‘no‘
  5. python10进制转2进制掩码_Python简单实现子网掩码转换的方法
  6. 【幽默】工作搞不好的原因
  7. Linux 局域网路由新手指南:第 2 部分
  8. 谁都会做:简单易行的祛斑法 - 生活至上,美容至尚!
  9. 移动端下拉刷新,向后台请求数据
  10. PCB设计培训,Layout工程师培训,射频基带技术培训,硬件技术培训,驱动开发培训
  11. 一次性搞懂JavaScript正则表达式之方法
  12. 金蝶怎么录入数量金额_金蝶KIS迷你版初始化数量金额怎样录入
  13. 阿里云服务器ECS和VPS主机的区别在哪里
  14. new 与 delete 操作符
  15. 计算机软件 算什么资产,软件属于固定资产吗
  16. [下属谈话]管理者与下属谈话的技巧以及注意点
  17. npm安装依赖报错 unable to resolve dependency tree....
  18. 锂离子电池热失控预警资料整理(三)
  19. EventBus使用详解(二)——EventBus使用进阶
  20. 好的工具分享(持续更新)

热门文章

  1. matlab anova 如何不画图,方差分析的数据处理和作图
  2. memcached linux 配置文件,Linux下Memcached服务器部署 | 系统运维
  3. 视频换脸AISWAP技术示例
  4. 第13届 广东工业大学ACM程序设计大赛 C题 平分游戏
  5. (转)word2vec前世今生
  6. HTML5使用Div标签来实现表格
  7. 使用C#: 自动切换鼠标的左右手习惯
  8. Objective-C选择器 Selector
  9. LeetCode 5353. 灯泡开关 III
  10. PAT1003. 我要通过!