题解:CF2111B Fibonacci Cubes
fengpengyu · · 题解
首先,对于一个正方体,它的上下左右有一边若可以继续装,一定能同时包容并排的两个比它小的最大的正方体,因为对于斐波那契数列,
代码
#include<bits/stdc++.h>
#define ll long long
#define R register
#define il inline
using namespace std;
#define rep(x,l,r) for(R int x=l;x<=r;++x)
#define per(x,l,r) for(R int x=l;x>=r;--x)
#define inf INT_MAX
#define linf LLONG_MAX
#define N 20
il ll read() {
ll k=0,f=1;char c=getchar();
while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9') {k=(k<<1)+(k<<3)+(c^48);c=getchar();}return f*k;
}int n,m,dp[N];
int main() {
int T=read();
while(T--){
n=read();m=read();
dp[1]=1;dp[2]=2;
rep(i,3,n+1) dp[i]=dp[i-1]+dp[i-2];
rep(i,1,m){
int w=read(),l=read(),h=read();
if((dp[n+1]<=l||dp[n+1]<=w||dp[n+1]<=h)&&(dp[n]<=w&&dp[n]<=l&&dp[n]<=h))printf("1");
else printf("0");
}printf("\n");
}
return 0;
}