首页 > 其他分享 >『模拟赛』暑假集训CSP提高模拟19

『模拟赛』暑假集训CSP提高模拟19

时间:2024-08-12 16:28:37浏览次数:6  
标签:19 mn mx int -- CSP 模拟 pos1

『模拟赛』暑假集训CSP提高模拟19

日常挂分:T2 \(\color{purple} RE\) -60pts

单看T2 T3怕不是学长失恋了(逃

T1 数字三角形

简单贪心。

能往左放就往左放,不行再往下挂。

正确性:

  1. 无论怎么填,一定不会出现某个连通块向右填的情况。

    比如你现在填到第 \(i\) 个数。右边的数要么填满了格子,要么还有剩余。因为格子数是 \(n + (n-1) + \space ··· \space + (n-i+1)\),这正好对应了排列 \(p\) 中前 \(i\) 大的数。因此格子剩余最少的情况(剩0个)就是 \({p_i=n-i+1}\),即 \(p\) 为降序排列。否则一定会有剩余。故一定没有连通块向右填的。

  2. 由上得,每个连通块只会向左或向下拐,而每个块都不会影响下一个块。虽然怪多少次未知,但一定会尽可能填满之前留下的空隙。所以最后每个块都可以连续生成,也就是说本题恒有解。

int n,a[N],strike[N][N];

signed main(){
	n=rd;
	for(int i=1;i<=n;i++){
		a[i]=rd;
		strike[i][i]=a[i];
	}
	
	int cnt;
	for(int i=1;i<=n;i++){
		cnt=a[i]-1;
		int x=i,y=i,num=a[i];
		while(cnt){
			if(strike[x][y-1]==0 && y-1>0){
				strike[x][y-1]=num;
				--cnt;
				--y;
			}else if(strike[x+1][y]==0 && x+1<=n){
				strike[x+1][y]=num;
				--cnt;
				++x;
			}
		}
	}
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=i;j++){
			printf("%lld ",strike[i][j]);
		}
		putchar('\n');
	}
	return Elaina;
}

T2 那一天她离我而去

T3 哪一天她能重回我身边

T4 单调区间

赛后调的BF过了? 样例似乎有点水。

int n,a[N],k1[N],k2[N];
int ans;

bool check(int l,int r){
	int pos1=r,pos2=r;
	for(int i=r-1;i>=l;i--){
		if(a[i]>a[pos1]) pos1=i;
		if(a[i]<a[pos2]) pos2=i;
		if(pos1!=i&&pos2!=i) return 0;
	}
	return 1;
}

signed main(){
	n=rd;
	for(int i=1;i<=n;i++) a[i]=rd;
	
	int i=1,j=1,lst=1;
	while(1){
		int l=lst,r=n;
		while(l<=r){
			int mid=(l+r)>>1;
			if(check(i,mid)){
				l=mid+1;
			}else{
				r=mid-1;
			}
		}
		j=r;
		int mx=0,mn=inf;
		for(int k=i;k<=j;++k){
			if(a[k]<a[r])mx=max(mx,a[k]);
			if(a[k]>a[r])mn=min(mn,a[k]);
		}
		if(!mx)mx=a[r];
		if(mn==inf)mn=a[r];
		++j;
		while(j<=n){
			if(a[j]>mn&&a[j]<mx)break;
			mx=max(a[j],mx);
			mn=min(a[j],mn);
			++j;
		}
		--j;
		lst=r;
		if(j==n){
			ans+=(j-i+2)*(j-i+1)/2;
			return cout<<ans,0;
		}
		ans+=j-i+1;
		++i;
	}
	return Elaina;
}

标签:19,mn,mx,int,--,CSP,模拟,pos1
From: https://www.cnblogs.com/Elaina-0/p/18355208

相关文章

  • 暑假集训CSP提高模拟19
    暑假集训CSP提高模拟19\(T1\)P173.数字三角形\(20pts\)原题:CF1517CFillomino2部分分\(20pts\):剪枝搜索。点击查看代码intp[510],c[510],ans[510][510],dx[5]={0,1,-1,0,0},dy[5]={0,0,0,-1,1};voiddfs(intpos,intx,inty,intnum,intn){ if(pos==n+1) ......
  • P2014 [CTSC1997] 选课
    题意点击查看题目题目描述在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有\(N\)门功课,每门课有个学分,每门课有一门或没有直接先修课(若课程a是课程b的先修课即只......
  • CSP真题答案《202309-01、02》基于Python的实现
    注意:注释在测试CSP时应全部删除!!!第一题:#键盘输入两个数以空格隔开,分别为n,mn,m=map(int,input().split())#根据n值可以循环输入n行值,得到一个列表(操作数)madenum=[list(map(int,input().split()))for_inrange(n)]#根据m值可以循环输入m行值,得到一个列表(初始......
  • IIC模拟 && E2PROM
    IIC模拟&&E2PROM IIC_eeprom.h#ifndef__IIC_EEPROM_H__#define__IIC_EEPROM_H__/*****************************************************************************************型号Byte容量页数页内字节数WORD_ADDR位数WORD_ADDR字节......
  • _cursor_obsolete_threshold 模拟
    创建对象droptablea0001;createtablea0001asselect*fromdba_objects;createtablea0002asselect*fromdba_objectswhere1=2;createindexiOBJECT_IDona0001(OBJECT_ID)createindexiCREATEDona0001(CREATED)收集统计信息begindbms_stats.g......
  • 0219-使用 TAP 来进行通信
    环境Time2022-11-20WSL-Ubuntu22.04Rust1.65.0pnet0.31.0tun-tap0.1.3前言说明参考:https://docs.rs/pnet_packet/latest/pnet_packet/index.html参考:https://www.kernel.org/doc/html/latest/networking/tuntap.html目标通过TAP来模拟二层设备,接收之前发送的......
  • LinkedList模拟栈数据结构的集合,并测试
    packagecom.shujia.day13;importjava.util.LinkedList;/*LinkedList请用LinkedList模拟栈数据结构的集合,并测试栈:先进后出题目的要求是:自己创建一个类,将LinkedList作为成员变量,将来创建自己的类对象,使用自己的方法,但是底层用的是LinkedList中的方法......
  • 暑假模拟16
    暑假模拟16\(T_A\)九次九日九重色最长上升子序列,预处理整除关系,树状数组维护,其中复杂度用到调和级数。\[O(\sum_{i=1}^n\frac{n}{i}\times\logn)=O(n\times\log^2n)\]\(T_B\)天色天歌天籁音挂分最惨的一集。贪心的策略显然,发现这样题目就变为求区间众数,属于比较......
  • 暑假集训CSP提高模拟18
    好像还有好多没写的A.Mortis赛时思路是正解,但有一个判断想了但出锅了。。。\(n\)个数的序列\(n-1\)次肯定能换完,一次操作最多贡献2,找出贡献2的操作个数减去即可有一次操作匹配两个,两次操作匹配三个,三个操作匹配四个,三种情况,记个数都跑一遍即可点击查看代码#include<bi......
  • [赛记] 暑假集训CSP提高模拟18
    T2T4不太可做,所以没改Mortis20pts原题:Luogu[ABC302G]Sortfrom1to4赛时用$set$乱搞拿了20pts,事实证明确实是乱搞;考虑交换只有三种情况:a在b上,b在a上,需要一次;a在b上,b在c上,c在a上,需要两次;a在b上,b在c上,c在d上,d在a上,需要三次;这里的在什么什么上是指原数组......