【2018.4.21】模拟赛之四-ssl2405 巧克力【实际上是模拟】
生活随笔
收集整理的這篇文章主要介紹了
【2018.4.21】模拟赛之四-ssl2405 巧克力【实际上是模拟】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
大意
有n塊巧克力,一個a*b的網格,如果網格可以完全包括一塊巧克力就可以獲得這塊巧克力,求最多能獲得的巧克力數量
解題思路
枚舉點(在巧克力上的)和各種情況,然后判斷這種情況包括多少個巧克力,然后取最大值。
代碼
#include<cstdio> #include<algorithm> using namespace std; int x[101],y[101],n,a,b,x1,y1,x2,y2,lx[51],ry[51],rx[51],ly[51],s,maxs; int xx,xy,yx,yy; int answer(int x1,int y1,int x2,int y2)//判斷包含多少個巧克力 {int s=0;for (int i=1;i<=n;i++)if (lx[i]>=x1 && ly[i]>=y1 && rx[i]<=x2 && ry[i]<=y2) s++;return s; } int main() {freopen("cho.in","r",stdin);freopen("cho.out","w",stdout);scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d%d%d%d",&xx,&xy,&yx,&yy);lx[i]=min(xx,yx);ly[i]=min(xy,yy);rx[i]=max(xx,yx);ry[i]=max(xy,yy);x[i*2-1]=xx;y[i*2-1]=xy;x[i*2]=yx;y[i*2]=yy;}scanf("%d%d",&a,&b);for (int i=1;i<=n*2;i++){maxs=max(maxs,answer(x[i],y[i],x[i]+a,y[i]+b));maxs=max(maxs,answer(x[i]-a,y[i],x[i],y[i]+b));maxs=max(maxs,answer(x[i],y[i]-b,x[i]+a,y[i]));maxs=max(maxs,answer(x[i]-a,y[i]-b,x[i],y[i]));maxs=max(maxs,answer(x[i],y[i],x[i]+b,y[i]+a));maxs=max(maxs,answer(x[i]-b,y[i],x[i],y[i]+a));maxs=max(maxs,answer(x[i],y[i]-a,x[i]+b,y[i]));maxs=max(maxs,answer(x[i]-b,y[i]-a,x[i],y[i]));//枚舉8種情況}printf("%d",maxs); }總結
以上是生活随笔為你收集整理的【2018.4.21】模拟赛之四-ssl2405 巧克力【实际上是模拟】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【2018.4.21】模拟赛之三-ssl
- 下一篇: ssl初一组周六模拟赛【2018.4.2