CF 216A - Tiling with Hexagons

来源:互联网 发布:星星知我心2007 编辑:程序博客网 时间:2024/06/06 19:36

 

题目地址: http://www.codeforces.com/problemset/problem/216/A

 

方法一:  

 

YY的写法,转化成水平相互对齐的图形去做即可。。。

 

 

#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cmath>#include<algorithm>using namespace std;const int inf = 0x7fffffff;int main(){int a[3],kk,k,sum;while(~scanf("%d%d%d",&a[0],&a[1],&a[2])){sort(a,a+3);k=a[1]-1+a[0];sum=2*((k*(k+1)/2)-(a[0]*(a[0]-1)/2));if(a[1]==a[2]) sum-=k;else sum+=(a[2]-a[1]-1)*k;printf("%d\n",sum);}return 0;}/*2 3 3 142 2 4132 2 27*/


 

方法二:

 

 

将所有小六边形 立体化 转化成 小正方体~~ 

很容易就发现,这图形很像一个长方体·~ 

于是,题目的问题就转化成: 

由一些小正方体组成一个a*b*c 的大长方体,问你从图中这个角度去看,能看到多少个小正方体? 

那么显然。。。 res = a*b*c - (a-1)*(b-1)*(c-1) 

 

#include<iostream>#include<cstring>#include<cstdio>#include<queue>#include<cmath>#include<algorithm>using namespace std;const int inf = 0x7fffffff;int main(){long long a,b,c;cin>>a>>b>>c;cout<<a*b*c-(a-1)*(b-1)*(c-1)<<endl;return 0;}/*2 3 3 142 2 4132 2 27*/


 

 

 

原创粉丝点击