ABC318 F - Octopus

2024-04-04 02:20
文章标签 octopus abc318

本文主要是介绍ABC318 F - Octopus,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解题思路

  • 对于每个宝藏维护n个区间(x-l_i-1,x+l_i],答案一定在这些区间中
  • 对于每个区间的端点由小到大排序
  • 对于每个点进行判断,若当前位置合法,则该点一定为一个右端点
  • 则该点到前一个端点之间均为合法点
  • 若前一个点不合法,则一定是某一个区间限制的左端点,所以该点到这个端点之间均未超出范围,使某一宝藏取不到
  • 若前一个点合法,则在满足的前提下,还避免了重复
import java.io.*;
import java.math.BigInteger;
import java.util.*;//implements Runnable
public class Main {static long md=(long)998244353;static long Linf=Long.MAX_VALUE/2;static int inf=Integer.MAX_VALUE/2;static int N=200010;static int n=0;static int m=0;static long ans=0;static long[] a;static long[] b;static boolean check(long x){PriorityQueue<Long> q=new PriorityQueue<>((o1,o2)->{if(o1-o2>0)return 1;else if(o1-o2<0)return -1;else return 0;});for(int i=1;i<=n;++i){q.add(Math.abs(x-a[i]));}for(int i=1;i<=n;++i){if(q.poll()>b[i])return false;}return true;}static void solve() throws Exception{AReader input=new AReader();
//        String fileName="C:\\Users\\Lenovo\\Downloads\\055.txt";
//		Scanner input=new Scanner(new FileReader(fileName));//        BufferedReader input = new BufferedReader(new FileReader(fileName));PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));String al="abcdefghijklmnopqrstuvwxyz";char[] ac=al.toCharArray();n=input.nextInt();a=new long[n+1];for(int i=1;i<=n;++i)a[i]=input.nextLong();b=new long[n+1];for(int i=1;i<=n;++i)b[i]=input.nextLong();Arrays.sort(b,1,n+1);TreeSet<Long> hs=new TreeSet<>();for(int i=1;i<=n;++i){for(int j=1;j<=n;++j){hs.add(a[i]-b[j]-1);//左端点,左开右闭,区分左端点和右端点hs.add(a[i]+b[j]);//右端点}}long l=0;for(long x:hs){if(check(x))ans+=x-l;l=x;//左端点,要么是右端点区间去重叠}out.println(ans);out.flush();out.close();}public static void main(String[] args) throws Exception{solve();}//	public static final void main(String[] args) throws Exception {
//		  new Thread(null, new Tx2(), "线程名字", 1 << 27).start();
//	}
//		@Override
//		public void run() {
//			try {
//				//原本main函数的内容
//				solve();
//
//			} catch (Exception e) {
//			}
//		}staticclass AReader{BufferedReader bf;StringTokenizer st;BufferedWriter bw;public AReader(){bf=new BufferedReader(new InputStreamReader(System.in));st=new StringTokenizer("");bw=new BufferedWriter(new OutputStreamWriter(System.out));}public String nextLine() throws IOException{return bf.readLine();}public String next() throws IOException{while(!st.hasMoreTokens()){st=new StringTokenizer(bf.readLine());}return st.nextToken();}public char nextChar() throws IOException{//确定下一个token只有一个字符的时候再用return next().charAt(0);}public int nextInt() throws IOException{return Integer.parseInt(next());}public long nextLong() throws IOException{return Long.parseLong(next());}public double nextDouble() throws IOException{return Double.parseDouble(next());}public float nextFloat() throws IOException{return Float.parseFloat(next());}public byte nextByte() throws IOException{return Byte.parseByte(next());}public short nextShort() throws IOException{return Short.parseShort(next());}public BigInteger nextBigInteger() throws IOException{return new BigInteger(next());}public void println() throws IOException {bw.newLine();}public void println(int[] arr) throws IOException{for (int value : arr) {bw.write(value + " ");}println();}public void println(int l, int r, int[] arr) throws IOException{for (int i = l; i <= r; i ++) {bw.write(arr[i] + " ");}println();}public void println(int a) throws IOException{bw.write(String.valueOf(a));bw.newLine();}public void print(int a) throws IOException{bw.write(String.valueOf(a));}public void println(String a) throws IOException{bw.write(a);bw.newLine();}public void print(String a) throws IOException{bw.write(a);}public void println(long a) throws IOException{bw.write(String.valueOf(a));bw.newLine();}public void print(long a) throws IOException{bw.write(String.valueOf(a));}public void println(double a) throws IOException{bw.write(String.valueOf(a));bw.newLine();}public void print(double a) throws IOException{bw.write(String.valueOf(a));}public void print(char a) throws IOException{bw.write(String.valueOf(a));}public void println(char a) throws IOException{bw.write(String.valueOf(a));bw.newLine();}}
}

 

这篇关于ABC318 F - Octopus的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/874573

相关文章

【论文阅读】《Octopus v2: On-device language model for super agent》,端侧大模型的应用案例

今年LLM的发展趋势之一,就是端侧LLM快速发展,超级APP入口之争异常激烈。不过,端侧LLM如何应用,不知道细节就很难理解。正好,《Octopus v2: On-device language model for super agent》这篇文章可以解惑。 对比部署在云上,端侧大模型的好处主要来说就是:成本低、增强隐私。创建更小的模型以部署在智能手机、汽车、VR 耳机和个人电脑等边缘设备,等等

斯坦福发布端侧AI模型Octopus V2:推理比GPT-4快168%,准确率超Llama7B

斯坦福大学科研团队近期发布的Octopus V2端侧AI大模型犹如一颗璀璨的新星冉冉升起,凭借其卓越的性能和高效的推理能力,在业界引起了巨大轰动。 这款拥有20亿参数的端侧强大语言模型一亮相,便在开发者社群内迅速蹿红,首夜下载量即突破两千次大关,展现出前所未有的魅力。 Octopus V2的独特之处在于其能在智能手机、汽车和个人电脑等多种终端设备上流畅运行,尤其在涉及自动化工作流的任务中,它能

超级agent的端语言模型Octopus v2: On-device language model for super agent

大型语言模型(LLMs)在函数调用方面展现出卓越的应用潜力,特别是针对Android API的定制应用。与那些需要详尽描述潜在函数参数、有时甚至涉及数万个输入标记的检索增强生成(RAG)方法相比,Octopus-V2-2B在训练和推理阶段均采用了独树一帜的功能标记策略。这一创新不仅令Octopus-V2-2B的性能可与GPT-4比肩,更在推理速度上实现了显著提升,远超基于RAG的方法,因此,它特别

新研究突破!斯坦福提出 Octopus v2模型让AI代理在手机上运行更快、更准确

📌 元数据概览: 标题:论文的标题是 “Octopus v2: On-device language model for super agent”,这个标题暗示了文章可能讨论的是一种新型的、适用于移动设备的强大语言模型,旨在提升AI代理的性能。作者:文章的作者是Wei Chen和Zhiyuan Li,他们都来自斯坦福大学。斯坦福大学是世界顶尖的研究型大学,作者们很可能在人工智能和机器学习领域

微软多兴趣召回:Octopus

Octopus: Comprehensive and Elastic User Representation for the Generation of Recommendation Candidates 背景: 多兴趣通道(channel)结构的多兴趣召回模型在兴趣通道数量上面存在两个问题 兴趣通道较少,不能充分学习到用户的多个兴趣。兴趣通道较多,很多兴趣通道可能和用户兴趣不相关,这样会引

基于SSM的在线作业管理系统 -octopus-master(源码+调试)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给大家介绍一篇基于SSM的在线作业管理系统设计与实现。 功能需求 本在线作业管理系统通过分析和确定系统的角色和功能划分,按照业务合理区分为不同的菜单功能模块。从用户角度出发,对

3dMax章鱼插件Octopus

3dMax章鱼插件Octopus 3dMax章鱼插件,不仅在视口中以饼状的形式,呼出各种属性参数,方便调用,而且是一个可编写脚本的框架,因此您有很多机会创建自己的菜单并轻松分发。整个OCTOPUS系统可以使用maxscript进行自定义,您可以根据需要设置行为。 【适用版本】 3dMax 2018-2024 【特性】 您可以将4个不同的操作绑定到每个章鱼按钮。每次SH