芯片制作

本文介绍了一个关于CPU制作的问题,涉及到在L型硅片上切割双核处理器的任务。给定一个3n^2个内核的硅片,其中n个内核可能蚀刻失败。目标是计算最多可以切出多少个双核处理器,条件是相邻的两个内核必须都是完好的。通过染色和最大匹配的方法解决此问题,提供了样例输入和输出,并对思路进行了简要说明。
摘要由CSDN通过智能技术生成

芯片制作
时间限制 : 10000 MS 空间限制 : 65536 KB
问题描述
   计算机的大脑通常被称为CPU。
现在国家XX局交给小A一个重要任务,要求他制作一种新型的CPU,幸运的是,CPU研究中心已经将好多个CPU内核蚀刻在硅片上了,这种硅片很可爱,它是由3n^2个内核拼成的L型。当n=5的时候,硅片的形状如下图所示。小A的任务就是把CPU内核从硅片上切割下来,封装在一个铜盒子里拿出来卖钱。
在这里插入图片描述
   由于技术原因,CPU的蚀刻有可能失败,如果某个CPU内核蚀刻失败了,它就不能卖钱了。在上图中,有3个内核蚀刻失败,蚀刻失败的内核的坐标分别是C4,F2,G5。显然,如果硅片上有m个CPU内核蚀刻失败了,则有3n2-m个内核是可以卖钱的,如果每个CPU内只装1个内核(这就是传统的单核处理器),此时你就可以做出3n2-m个CPU。
  小A雇用了你来替他完成这个东西。他把所有任务都交给了你。突然,国家发展和改革委员会决定要发展双核处理器技术。你要做的是双核处理器了。上司告诉你,如果在L型硅片上任意两个相邻的CPU内核都是完好的,那么你就可以把它们一起切下来做成一个双核CPU。所谓相邻,指的是CPU内核有一条公共边界。
   由于你的薪水是按照做出的CPU的个数决定的,现在你想算算最多能切出多少个双核的CPU。

输入格式
   第一行包含2个整数n,k
以下K行,每行包括一个字母和紧跟着的一个整数,代表一个蚀刻失败的CPU的坐标。文件保证坐标在L型硅片内。

输出格式
   一行,仅包含一个整数,代表能切出的最多双核CPU个数。

样例输入 1
2 3
D1
A3
C2

样例输出 1
4

样例输入 2
6 25
C12
B7
D10
D12
A8
C1
L2
E9
L3
F6
F1
D2
L6
D7
G2
B9
L1
F2
I6
B3
A9
G3
B6
L4
A5

样例输出 2
40

提示
在100%的数据中2<=n<=7, 0.1n2<=k<=3n^2。
思路
将相邻边染两种不同色,并标记坏格子,不同色为不同维,且有相邻边的连边,跑一遍最大匹配即为答案。
代码

#include<bits/stdc++.h>
using namespace std;
int ans=0,n,k,s,z;
const int cross=205;//防伪标志
bool point[cross];
bool maps[cross][cross];
bool road[cross];
int link[cross];
bool findit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值