题面:https://www.cnblogs.com/Juve/articles/11733280.html

smooth:

暴力强筛到7e7有60分。。。

正解:

维护一个队列,存所有的B-光滑数,维护B个指针,

因为所有的B-光滑数都有1,所以队列中先插1,所有指针只向1的位置

然后扫描B个指针,找出指针指向元素乘上对应质数的最小值更新队列

以B=4为例,最初所有指针只向1,然后扫描指针发现2×1最小,把2放入队列,1指针只向2

下一次扫描所有指针的结果为:4,3,5,7,其中3最小,3入队,2指针只向2

下一次:4,6,5,7,其中5最小,5入队,3指针(5的指针)指向2

在一次:4,6,10,7,其中4如队,1指针指向3

然后下一次发现是6,6,10,7,有两个相同的6,为了去重,1,2指针都要后移

然后模拟这个过程即可

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<deque>
#define int long long
using namespace std;
const int MAXN=1e7+5;
int b,k,sm[MAXN],p[17];
int prime[17]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};
deque<int>q;
signed main(){
scanf("%lld%lld",&b,&k);
q.push_front(0),q.push_back(1);
for(int i=1;i<=b;++i) p[i]=1;
for(int i=2;i<=k;++i){
int minn=1e18;
for(int j=1;j<=b;++j){
if(q[p[j]]*prime[j]==q[i-1]) ++p[j];
minn=min(minn,q[p[j]]*prime[j]);
}
q.push_back(minn);
}
printf("%lld\n",q.back());
return 0;
}

six:

刚听完,还没打

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#define int long long
#define re register
using namespace std;
const int mod=1e9+;
int n,num=,d[],ans=,ys[];
int sta[],top=;
int t[],cnt[<<];
void divi(re int n){
re int nn=n;
int p=sqrt(n);
for(re int i=;i<=p;++i){
if(!(nn%i)){
d[++d[]]=i;
t[d[]]=<<(d[]-);
while(!(nn%i)) nn/=i;
}
}
if(nn>){
d[++d[]]=nn;
t[d[]]=<<(d[]-);
}
ys[++ys[]]=n;
for(re int i=;i*i<=n;++i){
if(!(n%i)){
ys[++ys[]]=i;
if(n/i!=i) ys[++ys[]]=n/i;
}
}
for(re int i=;i<=ys[];++i){
re int res=;
for(re int j=;j<=d[];++j)
if(ys[i]%d[j]==) res|=t[j];
++cnt[res];
}
}
int zt[][],f[<<];
void prework(){
re int num=;
for(re int i=;i<=;++i){
for(re int j=i;j<=;++j){
zt[i][j]=zt[j][i]=<<num;
++num;
}
}
top=;
for(re int i=;i<(<<d[]);++i){
re int res=i;
top=;
for(re int j=;j<=d[];++j){
if(i&t[j]) sta[++top]=j;
}
for(re int j=;j<=top;++j){
for(re int k=j;k<=top;++k){
f[i]|=zt[sta[j]][sta[k]];
}
}
}
}
map<pair<int,int>,int>mp;
int dfs(int fi,int se){
pair<int,int>p=make_pair(fi,se);
if(mp[p]) return mp[p];
for(int i=;i<(<<d[]);++i){
if(f[i]&p.second) continue;
int res=p.second;
for(int j=;j<=d[];++j){
if(!(i&t[j])) continue;
for(int k=;k<=d[];++k){
if(!(p.first&t[k])) continue;
res|=zt[j][k];
}
}
mp[p]=(mp[p]+cnt[i]*(dfs(p.first|i,res)+)%mod)%mod;
}
return mp[p];
}
signed main(){
scanf("%lld",&n);
divi(n);prework();//exit(0);
printf("%lld\n",dfs(,));
return ;
}

walker:

把坐标等式写出来就是:

$scale*cos\theta*px-scale*sin\theta*py+dx=nx$

$scale*sin\theta*px+scale*cos\theta*py+dy=ny$

把$scale*sin\theta$和$scale*cos\theta$,dx,dy看成四个变量,随机化枚举两组点进行高斯消元,解出4个未知数

因为$sin\theta^2+cos\theta^2=1$,所以我们可以再解出scale和$\theta$

然后带回验证是否满足$\frac{n}{2}$组解

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int MAXN=1e5+;
int n;
double nx[MAXN],ny[MAXN],px[MAXN],py[MAXN];
double a[][];
void gauss(int n){
for(int i=;i<=n;i++){
int p=i;
for(int j=i+;j<=n;j++)
if(fabs(a[j][i])>fabs(a[p][i])) p=j;
for(int j=;j<=n+;j++)
swap(a[p][j],a[i][j]);
if(fabs(a[i][i])<1e-)continue;
double tmp=a[i][i];
for(int j=;j<=n+;j++)
a[i][j]/=tmp;
for(int j=;j<=n;j++)
if(i!=j){
double tmp=a[j][i];
for(int k=;k<=n+;k++)a[j][k]-=a[i][k]*tmp;
}
}
for(int i=n;i;--i)
for(int j=i-;j;--j)
a[j][n+]-=a[i][n+]*a[j][i]/a[i][i];
for(int i=n;i;--i)
a[i][n+]/=a[i][i];
}
void make(int p1,int p2){
a[][]=px[p1],a[][]=-py[p1],a[][]=1.0,a[][]=0.0,a[][]=nx[p1],
a[][]=py[p1],a[][]=px[p1],a[][]=0.0,a[][]=1.0,a[][]=ny[p1],
a[][]=px[p2],a[][]=-py[p2],a[][]=1.0,a[][]=0.0,a[][]=nx[p2],
a[][]=py[p2],a[][]=px[p2],a[][]=0.0,a[][]=1.0,a[][]=ny[p2];
}
signed main(){
scanf("%d",&n);
srand(time());
for(int i=;i<=n;++i) scanf("%lf%lf%lf%lf",&px[i],&py[i],&nx[i],&ny[i]);
while(){
int p1=rand()%n+,p2=rand()%n+,num=;
while(p1==p2) p2=rand()%n+;
make(p1,p2),gauss();
double scale=sqrt(a[][]*a[][]+a[][]*a[][]);
if(scale>||scale<) continue;
double co=a[][]/scale,si=a[][]/scale;
double ta=si/co;
double theta=atan(ta);
if(fabs(sin(theta)-si)>1e-) theta+=3.141592653589;
if(theta<-1e-) theta+=3.141592653589*;
double dx=a[][],dy=a[][];
for(int i=;i<=n;++i){
if(fabs(scale*co*px[i]-scale*si*py[i]+dx-nx[i])<1e-&&fabs(scale*si*px[i]+scale*co*py[i]+dy-ny[i])<1e-){
++num;
if(num>=(n+)/){
printf("%0.7lf\n%0.7lf\n%0.7lf %0.7lf\n",theta,scale,dx,dy);
return ;
}
}
}
}
return ;
}

csps模拟84Smooth,Six,Walker题解的更多相关文章

  1. [CSP-S模拟测试50]反思+题解

    ??大部分人都觉得T3是道不可做题去刚T1T2了,于是我就侥幸苟到了前面? 这场考试比较成功的就是快速水掉了T1T2的部分分,1h拿到88分起码为之后硬肝T3上了保险(赛后发现就算T3爆零也能rank ...

  2. [CSP-S模拟测试48]反思+题解

    状态很垃圾的一场考试.感觉“这么多分就够了”的心态很是在给自己拖后腿. 打开题面,第一页赫然写着:$Claris' Contest$. 吓得我差点手一抖关掉.不过后来想想似乎强到变态的人出的题都不是很 ...

  3. [CSP-S模拟测试47]反思+题解

    打开题面,T3似乎被换过了.(那我就更有理由直接弃掉了) T1是我最害怕的乱搞题,赶紧扔了看T2.发现是个sb板子?雨天的尾巴弱化版? 然而线段树合并早忘干净了(最近几道可以线段树合并的题都是用别的方 ...

  4. csps模拟测试7576一句话题解

    题面:https://www.cnblogs.com/Juve/articles/11694454.html 75考了数学,化学和物理... T1: 假设有一个A和B,那么对于每一个j!=i,都有$\ ...

  5. csps模拟测试707172部分题解myc

    题面:https://www.cnblogs.com/Juve/articles/11678524.html 骆驼:构造题,留坑 根据5×5的矩形构造成大矩形 毛一琛: mid in the midd ...

  6. csps模拟68d,e,f题解

    题面:https://www.cnblogs.com/Juve/articles/11655531.html 三道数据结构? d: 贪心,先按a排序,然后枚举删了前i个a值比较小的,然后在剩下的里面删 ...

  7. csp-s模拟64trade,sum,building题解

    题面:https://www.cnblogs.com/Juve/articles/11639755.html trade: 70分sbdp,然后一直想优化,dp还是很好写的 正解是反悔贪心 维护一个小 ...

  8. 反省——关于csp-s模拟50

    本人于搜索csp-s模拟49题解时,有意识地点开了一篇关于csp-s模拟50T2的题解,并知道了题解是二维前缀和以及四维偏序. 更重要的是,那篇博客说有解法二,叫二维莫队. 于是我上网搜索二维莫队,结 ...

  9. csp-s模拟测试97

    csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...

随机推荐

  1. Mysql优化-分区

    分区简介 分区是根据一定的规则,数据库把一个表分解成多个更小的.更容易管理的部分.就访问数据库应用而言,逻辑上就只有一个表或者一个索引,但实际上这个表可能有N个物理分区对象组成,每个分区都是一个独立的 ...

  2. zmq作为守护进程?等待连接

    服务端是作为守护进程在运行的,客户端connect成功,但write时直接退出了,我在想肯能服务端socket在write时已经失效了,不然为什么会出现write时进程退出呢?现在的问题是,我要怎么才 ...

  3. jdk8中map新增的merge方法介绍

    1.Map.merge方法介绍 jdk8对于许多常用的类都扩展了一些面向函数,lambda表达式,方法引用的功能,使得java面向函数编程更为方便.其中Map.merge方法就是其中一个,merge方 ...

  4. 使用babel转码器,让浏览器支持es6语法

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,可是很多浏览器并不支持es6语法,所以我们需要一个转码工具, 把es6的语法转换成浏览器支持的javascr ...

  5. 删除重复数据并保留id最小的一条记录

    delete from  test where id not in ( select a.id from (select min(id) as id from test group by form_i ...

  6. CRI 与 ShimV2:一种 Kubernetes 集成容器运行时的新思路

    摘要: 关于 Kubernetes 接口化设计.CRI.容器运行时.shimv2.RuntimeClass 等关键技术特性的设计与实现.     Kubernetes 项目目前的重点发展方向,是为开发 ...

  7. [HL] 7.5 集训总结

    对于某唤做赛区难度的题,我只能是内流满面..拿到题,A神题不可做,B,神题不可做,C,神题不可做...最后yy了一个A的算法...只得了20 TAT.C题骗分似乎有50 ..B题本来想骗分..然后/ ...

  8. linux基本命令vim

    拷贝当前行 yy,拷贝当前行向下的5行  5yy, 并粘贴(p). 删除当前航  dd,删除当前行向下的5行 5dd. 在文件中查找某个单词[命令行下/关键字,回车查找, 输入n 就是查找下一个] 查 ...

  9. java.lang.NoSuchMethodError: com.google.common.hash.HashFunction.hashInt(I)Lcom/google/common/hash/HashCode; 解决办法

    今天在java 上运行spark查询的时候出现一个问题: java.lang.NoSuchMethodError: com.google.common.hash.HashFunction.hashIn ...

  10. drools语法介绍

    这里没有翻译http://docs.jboss.org/drools/release/6.4.0.Final/drools-docs/html_single/index.html上的内容 而是参考了网 ...