NOIP模拟测试24「star way to hevaen·lost my music」

star way to heaven

题解

大致尝试了一下并查集,记忆化搜索,最小生成树

最小生成树是正解,跑最小生成树然后找到最大的值

欧几里德距离最小生成树学习

prim楞跑

至于为什么跑最小生成树不是跑最大生成树,你跑最大生成树连的边可能会^%$&$%!#

感性理解手膜吧,我理解但说不清楚,稍微手膜就出来了,你可以举出一万种反例

代码实现细节比较多,技巧也比较多

注意边界处理,我们可以以一个边界为0,另一个边界权值为m,比较上下边界时不用再比较横坐标

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 1010010
double cal(ll x1,ll y1,ll x2,ll y2){return sqrt((double)((x1-x2)*(x1-x2))+(double)((y1-y2)*(y1-y2)));
}
ll n,m,k;
double ans;
ll x[A],y[A];
double dis[A];
bool vis[A];
int main(){scanf("%lld%lld%lld",&n,&m,&k);for(ll i=1;i<=k;i++){scanf("%lld%lld",&x[i],&y[i]);dis[i]=y[i];}dis[k+1]=m;while(1){ll mi=0;for(ll j=1;j<=k+1;j++)if(!vis[j]&&(mi==0||dis[j]<dis[mi]))mi=j;
//        printf("mi=%lld\n",mi);ans=max(ans,dis[mi]);vis[mi]=1;if(mi==k+1){printf("%.10lf\n",ans/2);return 0;}for(ll j=1;j<=k;j++)dis[j]=min(dis[j],cal(x[j],y[j],x[mi],y[mi]));dis[k+1]=min(dis[k+1],(double)(m-y[mi]));}
}
代码

lost my music

题解

题目中说的很明显是一个斜率单调栈维护一下

然而这是树上问题,你暴力退栈你会被卡成$n^2$于是我又学习了一下可持久化栈

可持久化栈学习

我用的是二分方法,好理解又好打

大致就是$dfs$时传一个$top$指针,然后你每次找到符合祖先链且斜率最大的地方,每次向下搜时只需要将当前对应位置栈设为$x$然后再回溯

这样我们就可以不用退栈

直接口胡肯定不能理解

| |<---你当前栈顶指向

| |

| |<---符合的位置,你只需要将当前栈指针指向当前,,,,,最后再回溯即可

| |

| |

或者换种方式理解

维护凸包

你若当前可以更新那么赋成当前值斜率更新更大

代码实现

void dfs(ll x,ll pre,ll de,ll top){deep[x]=de;ll k=get(x,top)+1,t1=sta[k],t2=sta[k-1];if(x==1) k=1;ans[x]=-1.0*(cal(t2,x));sta[k]=x;for(ll i=head[x];i;i=nxt[i]){ll y=ver[i];if(y==pre)  continue;dfs(y,x,de+1,k);}sta[k]=t1;
}

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 1010101
ll n,tot;
double ans[A];
ll deep[A],head[A],nxt[A],ver[A],c[A],sta[A];
void add(ll x,ll y){nxt[++tot]=head[x],head[x]=tot,ver[tot]=y;
}
double cal(ll x,ll y){return (double)(c[x]-c[y])/(1.0*(double)(deep[x]-deep[y]));
}
ll get(ll x,ll h){ll l=2,r=h,mid;double k1,k2;while(l<=r){mid=(l+r)>>1;k1=-1.0*(cal(sta[mid],sta[mid-1]));k2=-1.0*(cal(x,sta[mid]));if(k1<k2)r=mid-1;else l=mid+1;}return l-1;
}
void dfs(ll x,ll pre,ll de,ll top){deep[x]=de;ll k=get(x,top)+1,t1=sta[k],t2=sta[k-1];if(x==1) k=1;ans[x]=-1.0*(cal(t2,x));sta[k]=x;for(ll i=head[x];i;i=nxt[i]){ll y=ver[i];if(y==pre)  continue;dfs(y,x,de+1,k);}sta[k]=t1;
}
int main(){scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld",&c[i]);//printf("***\n");
    }for(ll i=2,a;i<=n;i++){scanf("%lld",&a);add(a,i);}dfs(1,0,1,0);for(ll i=2;i<=n;i++){printf("%lf\n",ans[i]);}
}
View Code

 

转载于:https://www.cnblogs.com/znsbc-13/p/11370216.html

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

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

相关文章

NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」

字符串 题解 没看出catalan怎么办 dp打表啊! 考虑大力dp拿到30分好成绩!顺便收获一张表 打表发现$C_{nm}^{m}-C_{nm}^{m-1}$ 仔细观察然后发现其实就是之前的网格那个题 那么我们回顾一下网格那个题 先看最简单的nm情况 求左下角走到右上角方案数,不能经过中间那条线 考虑大力容…

stackexchange_通过Spring Social推特StackExchange –第1部分

stackexchange本文将介绍一个快速的附带项目-一个自动从各种Q&#xff06;A StackExchange网站上发布热门问题的机器人&#xff0c;例如StackOverflow &#xff0c; ServerFault &#xff0c; SuperUser等。我们将为StackExchange API构建一个简单的客户端&#xff0c;然后进行…

bandizip最后一个无广告版本_【软件来了】这是个无广告的旧版知乎

近两天有新加入粉丝团队的小伙伴在询问G先生旧版App的事情&#xff0c;文章已发过很久&#xff0c;但是知乎的旧版本还是头一次分享给大家&#xff0c;所以G先生就找到了两个版本的旧版知乎&#xff0c;知乎V3.1和知乎V3.9这两个知乎都支持在最高的系统&#xff0c;没有广告也没…

NOIP模拟测试26「嚎叫响彻在贪婪的机房·主仆见证了 Hobo 的离别·征途堆积出友情的永恒」...

题目比较神仙&#xff0c;注意是题目神仙 贪婪暗示贪心&#xff0c;堆积暗示堆优化$\%\%\%\%\%\%\%$ 两个乱搞$$一个堆优化$dp$ 嚎叫响彻在贪婪的机房 题解 对于一个序列来说只要他们差的$gcd$不为$1$就可以构成等差数列 例如 $2$ $4$ $16$ $2$与$4$差$2$ $4$与$16$差$1…

渴望订阅– RxJava常见问题解答

在教学和指导RxJava以及撰写本书之后 &#xff0c;我注意到某些领域尤其成问题。 我决定发布一些简短的提示&#xff0c;以解决最常见的陷阱。 这是第一部分。 Observable和Flowable本质上是惰性的。 这意味着无论您在Flowable放置了多么繁琐或长时间运行的逻辑&#xff0c;仅…

WPScan高级用法和定制

自定义扫描选项 WordPress作为一个广泛使用的内容管理系统&#xff08;CMS&#xff09;&#xff0c;为用户提供了丰富的自定义选项&#xff0c;使其能够根据特定需求创建个性化的网站。其中一个重要的自定义选项是自定义扫描选项&#xff0c;它允许用户对WordPress网站进行深度…

r语言中正定矩阵由于误差不正定_R语言之数据处理(一)

在上一篇小文中&#xff0c;提到了关于R语言导入数据的一些方法&#xff0c;之后的重点就转向了数据的处理上。数据处理其实在整个数据分析项目中所占用的时间是比较多的&#xff0c;所以根据处理的目的不同&#xff0c;也有不同的处理方法。在R语言中&#xff0c;我通常会将数…

【chromium】 渲染显示相关概念

DRM(Direct Rendering Manager) DRM 由两个部分组成&#xff1a;一是 Kernel 的子系统&#xff0c;这个子系统对硬件 GPU 操作进行了一层框架封装。二是提供了一个 libdrm 库&#xff0c;里面封装了一系列 API&#xff0c;用来进行图像显示。 说到这里&#xff0c;其实这么理解…

ASP.NET Core MVC 之区域(Area)

区域&#xff08;Area&#xff09;是一个 ASP.NET MVC 功能&#xff0c;用于将相关功能组织为一个单独的命名空间&#xff08;用于路由&#xff09;和文件结构&#xff08;用于视图&#xff09;。使用区域通过向控制器和操作添加 一个路由参数&#xff08;area&#xff09;来创…

esp32 arduino adc_英雄联盟手游射手出装怎么出 adc英雄出装推荐

2020-11-02 18:06:31 角色扮演 人气值&#xff1a;加载中...英雄联盟手游adc怎么出装备&#xff1f;英雄联盟手游虽然没有上线国服和台湾服&#xff0c;但是我们已经有很多热心的玩家在外服中研究出了各种射手的玩法&#xff0c;那么adc要怎么出装呢&#xff1f;小编已经准备…

camel.js_Camel 2.11 –没有Spring的Camel Web应用程序

camel.js在撰写本文时&#xff0c;我们刚刚向即将到来的Apache Camel 2.11添加了一个新组件&#xff0c;该组件允许使用Camel运行Web应用程序&#xff0c;而不必依赖Spring Framework来加速Camel。 或与此相关的任何其他第三方框架。 有点as愧地说&#xff0c;在2013年&#x…

宅男计划

题解 $dp$不行考虑三分 发现单峰 1.理性打表,得到单峰 2.感性思考,你会发现你买食物次数越多,你钱数越少,你买的好食品更多,你买食物次数越少,你钱数越多,然而你必须买一些价格贵保质期长弥补次数少. 单峰,我们三分就完了(其实也可以模拟退火,然而我参数爆炸了一直60分) 那么$c…

.net 后台 下载 图片_特殊的 “图片软件” !

01 引语简单的图片处理软件我说过不少&#xff0c;像windows自带的图片编辑、在线处理图片的稿定设计、或者ps的一些插件。虽然我知道这类工具型软件的文章&#xff0c;大多数小伙伴都只是随便看一眼&#xff0c;心里默念 “咦&#xff0c;好像有用&#xff01;”&#xff0c;…

流操作中的noException

本文介绍了一些简单的编码实践。 没什么好看的。 在StackOverflow上也进行了讨论。 您只是将一个庞大而复杂的循环重构为一个更具可读性的流表达式&#xff0c;而忘记了某些方法调用引发了异常。 包含此代码的方法将引发此异常&#xff0c;该异常在方法头中声明。 您不想在此级…

optimize table 需要多久_吉林市政工程资质新办需要多久

七。 暖通空调专业&#xff1a;水暖工程&#xff0c;建筑环境与设备&#xff0c;环境工程&#xff0c;暖通空调&#xff0c;供暖和通风与空调&#xff0c;制冷和空调&#xff0c;水暖&#xff0c;供暖和通风&#xff0c;HVAC&#xff0c;公共设备安装。如何申请第三级土木工程资…

Java EE 6 开发环境

软件安装&#xff1a; 选择 Glassfish 支持 Java EE 6 的最新版本 3.1.2.2根据 Glassfish 3.1.2 的 certification matrix&#xff0c;要求 JDK 1.6 update 29&#xff0c;因此&#xff0c;选择 JDK 6 最新版本 JDK 6u45选择 Eclipse Indigo&#xff0c;其之后的版本要求 JDK 7…

mysql连接不断线_某些小时后MySql连接自动掉线

mysql连接不断线MySql配置为删除任何闲置超过8小时的连接。 这意味着什么&#xff1f; 在8个小时的间隔后返回到已部署的应用程序之后&#xff08;如果未更改默认SQL参数&#xff09;&#xff0c;将会遇到异常情况。 如何解决这个问题&#xff1f; 增加wait_time参数-不是一个…

pb65 xp 安装无反应_长春优质AFB型耐腐蚀泵安装

长春优质AFB型耐腐蚀泵安装 k5b5b5s长春优质AFB型耐腐蚀泵安装 并及时更换轴套。而随着科技的不断发展&#xff0c;新式设备的问世&#xff0c;设备一般都开始被筛选。无密封自吸泵无密封自吸泵就是一种新式泵&#xff0c;该泵密封可靠&#xff0c;选用无泄漏密封设备&#xff…

虚函数探秘

C的多态分为动态多态和静态多态&#xff0c;其中静态多态主要靠重载和模板来实现&#xff0c;而动态多态则主要靠继承来实现了。 那么静态和动态&#xff0c;怎么算静&#xff0c;怎么算动呢&#xff1f;静态多指编译期能决定的事情&#xff0c;而动态多指运行时才决定的事情。…

Errai框架简介

Errai是Red Hat开发和维护的框架&#xff0c;旨在结合GWT和JEE世界的优点。 根据Red Hat的说法&#xff0c;Errai是基于GWT的框架&#xff0c;用于使用下一代Web技术构建富Web应用程序。 在此简单声明的背后&#xff0c;存在一种与GWT完全不同的开发方式&#xff0c;在下面的文…