1 条题解

  • 0
    @ 2024-11-30 10:52:35

    一道模拟题

    #include<bits/stdc++.h>
    #define r(a) scanf("%d",&a)
    #define f(i,l,r) for(int i=l;i<=r;i++)
    #define F(i,r,l) for(int i=r;i>=l;i--)
    using namespace std;
    int n,a[1505],b[1505],c[1505];
    //b为每个区间男生个数 
    int main(){
    	r(n);
    	f(i,1,n){
    		r(a[i]);
    		b[i]=a[i]-a[i-1];//得男生区间 
    		F(j,i,1){//往左找最近舞伴 
    			if(b[j]){
    				c[i]=i-j+1;//j为位置
    				b[j]--;//男生区间减一 
    				break;//找到舞伴直接退出
    			}
    		}
    	}
    	f(i,1,n){
    		printf("%d ",c[i]);
    	}//输出 
    	return 0;
    }
    /*
    ①对于一对舞伴男生站在女生的左边。
    ②任何一对舞伴之间,要么没有人,要么就有若干对舞伴。
    对于条件: 
    一个女生找到最近的舞伴 ,那么后面女生和其舞伴必夹住这对舞伴
    */
    
    • 1

    信息

    ID
    213
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    (无)
    递交数
    62
    已通过
    39
    上传者