传送门

修建传送门
Time Limit: 1000 MSMemory Limit: 32768 K
Total Submit: 34(8 users)Total Accepted: 9(7 users)Rating: Special Judge: No
Description

     做为长城上的卫士,影踪派一直守在螳螂高原上防止螳螂人卡拉克西的入侵。影踪派的长城可以近似看做是一条直线上依次编号为1~N的N个基地组成,编号相邻的两个基地之间由长城相连接,而影踪派掌门祝踏岚所在的影踪禅院位于编号为1的基地。
    祝踏岚发现,每次螳螂人只会选择长城上的一个基地进行猛烈的攻击,所以,祝踏岚每次都要从影踪禅院赶到被攻击的基地亲临前线指挥战斗。但是,在长城上移动是很耗时的,为了能更快的赶到任何一个可能被攻击的基地,祝踏岚决定修建一对传送门。
    一对传送门由两个入口组成,它能实现在两个入口间的瞬间转移。出于安全考虑,这两个入口一定要建造在基地上。祝踏岚想选出两个合适的基地建造这一对传送门,使得他从影踪禅院赶到任何一个基地所需要的移动距离最远的那个最短。(每次祝踏岚都会选择采用最短的方式前往每一个基地)。你能帮助他么?


Input

第一行为一个正整数T,表示测试数据组数。

每组测试数据第一行为一个整数N(1 <= N <= 100000),第二行包含N-1个正整数,其中第i个数表示编号为i的基地与编号为i+1的基地之间的长城长度。此长度不会超过2147483647.

Output

对每组测试数据输出一行,仅含一个整数,表示按照最优方案建造完虫洞后,祝踏岚需要从基地1赶到的移动距离最远的基地的移动距离。

Sample Input

2

3

1 20

6

1 2 3 4 5
Sample Output

1

5
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<stack>
#include<set>
#include<map>
#include<queue>
#include<algorithm>
using namespace std;
long long a[100010],sum[100010];
int main(){
    int t;
    scanf("%d",&t);
    int i,j;
    long long Max,temp;
    int n;
    while(t--){
        scanf("%d",&n);
        memset(sum,0,sizeof(sum));
        for(i=2;i<=n;i++){
            scanf("%lld",&a[i]);
            sum[i]+=a[i]+sum[i-1];
        }
        i=j=1;
        Max=sum[n];
        while(i<=n){
            while(j<i&&sum[j]<=sum[i]-sum[j])
                j++;
            temp = max(sum[i] - sum[j], sum[j-1]);
            temp = max(sum[n] - sum[i], temp);
            if(temp<Max)
                Max=temp;
            i++;
        }
        printf("%lld\n",Max);
    }
    return 0;
}



在Unity中实现传送门效果,通常涉及多个方面的开发与配置,包括环境搭建、Shader编程、AR技术集成等。以下是一个较为完整的指南,涵盖基础原理和实现方法: ### 三、实现传送门效果的关键步骤 #### 1. Unity ShaderGraph 实现旋涡(传送门)效果 使用 **ShaderGraph** 是制作传送门视觉效果的一种常见方式。通过编写自定义着色器,可以模拟出类似“旋涡”或“扭曲”的动态视觉效果,使用户感受到传送门的神秘感和动态感。 - 在Unity编辑器中启用 **Shader Graph** 插件,并完成基础配置。 - 创建一个新的Shader Graph,添加主纹理节点,并将其连接到主输出节点。 - 添加时间节点(Time Node)并将其与UV扰动结合,创建一个动态变化的效果。 - 使用噪声函数(如Simple Noise或Gradient Noise)来生成随机扰动,从而产生类似漩涡的流动感。 - 将最终的Shader应用到一个Quad或者Plane上,作为传送门的视觉表现[^2]。 示例代码片段(用于控制材质参数): ```csharp public class PortalEffect : MonoBehaviour { public Material portalMaterial; private float time = 0f; void Update() { time += Time.deltaTime; portalMaterial.SetFloat("_Time", time); } } ``` #### 2. AR 环境下的传送门实现 如果你希望将传送门功能集成到增强现实(AR)环境中,可以借助 **Unity ARFoundation** 来实现跨平台支持。 - 首先设置好AR Foundation环境,包括导入必要的包(如ARKit或ARCore),并确保设备兼容性。 - 利用平面检测功能(Plane Detection)来识别现实世界中的地面或其他平面,作为传送门放置的位置。 - 创建两个相机:一个用于显示真实世界的画面(AR摄像机),另一个用于渲染虚拟场景(即传送门另一侧的世界)。 - 使用遮挡处理技术(如模板测试或深度测试)来确保传送门只在特定区域内可见,避免虚拟内容穿透现实对象。 - 控制AR状态的开启与关闭,例如通过按钮触发AR模式,同时进行硬件检测以确保设备支持所需功能[^3]。 #### 3. PICO 设备上的传送门实现 对于VR设备如PICO系列,尤其是PICO4,可以通过以下方式实现传送门效果: - 调用PICO SDK提供的透视接口(Passthrough API)来获取真实世界的影像流。 - 在Unity中构建一个三维传送门模型,通常是一个带有开口的框架。 - 在传送门的两端分别放置两个Quad,其中一个面向真实世界,应用带有深度测试或模板测试的材质;另一个面向虚拟世界,应用“Underlay”类型的“开洞”Shader,使得透过传送门可以看到虚拟内容。 - 对于复杂的交互逻辑,还可以结合物理系统与摄像机切换机制来提升沉浸感[^4]。 #### 4. Post-processing 后处理优化 为了增强视觉体验,可以在项目中引入后处理功能,例如模糊、发光、颜色校正等。Unity HDRP 或 URP 提供了对Post-processing Stack的支持,也可以参考GitHub上的开源项目来实现更高级的视觉效果[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值