首页 > 其他分享 >CF1833D Flipper 题解

CF1833D Flipper 题解

时间:2023-08-29 23:44:24浏览次数:46  
标签:dots opt CF1833D int 题解 -- 端点 序列 Flipper

赛场上思路出来了但是代码没调出来。

首先考虑右端点,很明显,要让操作后的序列字典序尽量地大,那么就要使操作后的序列第一个数尽量地大,考虑 \(n\) 或 \(n-1\),如果 \(n\) 在原序列的第一个位置,那么此时无论怎么调整都无法使得它在新序列的第一个位置,此时就要考虑让 \(n-1\) 在新序列的第一个位置,和 \(n\) 不在原序列的第一个位置类似,我们只要找到在原序列中的位置,然后 \(r\) 取这个位置的前一个即可。很明显,如果该数在原序列的末尾,那么 \(r\) 就应是 \(n\).

概述着说,就是右端点要找到 \([2,n]\) 中最大的数,若在末尾,则 \(r=n\),反之 \(r\) 为最大数的前一个数。

接着考虑左端点,我们可以将新序列写成如下形式 \(r+1 \dots n \dots r \dots l \dots 1 \dots l-1\),那么可以发现,当我们确定了右端点时,\(r+1\dots n\) 这一段就是确定了的,接下来就是要让 \(r \dots l \dots 1 \dots l-1\) 这一段尽量的大。因此我们首先要考虑让 \(l\) 尽量地大,那么很明显,若存在 \(a_i>a_{l-i}\),那么此时 \(l\) 取 \(i\) 会是更优解。可以画图理解。

时间复杂度将近 \(O(n)\),通过本题绰绰有余。

#include <cstdio>
#include <iostream>

using namespace std;

int t;
int n;
int a[2005];

int main() {
	scanf("%d",&t);
	while(t--) {
		scanf("%d",&n);
		int opt=0;
		for(int i=1;i<=n;i++) {
			scanf("%d",&a[i]);
			if(i>1&&a[i]>a[opt]) opt=i;//寻找[2,n]中最大数所在位置
		}
		if(n==1) {
			printf("%d\n",a[1]);
			continue;
		}
		int l=opt-1;
		int r=opt-1;//确定右端点
		if(opt==n) l=opt,r=opt;//同上
		for(int i=r-1;i>=1;i--) {//寻找最优左端点
			if(a[i]>=a[l-i]) l=i;
			else break;
		}
		for(int i=r+1;i<=n;i++) printf("%d ",a[i]);
		for(int i=r;i>=l;i--) printf("%d ",a[i]);
		for(int i=1;i<=l-1;i++) printf("%d ",a[i]);
		printf("\n");
	}
	return 0;
}

标签:dots,opt,CF1833D,int,题解,--,端点,序列,Flipper
From: https://www.cnblogs.com/Scorilon/p/17666146.html

相关文章

  • UVA10054 The Necklace题解
    题意给定一个无向图,其中至多有\(50\)个结点,求是否有欧拉回路。题解很明显就是一个无向图求欧拉回路的板子,我们用\(\tt{Hierholzer}\),先说存图,要明确的一个点是这个无向图里是有可能有重边的,所以我们要注意记录的时候不应是单独地记录某一条边是否存在,而是要记录某一条边的数......
  • UVA967的题解
    设\(check_i\)为\(1\simn\)中满足题意的数的数量。显然答案为\(check_j-check_{i-1}\)。注意到\(check\)能直接暴力求出来。那么就可以先把\(10^6\)范围内的所有质数求出来,然后所有数跑一遍,每个数都去旋转得出所有数后判断是否均为质数,记录下来。代码很好写。#incl......
  • 一些奇怪的题的题解
    给定\(n\),求:\[\sum_{i=1}^n\sum_{j=1}^n\frac{i+j}{\gcd(i,j)}\]思路分析:先化式子:\[\begin{aligned}\sum_{i=1}^n\sum_{j=1}^n\frac{i+j}{\gcd(i,j)}&=\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^n\frac{i+j}{d}[\gcd(i,j)=d]\\&=\sum_{d=1}^n\s......
  • CF1774 题解
    A考虑在所有\(0\)前添加正号,在\(1\)前轮流添加正负号即可。B首先根据抽屉原理,我们可以取出最多的颜色,个数记为\(mx\),然后其余颜色可以填在\(mx\)的两两中间,最少要有\((mx-1)(k-1)\)个空位。但是只是必要的,而不是充分的。考虑有多个最大值的情况,发现这些不是作为分界......
  • RTSP/Onvif视频服务器EasyNVR视频平台设备在线但通道无法播放的问题解决方案
    EasyNVR是基于RTSP/Onvif协议的视频平台,可支持将接入的视频流进行全平台、全终端的分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。为了满足用户的集成与二次开发需求,我们也提供了丰富的API接口供用户调用。有需要的用户可参照官方接口文档进行操作。......
  • P3888 题解
    problem&blog。这怎么评到紫上去的啊?差不多就个上位绿吧/qd。首先出题人非常low。为什么这样说呢?因为\(nm\le50,m\len\)就是在说\(m\le7\),出题人为了不让你一眼秒掉这一题,就用这种猥琐的方法写数据范围,是不是很傻逼呢。然后就是状压DP板板题了,判断合法状态只需要......
  • 安防视频监控平台EasyCVR视频集中存储平台接入RTSP设备出现离线情况的问题解决方案
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的......
  • [HAOI2012] 高速公路 题解
    [HAOI2012]高速公路题解题目链接题目要求我们求期望,先考虑一下求期望的公式。根据期望的定义得:期望费用\(E_v=\dfrac{所有可能路线的总费用}{所有可能路线的数量}\).其中,所有可能路线的数量\(=C_{R-L+1}^2=(R-L+1)(R-L)\),可以在常数时间内计算。(这里用大写的\(L\),\(......
  • P2238 题解
    problem&blog。kkk的题解有一些地方是错的/cf,所以写篇题解造福后人。一眼DP,如果你平凡地设\(dp_{i,j}\),会发现买过的是不能再买的,然后就转移不动了。所以要记录每个点附近的点是否被吃过。于是状压,每个二进制位表示\((i,j)\)周围的一些点是否被吃过。不妨钦定\(X\)......
  • VSCode下载慢问题解决
    1.打开vscode官网浏览器搜索:vscodedownload或打开该网站https://code.visualstudio.com/Download/2.选中系统对应的版本 3.复制下载链接地址 4.修改链接地址将复制后的链接地址的域名(上图https后面框起来的那块)修改为 vscode.cdn.azure.cn最后变成类似:https......