为什么每次我都折在 hand 数据上,而且找不到 hack?我已经不知道多少次这样了。蓝瘦香菇 qwq
水平相差无几的同学都能打到我的 1/3 名次,心里着急咋办?
另外,求 hack 我的 D 题代码
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define pb push_back
#define pf push_front
#define pob pop_back
#define pof pop_front
#define pii pair<int,int>
#define pli pair<ll,int>
#define pll pair<ll,ll>
#define pil pair<int,ll>
#define fi first
#define se second
using namespace std;
const int N=50;
int n,m,k,g[N][N];
struct node{
int r,c;
bool use;
}a[N];
inline void del(int id){
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(g[i][j]==id)g[i][j]=0;
}
}
return ;
}
inline bool chk(){
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(!g[i][j])return 0;
}
}
return 1;
}
inline bool check(node now,int id){
for(int i=1;i<=n-now.r+1;++i){
for(int j=1;j<=m-now.c+1;++j){
for(int x=i;x<=i+now.r-1;++x){
for(int y=j;y<=j+now.c-1;++y){
if(g[x][y])goto next;
}
}
for(int x=i;x<=i+now.r-1;++x){
for(int y=j;y<=j+now.c-1;++y)g[x][y]=id;
}
return 1;
next:;
}
}
for(int i=1;i<=n-now.c+1;++i){
for(int j=1;j<=m-now.r+1;++j){
for(int x=i;x<=i+now.c-1;++x){
for(int y=j;y<=j+now.r-1;++y){
if(g[x][y])goto nxt;
}
}
for(int x=i;x<=i+now.c-1;++x){
for(int y=j;y<=j+now.r-1;++y)g[x][y]=id;
}
return 1;
nxt:;
}
}
return 0;
}
void dfs(int siz){
// for(int i=1;i<=n;++i){
// for(int j=1;j<=m;++j)cout<<g[i][j];
// cout<<"\n";
// }
// cout<<"\n";
if(chk()){
puts("Yes");
exit(0);
}
for(int i=1;i<=k;++i){
if(a[i].use)continue;
if(check(a[i],i)){
a[i].use=1;
dfs(siz+a[i].r*a[i].c);
a[i].use=0;
del(i);
}
}
return ;
}
int main(){
cin>>k>>n>>m;
for(int p=1;p<=k;++p)cin>>a[p].r>>a[p].c;
dfs(0);
puts("No");
return 0;
}