这道题其实是一道思维题,我们分别用 III,OOO,TTT,JJJ,LLL,SSS,ZZZ 表示下图的七个图形。

我们不难发现图形 TTT,SSS,ZZZ 要是和其它的图形组成的话必定会剩下单独一个空格,而题目要求宽是为 222。所以如果选了图形 TTT,SSS,ZZZ,填到最后便无法填充,那我们就不考虑图形 TTT,SSS,ZZZ。
接着我们再来看图形 OOO,因为图形 OOO 不管怎样都是可以全部选上的,所以我们让 ansansans 加上 图形 OOO 的数量。
我们排除这些特殊的图形后,就只剩下图形 JJJ,III,LLL。我们可以发现利用这三个图形有两种组成的方法,第一种是用两个 JJJ、两个 III 或两个 LLL 组成的 2×42\times 42×4 的长方形,如下图:

而另一种方法则是图形 J,I,LJ,I,LJ,I,L 各用一个组成的 2×62\times 62×6 的长方形,如下图:

我们再让 ansansans 加上这两个中的最大值就行了。
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int I,O,T,J,L,S,Z,ans;
signed main()
{
cin>>I>>O>>T>>J>>L>>S>>Z;//输入各个图形的数量
ans=max(I/2*2+J/2*2+L/2*2,I>0&&J>0&&L>0?(I-1)/2*2+(J-1)/2*2+(L-1)/2*2+3:0);//求两种方案的最优解
cout<<O+ans<<endl;//注意:一定不要忘记加上图形O的数量
return 0;
}
859

被折叠的 条评论
为什么被折叠?



