C. k-Amazing Numbers 解析(思維)
Codeforce 1417 C. k-Amazing Numbers 解析(思維)
今天我們來看看CF1417C
題目連結
題目
略,請直接看原題。
前言
我實作好慢...

想法
只要注意到,真正重要的是對於某個數字,區間至少要多大才可以每個區間都包含到它。因此我們維護對於每種數字,其和下一個同種數字的最大距離,且還需要考慮元素到頭和到尾的距離。
如此一來就可以知道對於每種數字最短需要多大的區間。之後只要先\(ans[dis[數字種類]]=min(ans[dis[數字種類]],數字種類)\),接著維護解答陣列的最小值前綴即可。
程式碼:
const int _n=3e5+10,MAXB=20;
int t,n,a[_n],prev[_n],dis[_n],ans[_n],last[_n];
main(void) {ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  cin>>t;while(t--){
    cin>>n;rep(i,1,n+1)cin>>a[i];
    rep(i,0,n+1)ans[i]=dis[i]=prev[i]=last[i]=0;
    rep(i,1,n+1)ans[i]=1e9;
    rep(i,1,n+1){
      dis[a[i]]=max(dis[a[i]],i-prev[a[i]]);
      last[a[i]]=i;
      prev[a[i]]=i;
    }rep(i,1,n+1)if(last[i])dis[i]=max(dis[i],n+1-last[i]);
    rep(i,1,n+1)ans[dis[i]]=min(ans[dis[i]],i);
    rep(i,2,n+1)ans[i]=min(ans[i],ans[i-1]);
    rep(i,1,n+1)cout<<(ans[i]==1e9?-1:ans[i])<<' '; cout<<'\n';
  }
  return 0;
}
標頭、模板請點Submission看
Submission
C. k-Amazing Numbers 解析(思維)的更多相关文章
- A. Arena of Greed 解析(思維)
		Codeforce 1425 A. Arena of Greed 解析(思維) 今天我們來看看CF1425A 題目連結 題目 略,請直接看原題. 前言 明明是難度1400的題目,但總感覺不是很好寫阿, ... 
- D. Road to Post Office 解析(思維)
		Codeforce 702 D. Road to Post Office 解析(思維) 今天我們來看看CF702D 題目連結 題目 略,請直接看原題. 前言 原本想說會不會也是要列式子解或者二分搜,沒 ... 
- D. Rescue Nibel! 解析(思維、組合、離散化、差分)
		Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的 ... 
- D. Alyona and Strings 解析(思維、DP)
		Codeforce 682 D. Alyona and Strings 解析(思維.DP) 今天我們來看看CF682D 題目連結 題目 略,請直接看原題. 前言 a @copyright petjel ... 
- E. Enemy is weak 解析(思維、離散化、BIT、線段樹)
		Codeforce 61 E. Enemy is weak 解析(思維.離散化.BIT.線段樹) 今天我們來看看CF61E 題目連結 題目 給一個數列\(a\),求有多少\((i,j,k)\),\(i ... 
- E. Tree Queries 解析(思維、LCA)
		Codeforce 1328 E. Tree Queries 解析(思維.LCA) 今天我們來看看CF1328E 題目連結 題目 給你一棵樹,並且給你\(m\le2e5\)個詢問(包含\(k\)個點) ... 
- E. Tree Reconstruction 解析(思維)
		Codeforce 1041 E. Tree Reconstruction 解析(思維) 今天我們來看看CF1041E 題目連結 題目 略,請直接看原題 前言 一開始完全搞錯題目意思,還以為每次會刪除 ... 
- D. Concatenated Multiples 解析(思維)
		Codeforce 1029 D. Concatenated Multiples 解析(思維) 今天我們來看看CF1029D 題目連結 題目 給你一個序列\(a\)和一個數字\(k\),求有幾種ind ... 
- D. Regular Bridge 解析(思維、圖論)
		Codeforce 550 D. Regular Bridge 解析(思維.圖論) 今天我們來看看CF550D 題目連結 題目 給你一個\(k\le100\),請構造出一個至少有一個Bridge的,每 ... 
随机推荐
- Spring学习(二)Spring IoC 和 DI 简介
			一.IOC(控制反转) 定义:反转控制 (Inversion Of Control)的缩写,即创建对象的反转控制. 正向控制:若要使用某个对象,需要自己去负责对象的创建. 反向控制:若要使用某个对象, ... 
- 大白话谈JVM的类加载机制
			前言 我们很多小伙伴平时都是做JAVA开发的,那么作为一名合格的工程师,你是否有仔细的思考过JVM的运行原理呢. 如果懂得了JVM的运行原理和内存模型,像是一些JVM调优.垃圾回收机制等等的问题我们才 ... 
- 曹工说Tomcat:200个http-nio-8080-exec线程全都被第三方服务拖住了,这可如何是好(上:线程模型解析)
			前言 这两年,tomcat慢慢在新项目里不怎么接触了,因为都被spring boot之类的框架封装进了内部,成了内置server,不用像过去那样打个war包,再放到tomcat里部署了. 但是,内部的 ... 
- Android 字符串的常用操作
			目录 Substring 基本语法 IndexOf 基本语法 Split 基本语法 Substring 基本语法 str.substring(","); //从第一个,号开始截取 ... 
- Python练习题 012:字符统计
			[Python练习题 012] 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. ----------------------------------------------- 这题 ... 
- JDK1.8前_HashMap的扩容机制原理
			最近在研究hashmap的扩容机制,作为一个小白,相信我的理解,对于一些同样是刚刚接触hashmap的白白是有很很大的帮助,毕竟你去看一些已经对数据结构了解透彻的大神谈hashmap的原理等,人家说的 ... 
- 【题解】[CQOI]动态逆序对
			题目链接 题意如题,维护一个动态序列的逆序对总数. 注意题目给的是\([1,n]\)的排列,所以没必要离散化了. 考虑逆序对:二维偏序可以用树状数组做,现在是三维偏序,即加了一个时间维度. 找一个数前 ... 
- 搭建Leanote私有云服务器
			安装流程 安装Golang 安装Leanote 安装Mongodb 配置Leanote 初始化Mongodb数据 运行Leanote 安装Golang # 下载go1.14.4.linux-amd64 ... 
- js日志输出还是只会console.log么,那你就out了
			几乎所有的javascript开发者最常使用的日志打印调试api都是console.log(),其实还有很多的选项供我们选择,笔者下面就为大家一一介绍. 一.console.table() conso ... 
- 达梦产品技术支持培训-day7-DM8数据库备份与还原-原理
			(本文部分内容摘自DM产品技术支持培训文档,如需要更详细的文档,请查询官方操作手册,谢谢) 1.DM8备份还原简介 1.1.基本概念 (1)表空间与数据文件 ▷ DM8表空间类型: ▷ SYSTEM ... 
