Div2 D. Effects of Anti Pimples

解题思路

  • a_i由小到大排序
  • 若不考虑绿色的情况则a_i为最大值的情况为2^{i-1},即选择在它之前的点
  • 对于同时选a_i,a_j,a_i=a_j,j> i,会被a_j统计贡献时考虑
  • 考虑绿色,对于每个i,若选则2*i,3*i,\cdots均选
  • 对于每个i预处理出max(a_{2*i},a_{3*i},\cdots ),记作mx_i
  • mx_i由小到大排序
  • mx_i为答案的情况为2^{i-1}                                                                                                           
    
    import java.io.*;
    import java.math.BigInteger;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.LinkedList;
    import java.util.Map;
    import java.util.Objects;
    import java.util.PriorityQueue;
    import java.util.Queue;
    import java.util.Scanner;
    import java.util.Stack;
    import java.util.StringTokenizer;
    import java.util.TreeMap;
    import java.util.TreeSet;
    import java.util.Vector;
    
    
    
    
    
    
    
    
    
    
    
    
    //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=100010;
    	static int n=0;
    	static int m=0;
    	
    	static
    	class Node{
    		long x;
    		long y;
    		public Node() {
    			
    		}
    		public Node(long u,long v) {
    			x=u;
    			y=v;
    		}
    		@Override
    	    public boolean equals(Object o) {
    	        if (this == o) return true;
    	        if (o == null || getClass() != o.getClass()) return false;
    	        Node now = (Node) o;
    	        return x==now.x&&y==now.y;
    	    }
    
    	    @Override
    	    public int hashCode() {
    	        return Objects.hash(x, y);
    	    }
    	}
    
    	static void solve() throws Exception{
    		AReader input=new AReader();
    //		Scanner input=new Scanner(System.in);
    		PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));	
    		String al="abcdefghijklmnopqrstuvwxyz";
    		char[] ac=al.toCharArray();
    		boolean[] isnotpri=new boolean[N+1];
    
    //		int T=input.nextInt();
    //		while(T>0) {
    //			T--;
    				
    // 		}
    		n=input.nextInt();
    		int[] a=new int[n+1];
    		HashMap<Integer, Integer> hs=new HashMap<Integer, Integer>();
    		int sum=n;
    		for(int i=1;i<=n;++i) {
    			a[i]=input.nextInt();
    			if(hs.get(a[i])==null) {
    				hs.put(a[i], 1);
    			}else {
    				int z=hs.get(a[i]);
    				hs.put(a[i], z+1);
    			}
    		}
    		int[] mx=new int[n+1];
    		for(int i=1;i<=n;++i) {
    			mx[i]=a[i];
    			for(int j=i*2;j<=n;j+=i) {
    				mx[i]=Math.max(mx[i], a[j]);
    			}
    		}
    		Arrays.sort(mx,1,n+1);
    		long ans=0;
    		long now=1;
    		for(int i=1;i<=n;++i) {
    			ans=(ans+now*mx[i]%md)%md;
    			now=now*2%md;
    		}
    		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) {
    //			}
    //		}
    		static
    		class 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();
    		    }
    		}
    	}
    
    		
    
    	

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Codigger用户篇:安全、稳定、高效的运行环境(一)

在当今数字化时代&#xff0c;个人数据的安全与隐私保护显得尤为重要。为了满足用户对数据信息的安全需求&#xff0c;我们推出Codigger分布式操作系统&#xff0c;它提供了一个运行私有应用程序的平台&#xff0c;旨在为用户提供一个安全、稳定、高效的私人应用运行环境。Codi…

基于Weibull、Beta、Normal分布的风、光、负荷场景生成及K-means场景削减方法

目录 一、主要内容&#xff1a; 二、代码运行效果&#xff1a; 三、Weibull分布与风机风速&#xff1a; 四、Beta分布与光伏辐照度&#xff1a; 五、Normal分布与电负荷&#xff1a; 六、K-means聚类算法&#xff1a; 七、完整代码数据下载&#xff1a; 一、主要内容&am…

STM32技术打造:智能考勤打卡系统 | 刷卡式上下班签到自动化解决方案

文章目录 一、简易刷卡式打卡考勤系统&#xff08;一&#xff09;功能简介原理图设计程序设计 哔哩哔哩&#xff1a; https://www.bilibili.com/video/BV1NZ421Y79W/?spm_id_from333.999.0.0&vd_sourcee5082ef80535e952b2a4301746491be0 一、简易刷卡式打卡考勤系统 &…

系列学习前端之第 6 章:一文掌握 jQuery(熟悉即可)

前言&#xff1a;为什么说 jQuery 熟悉即可&#xff0c;已日渐过时&#xff1f; 作为前端开发中常用的两个库或框架&#xff1a;Vue.js 和 jQuery。不少开发者想要学习 Vue.js 时&#xff0c;都会有一个疑惑&#xff1a;学习 Vue.js 是否一定要学习 jQuery&#xff1f; 从几个…

(五)图像的标准假彩色合成

环境&#xff1a;Windows10专业版 IDEA2021.2.3 jdk11.0.1 GDAL(release-1928-x64-gdal-3-5-2-mapserver-8-0-0) OpenCV-460.jar 系列文章&#xff1a; &#xff08;一&#xff09;PythonGDAL实现BSQ&#xff0c;BIP&#xff0c;BIL格式的相互转换 &#xff08;二&#xff…

【测试开发学习历程】第一个Python程序(下)

6 Python的标识符&#xff0c;命名规则与规范 标识符&#xff1a;python中的标识符是用于识别变量、函数、类、模块以及其他对象的名字叫标识符。 命名规则&#xff1a;所有需要自己命名的地方都必须要遵守以下规则 可以包含数字、字母、_&#xff0c;但是不能以数字开头&…

<c语言学习>数据文件操作

数据文件 按文件功能讲&#xff0c;计算机的文件分为程序文件和数据文件&#xff0c;数据文件操作以下简称文件操作。 程序文件&#xff1a; 包括源程序文件&#xff08;后缀为.c&#xff09;,目标文件&#xff08;windows环境后缀为.obj&#xff09;,可执行程序&#…

使用npm仓库的优先级以及.npmrc配置文件的使用

使用npm仓库的优先级以及.npmrc配置文件的使用 概念如何设置 registry&#xff08;包管理仓库&#xff09;1. 设置项目配置文件2. 设置用户配置文件3. 设置全局配置文件4. .npmrc文件可以配置的常见选项 概念 npm&#xff08;Node Package Manager&#xff09;是一个Node.js的…

2014年认证杯SPSSPRO杯数学建模B题(第一阶段)位图的处理算法全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 B题 位图的处理算法 原题再现&#xff1a; 图形&#xff08;或图像&#xff09;在计算机里主要有两种存储和表示方法。矢量图是使用点、直线或多边形等基于数学方程的几何对象来描述图形&#xff0c;位图则使用像素来描述图像。一般来说&#…

既有理论深度又有技术细节——深度学习计算机视觉

推荐序 我曾经试图找到一本既有理论深度、知识广度&#xff0c;又有技术细节、数学原理的关于深度学习的书籍&#xff0c;供自己学习&#xff0c;也推荐给我的学生学习。虽浏览文献无数&#xff0c;但一直没有心仪的目标。两周前&#xff0c;刘升容女士将她的译作《深度学习计…

爬虫实践(1)

这一篇只提登录模拟&#xff0c;主要介绍chrome开发者窗口的使用&#xff0c;实际上相关接口调用都是用到cookie&#xff0c;需要再加一篇从token到cookie&#xff0c;以保证实践的完整性 以migu登录为例&#xff0c;分析其登录过程&#xff0c;之后可以使用任意语言模拟登录&…

蓝桥杯真题Day40 倒计时19天 纯练题!

蓝桥杯第十三届省赛真题-统计子矩阵 题目描述 给定一个 N M 的矩阵 A&#xff0c;请你统计有多少个子矩阵 (最小 1 1&#xff0c;最大 N M) 满足子矩阵中所有数的和不超过给定的整数 K? 输入格式 第一行包含三个整数 N, M 和 K. 之后 N 行每行包含 M 个整数&#xf…

Linux实现m4a格式转换为wav格式

需要在linux上安装ffmpeg 参考博客 Linux上安装ffmpeg修改环境变量【这一点很重要&#xff0c;自己因为没有添加环境变量&#xff0c;捣鼓了很长时间】 将ffmpeg的绝对路径添加到 PATH 环境变量中&#xff0c;以让系统能找到ffmpeg的安装路径。 # /home//project/ffmpeg-6.1-a…

数据库安全性

背景&#xff1a;数据库的一大特性就是数据共享&#xff0c;这样我们就不能不考虑数据库的安全性问题。 1.数据库的不安全因素 1.1非授权用户对数据库的恶意存取和破坏 一些黑客&#xff08;Hacker&#xff09;和犯罪分子在用户存取数据库时猎取用户名和用户 口令&#xff0…

图像处理与视觉感知---期末复习重点(4)

文章目录 一、图像复原与图像增强1.1 概述1.2 异同点 二、图像复原/退化模型2.1 模型图简介2.2 线性复原法 三、彩色基础四、彩色模型五、彩色图像处理 一、图像复原与图像增强 1.1 概述 1. 图像增强技术一般要利用人的视觉系统特性&#xff0c;目的是取得较好的视觉效果&…

canvas跟随鼠标画有透明度的矩形边框

提示&#xff1a;canvas跟随鼠标画有透明度的矩形边框 文章目录 前言一、跟随鼠标画有透明度的矩形边框总结 前言 一、跟随鼠标画有透明度的矩形边框 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

Hana数据库 No columns were bound prior to calling SQLFetch or SQLFetchScroll

在php调用hana数据库的一个sql时报错了&#xff0c;查表结构的sql&#xff1a; select * from sys.table_columns where table_name VBAP SQLSTATE[SL009]: <<Unknown error>>: 0 [unixODBC][Driver Manager]No columns were bound prior to calling SQLFetch …

Kibana的安装(Linux版)

Kibana是一个针对Elasticsearch的开源分析及可视化平台&#xff0c;用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana&#xff0c;可以通过各种图表进行高级数据分析及展示。 Kibana让海量数据更容易理解。它操作简单&#xff0c;基于浏览器的用户界面可以快速创…

Eladmin-jpa基于SpringBoot和Vue的前后端分离后台管理系统​

在当今快速发展的软件开发领域&#xff0c;前后端分离的架构模式已经成为主流。这种架构模式不仅可以提高开发效率&#xff0c;还能使系统更加易于维护和扩展。Eladmin-jpa是一个基于Spring Boot 2.6.4、Spring Boot Jpa、JWT、Spring Security、Redis和Vue的前后端分离的后台管…

分布式系统面试全集通第一篇(dubbo+redis+zookeeper----分布式+CAP+BASE+分布式事务+分布式锁)

目录 分布式系统面试全集通第一篇什么是分布式?和微服务的区别什么是分布式分布式与微服务的区别 什么是CAP?为什么不能三者同时拥有分区容错性一致性可用性 Base理论了解吗基本可用软状态最终一致性 什么是分布式事务分布式事务有哪些常见的实现方案?2PC&#xff08;Two Ph…