首页 > 其他分享 >CF1853C Ntarsis' Set

CF1853C Ntarsis' Set

时间:2023-07-25 22:01:09浏览次数:45  
标签:Ntarsis Set CF1853C int scanf long 插入 include

Miku

一道逆向思维的题目。

我们假设最后的最小的数是个1,放在第一个位置上,然后我们往数列开头按照规则插入0,其中应该插在这个1后面的,我们视为无效插入,插在这个1前面的,我们视为有效插入。

显然随着这个1的后退,每一次有效插入的0越来越多。那么,什么时候的插入是有效的呢,就是当1的位置加上当前的有效插入的0的数量之后已经达到了某个\(a_i\)的值,因为这一次删除不可能把那个1删掉,所以

这一次只有多插一个0才能保证正确。

然后模拟这个插0的过程就行了。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<ctime>
#include<bitset>
using namespace std;
int t;
long long n,k;
long long a[200005];
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%lld%lld",&n,&k);
		for(int i=1;i<=n;++i){
			scanf("%lld",&a[i]);
		}
		if(a[1]!=1) {
			printf("1\n");
			continue;
		}
		a[n+1]=1e18;
		long long pos=1;
		long long x=0;
		while(k--){
			while(x<=n&&a[x+1]<=x+pos){
				x++;
			}
			pos+=x;
		}
		cout<<pos<<endl;
	}
	return 0;
}

标签:Ntarsis,Set,CF1853C,int,scanf,long,插入,include
From: https://www.cnblogs.com/For-Miku/p/17581159.html

相关文章

  • Codeforces 1852A Ntarsis' Set 题解
    题目传送门:Codeforces1852ANtarsis'Set题意给定一个集合,里面初始有\(1,2,3...10^{1000}\),告诉你每天会拿掉其中的第\(a_1,a_2,a_3...a_n\)个,询问这样的\(k\)天之后剩下的最小的数是多少。分析思考如果\(x\)在这天没有被删掉,那么哪些被删掉的位置会对它产生什么......
  • 聊聊List、Set、Map
    1.List哪些实现类JavaList一共三个实现类分别是ArrayList、Vector和LinkedList。(1)ArrayList是最常见用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已有数组的数据复制到......
  • inno setup打包软件学习
    目录一 打包结果二示例打包脚本三错误解决3.1另一个程序正在使用此文件,进程无法访问3.2桌面图标无法修改四参考资料一 打包结果二示例打包脚本使用打包软件下载地址:innosetup-6.2.2.exeUS7,1552023-02-15UnicodeInnoSetup self-installingpackage.#defineMyAppName......
  • 【题解】Ntarsis' Set - Codeforces 1852A
    出处:CodeforcesRound887链接:https://codeforces.com/problemset/problem/1852/A题目大意:给定一个包含\(n\)个正整数的表示删除位置的严格升序序列\(p\),以及另外一个连续正整数的被删除的无穷序列\(l\)。进行\(k\)次删除操作,每次操作从无穷序列\(l\)中同时删除位......
  • 浅析html5的dataset
     前言: 很多时候,我们在操作页面某些元素的时候,需要存储一些数据,一般大家很常见的方式都会设置一些自定义属性,比如: 微博feedlist里面的图片放大:  大家看到有一个自定义的key------action-data,里面存储了一些数据。  那问题来了: 自定义属性命名有没有规范或者标准??获取......
  • C++ bitset
    C++bitset是C++STL库中的一个类,用于存储二进制位的数组,并提供了一些位操作的函数。下面是一些C++bitset的语法:创建一个bitset:可以使用以下语法创建一个bitset:std::bitset<size>bits;//创建一个大小为size的bitset,所有位都被设置为0std::bitset<size>bits(val);//创......
  • AsssetBundle打包(一)
    先建立一个需要打包的配置文件(方便打包路径的修改)usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;[CreateAssetMenu(fileName="ABConfig",menuName="CreatABConfig",order=0)]publicclassABConfig:ScriptableObject{/......
  • Codeforces Round 887 (Div 2) C. Ntarsis' Set
    Ntarsis'Set题意是给你n个数,每次按照顺序删除位于a[i]位置的这n个数,问k次后最小的是多少参考这位大佬的题解CodeforcesRound887(Div2)A~C-知乎(zhihu.com)结合一个官方题解,进行一次操作后,由于前面删掉i个数,a[i]到a[i+1]间所有数的排名都要-=i,那么在a[i]到a[i+1]之间的......
  • Delphi7 TClientDataSet作为内存数据集合使用
    IDE:Delphi7使用TClientDataSet控件在Delphi中保存内存数据集合(相当于Java中的List<Map>),代码片段:procedureTMainForm.btnExportClick(Sender:TObject);tmpCds:TClientDataSet;tmpStr:string;begin//TClientDataSet作为内存数据集合使用//*********************......
  • 117.STL中的multiset
    117.STL中的multiset1.multiset的介绍1.multiset是按照特定顺序存储元素的容器,其中元素是可以重复的2.在multiset在,元素的value也会识别它组成的键值对,multiset元素的值不能在容器中进行修改,但可以插入和删除3.在内部,multiset按照特定的严格弱排序准则进行排序4.multiset容......