2.6模拟总结

前言

45pts
45+0+0
rnk 34
写了200分,挂了155分
好哇!

考场

这次状态还真是挺不错的。
开考,先看题。
T1期望,乍一看看不出来啥,似乎挺难的。
T2乍一看特别可做。
T3脑子里只有模拟退火

先去看T2。
被这种类似的题惯性一带,第一眼:首先离散化一下 l,rl,rl,r 就变成 O(n)O(n)O(n) 了。

开考30min,这人已经死了。

发现50或者70分似乎比较好写,后面就完全没有头绪。
莫名想到杨表
由于几乎没有优化的入手点,很快转了T1
T1确实是一个不太难的题,按照 fff 升序转移就行了。
30 min 敲完,过了样例,信心++。

但我也明白做出来这个题的人应该不会太少,还是去T2。
想到如果把dp的下标都变成弱限制,似乎 n2n^2n2 可以把 log⁡\loglog 去掉。
然后再仔细看看这个 dp ,发现转移有很多好的性质,直接平衡树维护就可以 O(nlog⁡n)O(n\log n)O(nlogn)
感觉这个题A了的话还是挺值钱的。
就肝它了!
然后就开始写 splay。
我的这个做法细节非常多,又容易RE又容易WA。
但好在在暴力对拍的帮助下,11:00左右总于是拍不出锅了。
值域调大调小都稳健如老狗。
当然啦,写暴力对拍的时候直接把离散化复制过去了
信心++。

然后还有半个小时左右,看了眼T3,决定把模拟退火写了。
模拟退火真好写,10min就完事了。
但是由于是完全的瞎退,效果奇差无比,样例都过不去,调参都不好使。
想到了一种优化退火的方法,但是时间来不及了。
中点白给那10分我愣是没看见
然后就交了。

题目解析

T1

一个地方把 double 开成 int 了。
吐血。
改过来就过了。

T2

很神奇,这个题我的做法包括dp定义其实和题解完全不一样,但是代码却长的几乎一模一样。
都是前面加一个,后面删一个,中间区间加一。
导致今天下午补题极其轻松,改几个变量,删一个离散化就过了。
我这个做法是立足于 l,rl,rl,rO(n)O(n)O(n) 的基础上的。
不然似乎还是做不了。
题解的 dp 设计我其实中间想到过,但是觉得没啥卵用

T3

主要扑在 T2 上,分配给这题的时间确实太少了。
稍微深度思考一下就能发现最小圆覆盖呀。
不过我自己恐怕切不掉这个题。对于当限制点少于 m+1m+1m+1 个点时候如何求超圆圆心我没有办法。
题解的高斯消元可以说是很神奇了,在给出点与最后一个点作差向量组成的基底表示下得到的圆唯一且最小。
然而并不会证

总结

感觉屡次挂大分的原因还是心太浮吧。
想到做法 ≠\ne= 做法是真的 ≠\ne= 能写出来 ≠\ne= 能A题。
考试还是需要谨小慎微一些,多想想为什么,别被惯性思维带跑。
不奢求了,就希望明天得的分能比挂的分少吧。
支愣起来啊,windwhisper!

代码

T1

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("OK\n")
inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)){if(c=='-') f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}
const int N=3050;
const int M=2e4+100;
const double inf=2e9;
const double eps=1e-10;int n,m,tot;double f[N],a[N][N],p[N],sum[N];
bool vis[N];signed main(){freopen("trip.in","r",stdin);freopen("trip.out","w",stdout);n=read();for(int i=1;i<=n;i++){for(int j=1;j<=n;j++) scanf("%lf",&a[i][j]);}for(int i=1;i<=n;i++) p[i]=sum[i]=1;f[n]=0;vis[n]=1;int now=n;while(!vis[1]){int id(0);double mn=inf+1;for(int i=1;i<=n;i++){if(vis[i]) continue;sum[i]+=p[i]*a[i][now]*f[now];p[i]*=(1-a[i][now]);f[i]=abs(p[i]-1)>eps?sum[i]/(1-p[i]):inf;if(f[i]<mn){id=i;mn=f[i];}//printf("  i=%d sum=%lf p=%lf\n",i,sum[i],p[i]);}vis[id]=1;now=id;//printf("id=%d f=%lf\n",id,f[id]);}printf("%.8lf\n",f[1]);return 0;
}
/*
1
1 2
1 1
*/

T2

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("OK\n")
inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)){if(c=='-') f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}
const int N=3050;
const int M=2e4+100;
const double inf=2e9;
const double eps=1e-10;int n,m,tot;double f[N],a[N][N],p[N],sum[N];
bool vis[N];signed main(){freopen("trip.in","r",stdin);freopen("trip.out","w",stdout);n=read();for(int i=1;i<=n;i++){for(int j=1;j<=n;j++) scanf("%lf",&a[i][j]);}for(int i=1;i<=n;i++) p[i]=sum[i]=1;f[n]=0;vis[n]=1;int now=n;while(!vis[1]){int id(0);double mn=inf+1;for(int i=1;i<=n;i++){if(vis[i]) continue;sum[i]+=p[i]*a[i][now]*f[now];p[i]*=(1-a[i][now]);f[i]=abs(p[i]-1)>eps?sum[i]/(1-p[i]):inf;if(f[i]<mn){id=i;mn=f[i];}//printf("  i=%d f=%lf id=%d mn=%lf\n",i,f[i],id,mn);}vis[id]=1;now=id;//for(int i=1;i<=n;i++) printf("%lf ",f[i]);//puts("");//printf("id=%d f=%lf\n\n",id,f[id]);}printf("%.8lf\n",f[1]);return 0;
}
/*
1
1 2
1 1
*/

T3

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("OK\n")
inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)){if(c=='-') f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}
const int N=2e5+100;
const int M=2e4+100;
const double inf=2e9;
const double eps=1e-10;int n,m,tot;double a[20][20],ans[20];
void Gauss(int n){for(int i=1;i<=n;i++){int x=i;for(int j=i+1;j<=n;j++){if(a[j][i]>a[x][i]) x=j;}if(x!=i) swap(a[x],a[i]);for(int j=i+1;j<=n;j++){for(int k=i+1;k<=n+1;k++){a[j][k]-=a[i][k]/a[i][i]*a[j][i];}		}}for(int i=n;i>=1;i--){ans[i]=a[i][n+1]/a[i][i];for(int j=1;j<i;j++) a[j][n+1]-=a[j][i]*ans[i];}return;
}
struct point{double p[20];point(){memset(p,0,sizeof(p));}
};
inline point operator - (const point &x,const point &y){point res;for(int i=1;i<=m;i++) res.p[i]=x.p[i]-y.p[i];return res;
}
inline point operator + (const point &x,const point &y){point res;for(int i=1;i<=m;i++) res.p[i]=x.p[i]+y.p[i];return res;
}
inline point operator * (const double k,const point &x){point res;for(int i=1;i<=m;i++) res.p[i]=k*x.p[i];return res;
}
inline double len(const point &x){double res(0);for(int i=1;i<=m;i++) res+=x.p[i]*x.p[i];return sqrt(res);
}
void print(point o,int op=1){printf("( ");for(int i=1;i<=m;i++) printf("%lf ",o.p[i]);printf(")");if(op) puts("");
}
point t[20];
inline point circle(point *p,int n){
//	printf("circle: n=%d\n",n);
//	for(int i=1;i<=n;i++) print(p[i],i==n);for(int i=1;i<n;i++) t[i]=p[i]-p[n];memset(a,0,sizeof(a));for(int x=1;x<n;x++){for(int k=1;k<=m;k++){for(int i=1;i<n;i++) a[x][i]+=2*t[i].p[k]*t[x].p[k];a[x][n]+=t[x].p[k]*t[x].p[k];}}
//	for(int i=1;i<n;i++){
//		for(int j=1;j<=n;j++) printf("%lf ",a[i][j]);
//		puts("");
//	}Gauss(n-1);point res=p[n];for(int i=1;i<n;i++) res=res+(ans[i]*t[i]);
//	print(res);
//	puts("");return res;
}
point x[N];
point o;
double r;
point pt[20];
void solve(int k,int tp){if(k>m+1) return;for(int i=1;i<tp;i++){double d=len(o-x[i]);if(d>r+eps){pt[k]=x[i];o=circle(pt,k);r=len(o-x[i]);solve(k+1,i);}}
}signed main(){freopen("dimension.in","r",stdin);freopen("dimension.out","w",stdout);n=read();m=read();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) scanf("%lf",&x[i].p[j]);}solve(1,n+1);//printf("%.10lf\n",r);for(int i=1;i<=m;i++) printf("%.10lf ",o.p[i]);return 0;
}
/*
2 5
3 5 8 4 10
10 5 7 6 9
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客IOI周赛26-提高组(逆序对,对序列,未曾设想的道路) 题解

文章目录逆序对对序列未曾设想的道路牛客IOI周赛26-提高组逆序对 这种套路之前已经见过几次了&#xff0c;肯定不是模拟操作数列 opt 1 对于i∈[1,l)⋃(r,n]i∈[1,l)\bigcup(r,n]i∈[1,l)⋃(r,n] 逆序对是不影响的 对于i∈(l,r)i∈(l,r)i∈(l,r) 与l/rl/rl/r的情况会反转&…

Frogs HDU - 5514

Frogs HDU - 5514 题意&#xff1a; 有n个青蛙&#xff0c;第 i 个青蛙每次只能够跳 ai​步&#xff0c;现在有m个石头围成一圈&#xff0c;编号为0到m−1&#xff0c;现在青蛙可以围着这个石头组成的圆跳无限次&#xff0c;每跳一次就会占领这个石头&#xff0c;可以无限占领…

Docker最全教程之树莓派和Docker(十六)

前言树莓派&#xff08;Raspberry Pi&#xff09;是一台卡片电脑&#xff08;只有信用卡大小&#xff09;&#xff0c;我们可以使用树莓派做很多事情&#xff0c;比如智能家居的中控、航空器、BT下载器、挖矿机、智能机器人、小型服务器&#xff08;花生壳网站&#xff09;等等…

Codeforces Round #724 (Div. 2) 题解

文章目录A. Omkar and Bad StoryB. Prinzessin der VerurteilungC. Diluc and KaeyaD. Omkar and MediansE. Omkar and ForestF. Omkar and Akmar#724-Div.2A. Omkar and Bad Story 直接set暴力加值&#xff0c;加满300300300个为止 #include <cstdio> #include <se…

2015沈阳区域赛

2015沈阳vj链接 题号题目知识点难度APattern StringBBazinga贪心签到题CMinimum Cut-CutDPagodas裴蜀定理签到题EEfficient TreeFFrogs欧拉函数银牌题GGame of Flying CircusHChessboardITriple二维线段树稳银快金JJohn’s FencesKKykneion asmaLNumber LinkMMeeting最短路&am…

模板:Prufer序列

所谓 Prufer 序列&#xff0c;就是 Prufer 发明的序列。 &#xff08;逃&#xff09; 前言 优雅的神奇魔术。 看名字很高大难&#xff0c;但实际上是高大清&#xff08;小清新&#xff09;。 很简单的建立起树与序列之间的双射&#xff0c;且这个序列的性质非常良好&#xff…

【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置

介绍系列目录&#xff1a;【NET CORE微服务一条龙应用】开始篇与目录在微服务的应用中&#xff0c;统一的认证授权是必不可少的组件&#xff0c;本文将介绍微服务中网关和子服务如何使用统一的权限认证主要介绍内容为&#xff1a;1、子服务如何实现和网关相同的鉴权方式2、接口…

Codeforces Round #725 (Div. 3) 题解

文章目录A. Stone GameB. Friends and CandiesC. Number of PairsD. Another Problem About Dividing NumbersE. Funny SubstringsF. Interesting FunctionG. Gift Set#725-Div.3A. Stone Game 先找到最大值最小值的位置&#xff0c;然后有三种选取&#xff08;两边中走一边/两…

I - Triple HDU - 5517

I - Triple HDU - 5517 题意&#xff1a; 由多重集A和多重集B&#xff0c;<a,b>∈A&#xff0c;<c,d,e>∈B&#xff0c;集合CA * B{<a,c,d>|<a,b>∈A&#xff0c;<c,d,e>∈B and be}。 现在需要你求出有多少个<a,c,d>满足&#xff1a;不…

模板:广义二项式反演/广义容斥(组合数学)

文章目录前言经典容斥原理广义二项式反演/广义容斥min-max 容斥所谓二项式反演&#xff0c;就是对两个项的式子进行反演。 &#xff08;逃&#xff09; 前言 期望和容斥是我的感性二兄弟&#xff01; 之前的容斥我基本也都是靠感性理解做的… 感性理解就会导致&#xff1a;考…

WebApiClient与Asp.net core DI的结合

1 WebApiClient一款基于HttpClient封装&#xff0c;只需要定义c#接口并修饰相关特性&#xff0c;即可异步调用远程http接口的客户端库WebApiClientWebApiClient.ExtensionsWebApiClient.Tools2 Http接口的注册与提供2.1 声明远程端http接口public interface IBaiduApi : IHttpA…

Codeforces Round #717 (Div. 2)

Codeforces Round #717 (Div. 2) CodeForces 1516 题号题目知识点ATit for Tat贪心BAGAGA XOOORRR思维题CBaby Ehab Partitions AgainDCutEBaby Ehab Plays with Permutations

梁迪:源于热爱乐于分享,MVP代表圆桌会议

梁迪《MVP代表圆桌会议》MVP代表圆桌会议&#xff0c;源于热爱乐于分享。来自全国的MVP&#xff08;周岳、苏震巍、蒋金楠、胡浩、卿毅、项斌、刘浩杨、施兆熊、方洁影、方骥、刘鑫、童广林&#xff09;作经验交流。梁 迪微软最有价值专家&#xff08;MVP&#xff09;项目大…

2.7模拟总结

文章目录前言考场题目解析T1T2T3代码T1 forestT2 eulerT3 graph前言 130pts 2010010 终于没有挂分&#xff01; 开心&#xff01; 然而今天的题确实过于阴间…三道题几乎都没法写暴力&#xff0c;爆零场了属于是。 我这个分数都能到rnk4勒。 &#xff08;rnk39->rnk4&#…

基于xlua和mvvm的unity框架

1、框架简介这两天在Github上发现了xlua的作者车雄生前辈开源的一个框架—XUUI&#xff0c;于是下载下来学习了一下。XUUI基于xlua&#xff0c;又借鉴了mvvm的设计概念。xlua是目前很火的unity热更方案&#xff0c;不仅支持纯lua脚本热更&#xff0c;也可以做 C# 代码的bug hot…

A - Tit for Tat CodeForces - 1516A

A - Tit for Tat CodeForces - 1516A 题意&#xff1a; 一个长度为 n 的数组&#xff0c;现在希望你对这个数组进行至多k次操作&#xff1a;在数组中选择 2 个不同的元素&#xff0c;将第一个元素加 1 &#xff0c;然后从第二个元素减 1 。不过他有一个要求&#xff0c;进行操…

Codeforces Round #703 (Div. 2) 题解

文章目录A. Shifting StacksB. Eastern ExhibitionC. Guessing the GreatestD. Max MedianE. Paired PaymentF. Pairs of Paths#703 (Div. 2)A. Shifting Stacks 从左往右构造递增0,1,2...&#xff0c;如果这样都不能递增就肯定无解 雷区&#xff1a;不能用等差数列算个数&am…

AGAGA XOOORRR CodeForces - 1516B

AGAGA XOOORRR CodeForces - 1516B 题意&#xff1a; 给定一个长度为n的序列&#xff0c;对其进行若干次操作&#xff0c;每次操作将某相邻两数变为他们的异或和&#xff08;操作后序列长度减一&#xff09;。问是否可以经过若干次操作&#xff0c;得到一个长度至少为2且所有…

2.8模拟总结

前言 80pts 303020 rnk10 三个暴力分… T2拿虚树玩了半天结果假了qwq 乍一看似乎都挺可做的。 但是一道都做不出来 &#xff08;觉得写考场过程有点流水账&#xff0c;不写了&#xff0c;一些想说的写在对应题目里吧&#xff09; 题目解析 T1 三角查找&#xff08;triangle&…

如何在ASP.NET Core中使用JSON Patch

原文&#xff1a; JSON Patch With ASP.NET Core作者&#xff1a;.NET Core Tutorials译文&#xff1a;如何在ASP.NET Core中使用JSON Patch地址&#xff1a;https://www.cnblogs.com/lwqlun/p/10433615.html译者&#xff1a;Lamond LuJSON Patch是一种使用API显式更新文档的方…