本文共 1677 字,大约阅读时间需要 5 分钟。
一步一步模拟,做这种题好累
先放大的的,然后记录剩下的空位有多少,塞1*1和2*2的进去
//#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define pb(a) push(a)#define INF 0x1f1f1f1f#define lson idx<<1,l,mid#define rson idx<<1|1,mid+1,r#define PI 3.1415926535898template T min(const T& a,const T& b,const T& c) { return min(min(a,b),min(a,c));}template T max(const T& a,const T& b,const T& c) { return max(max(a,b),max(a,c));}void debug() {#ifdef ONLINE_JUDGE#else freopen("in.txt","r",stdin); //freopen("d:\\out1.txt","w",stdout);#endif}int getch() { int ch; while((ch=getchar())!=EOF) { if(ch!=' '&&ch!='\n')return ch; } return EOF;}bool run(){ int a[7]; for(int i=1;i<=6;i++) cin>>a[i]; int cnt=0; for(int i=1;i<=6;i++)if(a[i]!=0)cnt=1; if(!cnt)return 0; int res=0; int d1=0,d2=0; res+=a[6]; res+=a[5]; d1+=a[5]*11; res+=a[4]; d2+=a[4]*5; res+=(a[3]+3)/4; if(a[3]%4!=0) { d1+=8-a[3]%4; d2+=7-2*(a[3]%4); }// if(a[3]%4==1)// d1+=7,d2+=5;// else if(a[3]%4==2)// d1+=6,d2+=3;// else if(a[3]%4==3)// d1+=5,d2+=1;// 写完发现有规律。。 int x; x=min(a[2],d2); a[2]-=x;d2-=x; d1+=d2*4; x=min(a[1],d1); a[1]-=x;d1-=x; res+=(a[2]+8)/9; if(a[2]%9!=0) d1+=(9-a[2]%9)*4; x=min(a[1],d1); a[1]-=x;d1-=x; res+=(a[1]+35)/36; printf("%d\n",res); return true;}int main(){ std::ios::sync_with_stdio(false); while(run()); return 0;}
转载于:https://www.cnblogs.com/BMan/p/3650590.html