模拟73:

T1:哔~~~~~~~~~~~~~~~~~~~~

sb模拟,然而一个小细节打炸了,不想解释(吐嘈大样例没有右移)。。。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[][],b[][],pd[][];
int n,m,x,y,z,d,k,v,r;
long long ans;
void add()
{
r=;
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)
if(!a[i][j])++r;
k=+k%r;
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)
if(!a[i][j]){--k;if(!k){a[i][j]=v;return;}}
}
inline bool work0()
{
int ok=;
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)b[i][j]=pd[i][j]=;
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)
if(a[i][j])
{
b[++b[][j]][j]=a[i][j];
if(b[][j]!=i)ok=;
}
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)a[i][j]=;
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)
if(b[i][j])
{
a[++a[][j]][j]=b[i][j];
if(a[a[][j]][j]==a[a[][j]-][j]&&!pd[a[][j]-][j])
{
a[a[][j]][j]=;
a[--a[][j]][j]<<=;
pd[a[][j]][j]=;
ans+=a[a[][j]][j];
ok=;
}
}
if(!ok)return ;
return ;
}
inline bool work1()
{
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)b[i][j]=a[n-i+][j];
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)a[i][j]=b[i][j]; if(work0())return ; for( int i=;i<=n;++i)
for( int j=;j<=n;++j)b[i][j]=a[n-i+][j];
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)a[i][j]=b[i][j];
return ;
}
inline bool work2()
{
int ok=;
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)b[i][j]=pd[i][j]=;
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)
if(a[i][j]){
b[i][++b[i][]]=a[i][j];
if(b[i][]!=j)ok=;
}
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)a[i][j]=;
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)
if(b[i][j])
{
a[i][++a[i][]]=b[i][j];
if(a[i][a[i][]]==a[i][a[i][]-]&&!pd[i][a[i][]-])
{
a[i][a[i][]]=;
a[i][--a[i][]]<<=;
pd[i][a[i][]]=;
ans+=a[i][a[i][]];
ok=;
}
}
if(!ok)return ;
return ;
}
inline bool work3()
{
int ok=;
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)b[i][j]=a[i][n-j+];
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)a[i][j]=b[i][j]; if(work2())return ; for( int i=;i<=n;++i)
for( int j=;j<=n;++j)b[i][j]=a[i][n-j+];
for( int i=;i<=n;++i)
for( int j=;j<=n;++j)a[i][j]=b[i][j];
return ;
}
void pr()
{
puts("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
for(int i=;i<=n;puts(""),++i)
for(int j=;j<=n;++j)printf("%4d",a[i][j]);
puts("");
}
int main()
{
srand(time());
scanf("%d",&n);
x=rand()%n+;y=rand()%n+;
a[x][y]=;
while()
{
pr();k=rand()%+;v=;
char c=getchar();
while(c!='w'&&c!='a'&&c!='s'&&c!='d')c=getchar();
switch(c)
{
case 'w':{
if(work0()){
puts("Skyh have aked IOI");
return ;
}
add();
break;
}
case 's':{
if(work1()){
puts("Skyh have aked IOI");
return ;
}
add();
break;
}
case 'a':{
if(work2()){
puts("Skyh have aked IOI");
return ;
}
add();
break;
}
case 'd':{
if(work3()){
puts("Skyh have aked IOI");
return ;
}
add();
break;
}
}
}
return ;
}

2048

T2:结论题,dp,数据结构优化,秒切

 //反正法证明段数不会大于2。。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#define N 100050
using namespace std;
int n;
ll ct[N],f[N],dp[N],ans;
int lsh[N],ls,a[N];
void init()
{
sort(lsh+,lsh+n+);
ls=unique(lsh+,lsh+n+)-lsh-;
for(int i=;i<=n;++i)
a[i]=lower_bound(lsh+,lsh+ls+,a[i])-lsh;
}
inline int add(int x,long long v)
{
while(x<=n)
{
ct[x]=max(ct[x],v);
x+=x&-x;
}
}
inline ll ask(int x)
{
ll ret=;
while(x)
{
if(ct[x]>ret)ret=ct[x];
x-=x&-x;
}
return ret;
}
int main()
{
scanf("%d",&n);
for(register int i=;i<=n;++i)
{
scanf("%d",&a[i]);
lsh[++ls]=a[i];
}
init();
for(register int i=;i<=n;++i)
{
f[i]=ask(a[i]-)+lsh[a[i]];
add(a[i],f[i]);
if(f[i-]>f[i])f[i]=f[i-];
}
for(register int i=;i<=n;++i)ct[i]=;
for(register int i=n;i;--i)
{
dp[i]=ask(a[i]-)+lsh[a[i]];add(a[i],dp[i]);
if(dp[i+]>dp[i])dp[i]=dp[i+];
}
for(register int i=;i<=n;++i)
{
ans=max(ans,f[i]+max(f[i],dp[i+]));
}
double t=0.5*ans;
printf("%.3lf\n",t);
return ;
}

T3:神题,对高考数学涉及较多,主要考察三角函数应用。暴力枚举弧度数即可A掉(数据较水,莫要吐嘈细节)

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#define N 55
using namespace std;
const int inf=;
int n,m,fa[N];
struct node{
int x,y;
double a,b;
double val,z,ta,ct,si,co;
inline void init()
{
z=sqrt(1.0*a*a+1.0*b*b);
ta=1.0*b/a;ct=1.0*a/b;
si=1.0*b/z;co=1.0*a/z;
}
friend bool operator < (const node &c,const node &d){return c.val<d.val;}
}q[],t;
double ans;
int getfa(int x)
{
if(fa[x]==x)return x;
return fa[x]=getfa(fa[x]);
}
int main()
{
srand(time());
scanf("%d%d",&n,&m);int ok=;
for(int i=;i<=m;++i)
scanf("%d%d%lf%lf",&q[i].x,&q[i].y,&q[i].a,&q[i].b),q[i].init();
random_shuffle(q+,q+m+);
double a,b;
for(double i=;i<=;i+=0.7)
{
a=b=0.0;
t.z=1000.0;t.a=t.z*cos(i);t.b=t.z*sin(i);
t.init();
for(int j=;j<=m;++j)
q[j].val=q[j].z*(t.co*q[j].co+t.si*q[j].si);
for(int j=;j<=n;++j)fa[j]=j;
sort(q+,q+m+);
for(int j=;j<=m;++j)
{
if(getfa(q[j].x)==getfa(q[j].y))continue;
fa[getfa(q[j].x)]=getfa(q[j].y);
a+=q[j].a;b+=q[j].b;
}
ans=max(ans,sqrt(1ll*a*a+1ll*b*b));
}
printf("%.6lf\n",ans);
}

正解skyh说挺简单的不用解释。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<queue>
#define N 55
using namespace std;
const int inf=;
int n,m,fa[N];
struct node{
int x,y;
double a,b;
double val,z,ta,ct,si,co;
inline void init()
{
z=sqrt(1.0*a*a+1.0*b*b);
ta=1.0*b/a;ct=1.0*a/b;
si=1.0*b/z;co=1.0*a/z;
}
friend bool operator < (const node &c,const node &d){return c.val<d.val;}
}q[],t;
double ans;
int getfa(int x)
{
if(fa[x]==x)return x;
return fa[x]=getfa(fa[x]);
}
inline double Gauss(double x,double y,double xx,double yy)
{
double k,b;
b=yy-y*(xx/x);
b*=x/xx;
k=(y-b)/x;
return k;
}
queue<double>qq;
void work1()
{
double a,b;
for(double i=;i<=;i+=0.7)
{
a=b=0.0;
t.z=1000.0;t.a=t.z*cos(i);t.b=t.z*sin(i);
t.init();
for(int j=;j<=m;++j)
q[j].val=q[j].z*(t.co*q[j].co+t.si*q[j].si);
for(int j=;j<=n;++j)fa[j]=j;
sort(q+,q+m+);
for(int j=;j<=m;++j)
{
if(getfa(q[j].x)==getfa(q[j].y))continue;
fa[getfa(q[j].x)]=getfa(q[j].y);
a+=q[j].a;b+=q[j].b;
}
ans=max(ans,sqrt(1ll*a*a+1ll*b*b));
}
printf("%.6lf\n",ans);
}
int main()
{
srand(time());
scanf("%d%d",&n,&m);int ok=;
for(int i=;i<=m;++i)
{scanf("%d%d%lf%lf",&q[i].x,&q[i].y,&q[i].a,&q[i].b),q[i].init();if(q[i].b)ok=;}
double a,b,tt;
if(ok){work1();return ;}
for(int i=;i<=m;++i)
{
for(int j=;j<=m;++j)
{
if(j==i||q[i].b==q[j].b)continue;
tt=Gauss(q[i].a,q[i].b,q[j].a,q[j].b);
tt=-1.0/tt;
qq.push(tt);
}
}
while(!qq.empty())
{
a=b=0.0;t.a=1.0;t.b=t.a*(qq.front()+1e-);
t.init();
for(int j=;j<=m;++j)
q[j].val=q[j].z*(t.co*q[j].co+t.si*q[j].si);
for(int j=;j<=n;++j)fa[j]=j;
sort(q+,q+m+);
for(int j=;j<=m;++j)
{
if(getfa(q[j].x)==getfa(q[j].y))continue;
fa[getfa(q[j].x)]=getfa(q[j].y);
a+=q[j].a;b+=q[j].b;
}
ans=max(ans,sqrt(1ll*a*a+1ll*b*b));
a=b=0.0;t.a=-1.0;t.b=t.a*(qq.front()+1e-);qq.pop();
t.init();
for(int j=;j<=m;++j)
q[j].val=q[j].z*(t.co*q[j].co+t.si*q[j].si);
for(int j=;j<=n;++j)fa[j]=j;
sort(q+,q+m+);
for(int j=;j<=m;++j)
{
if(getfa(q[j].x)==getfa(q[j].y))continue;
fa[getfa(q[j].x)]=getfa(q[j].y);
a+=q[j].a;b+=q[j].b;
}
ans=max(ans,sqrt(1ll*a*a+1ll*b*b));
}
printf("%.6lf\n",ans);
}

正解

其实还可以,不太恶心

模拟74:

(这里用来写脏话)

T1&T3:水题。。。

T2:神题

时间分配:T1+T3=1h,T2=2.5h

得分分布:T1+T3=200pts,T2=30pts

T2:发现玩具构成一棵树,求树高的期望。

比较难想的其实是把新加入的点当作根节点,而不是接到其他节点之后

题解:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define N 250
using namespace std;
inline int read()
{
char c=getchar();int s=;
while(c>''||c<'')c=getchar();
while(c>=''&&c<='')s=s*+c-'',c=getchar();
return s;
}
int n=read();
const int mod=read();
int ans;
inline int qpow(int d,int z)
{
int ret=;
for(;z;z>>=,d=1ll*d*d%mod)
if(z&)ret=1ll*ret*d%mod;
return ret;
}
int inv[N];
int alv;
int dp[N][N];
int f[N][N];
int g[N][N];
int main()
{
inv[]=;
for(int i=;i<=n;++i)inv[i]=qpow(i,mod-);
alv=;
for(int i=;i<n;++i)alv=1ll*alv*inv[i]%mod;
dp[][]=;
for(int i=;i<=n;++i){
for(int j=;j<=i;++j){
dp[i][j]=1ll*inv[i]*(1ll*dp[i-][j-]*(j-)%mod+1ll*dp[i-][j]*(i-j)%mod)%mod;
if(dp[i][j]>=mod)dp[i][j]-=mod;
}
}
for(int i=;i<=n;++i)g[][i]=f[][i]=g[][i]=;
for(int i=;i<=n;++i){
for(int j=;j<n;++j){f[i][j]=g[i-][j-];}
for(int j=;j<n;++j){
for(int k=;k<=i;++k){
g[i][j]+=1ll*g[i-k][j]*f[k][j]%mod*dp[i][k]%mod;
if(g[i][j]>=mod)g[i][j]-=mod;
}
}
}
for(int i=;i<n;++i)
{
ans+=1ll*(f[n][i]-f[n][i-])*i%mod;
if(ans>=mod)ans-=mod;
if(ans<)ans+=mod;
}
cout<<ans<<endl;
return ;
}

发现题解中给的dp数组dp[i][j]=inv[i];证明好像可以用数学归纳法。

csps模拟73-74的更多相关文章

  1. CSPS模拟 73

    被T3坑了 忘记考虑$atan$只会返回正数导致无法区分方向相反模长相等的两个向量 直接把向量拆成ab两个上三角函数干出来就对了 真的exhausted

  2. [CSP-S模拟测试74]题解

    A.梦境 如果不用去重一定要用Multiset……挂30分算是出题人手下留情了. 贪心.把点排序,区间按右端点递增排序.依次考虑每个区间,取能选的最靠左的点即可.multiset维护. #includ ...

  3. csps模拟测试74梦境,玩具,飘雪圣域题解

    题面:https://www.cnblogs.com/Juve/articles/11679226.html 梦境: 其实还是挺水的,排序错了过不了样例,打了个二分图匹配就跑了 #include< ...

  4. csp-s模拟测试52-53

    留坑.... 改完题再说吧. 留坑....最近考得什么鬼??模拟53T1 u(差分) 一道差分题????然而考场没有想到如何维护斜率上的差分,事后经miemeng和cyf的生(xuan)动(xue)讲 ...

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

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

  6. csp-s模拟测试99

    csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...

  7. csp-s模拟测试98

    csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...

  8. csp-s模拟测试97

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

  9. csp-s模拟测试96

    csp-s模拟测试96 $T1$一眼慢速乘,$T2$稍证一手最优性尝试用神奇数据结构优化,无果,弃.$T3$暴力+信仰. 100 03:16:38 95 03:16:56 35 03:17:10 23 ...

随机推荐

  1. SSM集成

    SSM集成   Spring和各个框架的整合   Spring目前是JavaWeb开发中最终的框架,提供一站式服务,可以其他各个框架整合集成   Spring整合方案   SSH Ssh是早期的一种整 ...

  2. 剑指Offer(4)——替换空格

    题目: 请实现一个函数,把字符串中的每个空格替换成"%20".例如输入“We are happy.”,则输出“We%20are%20happy.”. 思路: 如果按照顺序从前往后依 ...

  3. 电子口岸 打开“退税联打印”时,PDF界面无法显示

    电子口岸 打开“退税联打印”时,PDF界面无法显示 咨询0571-95198 : IE要在8-10间,系统 要Win7 32B ---------------------参考------------- ...

  4. 【转载】Java枚举的使用

    枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中.此外,枚举类型还提供了安全检查功能.枚举类型本质上还是以类的形式存在. 1.使用枚举类型设置常量以往设置常量,通常将常量放置在接口中,这样 ...

  5. Tomcat服务器的数字证书 HTTPS 连接!

    SUN公司提供了制作证书的工具keytool, 在JDK 1.4以后的版本中都包含了这一工具,它的位置为\bin\keytool.exe 注意要使用一下 cmd命令,请确认jdk环境变量可以使用,可以 ...

  6. 内置函数----format

    说明: 1. 函数功能将一个数值进行格式化显示. 2. 如果参数format_spec未提供,则和调用str(value)效果相同,转换成字符串格式化. >>> format(3.1 ...

  7. 基于微软hyper-v虚拟化服务器搭建方法和步骤整理

    基于Microsoft基础设施私有云计算搭建 摘要:私有云是指组织机构建设的专供自己使用的云平台,它所提供的服务不是供他人使用,而是供自己的内部人员或分支机构使用,不同于公有云,私有云部署在企业内部网 ...

  8. 前端编译原理 简述-jison

    最近几年的项目技术难点都和编译原理,抽象语法树,代码编辑器 有关系.现在时间有点空,先从基础了解起来,让有些交互和提示能够更智能些. 编译原理-Parser    编译原理 其实就是 让计算机懂的 “ ...

  9. JS与JQuery的一些对比

    主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  10. 安装 ALC 解决 centos8 不能播放多媒体的问题

    装完centos8 后,发现看不到视频,听不到音乐,连web在线听音乐也不行.通过安装ALC可以解决. 1.三步安装VLC 这是 centos8 的安装包,曾使用 8 之前的版本安装是不成功的 sud ...