poj 1020 Anniversary Cake
来源:互联网 发布:spc数据自动生成 编辑:程序博客网 时间:2024/04/28 22:58
// poj 1020 Anniversary Cake
#include <iostream>
#include <algorithm>
using namespace std;
int n,s,a[11],d[41];
bool flag;
void dfs(int step)
{
if (flag) return ;
if (step==0) { flag=true; return ;}
int j=0;
for (int i=1;i<=s;i++) if (d[i]>d[j]) j=i;
for (int i=10;i>=1;i--)
if (a[i]>0 && j+i-1<=s && i<=d[j])
{
int k;
for (k=j;k<=j+i-1;k++) if (d[j]>d[k]) break;
if (k<=j+i-1) continue;
a[i]--;
for (k=j;k<=j+i-1;k++) d[k]-=i;
dfs(step-1);
a[i]++;
for (k=j;k<=j+i-1;k++) d[k]+=i;
}
}
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
scanf("%d%d",&s,&n);
int sum=0,b;
memset(a,0,sizeof(a));
for (int i=1;i<=n;i++)
{
scanf("%d",&b);
a[b]++;
sum+=b*b;
}
if (sum!=s*s)
{
printf("HUTUTU!/n");
continue;
}
for (int i=1;i<=s;i++) d[i]=s;
d[0]=0;
flag=false;
dfs(n);
if (flag) printf("KHOOOOB!/n");
else printf("HUTUTU!/n");
}
system("pause");
return 0;
}
- POJ 1020 Anniversary Cake
- poj 1020 Anniversary Cake
- POJ 1020 Anniversary Cake
- poj - 1020 - Anniversary Cake
- POJ - 1020 Anniversary Cake
- POJ 1020 Anniversary Cake
- poj 1020 Anniversary Cake
- poj 1020 Anniversary Cake DFS
- POJ 1020 Anniversary Cake dfs
- poj 1020 Anniversary Cake (DFS)
- poj 1020 Anniversary Cake (搜索)
- POJ 1020 Anniversary Cake 笔记
- 【dfs】poj 1020 Anniversary Cake
- POJ 1020 Anniversary Cake 回溯DFS
- POJ 1020 Anniversary Cake 已被翻译
- Anniversary Cake POJ
- pku 1020 Anniversary Cake
- 1020 - Anniversary Cake
- 转 面试中常见的搞笑回答
- linux环境C编程的血泪教训(收藏)
- Visual C++中DDB与DIB位图编程
- 傅立叶变换和小波分析
- poj 1019 Number Sequence
- poj 1020 Anniversary Cake
- poj 1021 2D-Nim
- poj 1026 Cipher
- poj 1029 False Coin
- HTML 基础教程(四)
- HTML 基础教程(五)
- HTML 基础教程(六)
- ORACLE的隔离级别-实用经典版-(isolation level)
- cx_Oracle ImportError: DLL load failed: 找不到指定的模块 解决