【题解】P6676 [COCI2019-2020#2] Slagalica

博客主要讲述了P6676 [COCI2019-2020#2] Slagalica问题的解题思路,强调2和3号块的特殊性质,即它们不会改变块的突出情况。作者通过观察部分分的性质,发现可以先去除2和3号块,找到字典序最小的解决方案,然后再将2和3号块插入正确位置。1和4号块需要交替出现,根据起始和结束块的形状确定顺序,最终按照字典序排列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

和大众的做法都不太一样,思路比较简单,实现。。。也比较简单

这题部分分真的能提示很多(为什么洛谷上没有部分分),考场上本来在想怎么拿部分分,然后看了一下部分分,想了一下他们的性质,然后。。。就想出正解了。。。但是不会实现嘤嘤嘤


首先我们看看编号为 2 2 2 3 3 3 的块的性质:他们按规则接在某一个块后面,是不会改变这个块的突出情况的

比如: 5 5 5 的右边原本是凸出的,我们把 3 3 3 接在 5 5 5 后面以后,整个块的右边还是凸出的

换句话说,当我们在全部给出的块中去除所有 2 2 2 3 3 3 的块,求出字典序最小的,然后再把 2 2 2 3 3 3 的块插进去就行了

而当 2 2 2 3 3 3 的去掉后,能在中间部分的就只有 1 1 1 4 4 4 了,发现这两个只能交替出现,并且谁先谁后是固定的(可以根据起始块和末尾块的形状确定),然后又由于有一个字典序最小的要求,拍一个序后再放就行了

2 2 2 3 3 3 也就简单了,具体的话看代码

#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
const int MAXN=1e5+5;
struct date{
   
	int id,v;
	bool vis;
	date(){
   }
	date(int ID,int V){
   
		vis=0,id=ID,v=V;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值