题意:有一块边长为N的正方形的大蛋糕,现在给出n块不同尺寸的正方形的小蛋糕的边长,问是否能把大蛋糕按恰好切割为这n块小蛋糕,要求每块小蛋糕必须为整块。

分析:用a[i]==j表示第i 行已填的长度为j,排序后相同的小蛋糕不重复考虑。由于小蛋糕边长范围为1~10,所以可以用b[1~10]分别表示边长为1~10的小蛋糕个数

int a[50],N;//大方快每行已填长度
int b[18],n;    //小方块边长
int c[18];  //小方块是否用过
int s;  //当前已用的小方块数
int ans=0;void zuishao(int &p1,int &p2,int &lenth){p1=p2=1;lenth=a[1];int lianxu=1;for(int i=2;i<=N;i++) {if(a[i]<a[p1]) {p1=p2=i;lenth=a[i];lianxu=1;}if(a[i]==a[p2]&&lianxu==1) p2=i; if(a[i]>a[p2]) lianxu=0; }
}void solve() {if(s==n) ans=1; if(ans) return;int p1,p2,lenth;zuishao(p1,p2,lenth);//b[i]<len则不必调用int len=(p2-p1+1)<(N-lenth)?(p2-p1+1):(N-lenth);for(int i=0;i<n;i++) {if(b[i]>len||c[i]==1) continue; for(int j=p1;j<p1+b[i];j++) a[j]+=b[i]; s++;c[i]=1;solve();c[i]=0;s--;for(int j=p1;j<p1+b[i];j++)  a[j]-=b[i]; while(i+1<n&&b[i+1]==b[i]) i++; }
}bool cmp(int a,int b) { return a>b; }void readData() {cin>>N>>n;for(int i=0;i<n;i++) {cin>>b[i];c[i]=0;}sort(b,b+n,cmp);for(int i=1;i<=N;i++) a[i]=0; s=0;ans=0;
}int main() {int t;cin>>t;for(int r=0;r<t;r++) {readData();solve();if(ans) cout<<"KHOOOOB!"<<endl; else  cout<<"HUTUTU!"<<endl; }return 0;
}

转载于:https://www.cnblogs.com/ts65213/p/3146978.html

poj 1020 深搜相关推荐

  1. POJ 1562深搜判断连体油田个数

    http://poj.org/problem?id=1562 大意:输入mp二维矩阵,规定'@'连体的包括对角线为一片油田,统计共有多少油田.深搜方向数组dir设置8个方向遇到@继续搜索把当前位置赋值 ...

  2. Poj(2488),按照字典序深搜

    题目链接:http://poj.org/problem?id=2488 思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序. 后来,凡哥说可以在搜索路径的时候就按照字 ...

  3. 简单深搜(poj 3009)

    题目链接:http://poj.org/problem?id=3009 题目:冰壶撞向目的地,只有遇到"1"才能停下来,并且把"1"撞成"0" ...

  4. poj 1950 Dessert 深搜

    题意: 给n,问有多少和由1,2...n,和'+','-','.'(表示连接,4.5表示45)组成,值为0的表达式. 分析: 深搜,因为要枚举到"连接"的情况,所以传送pre表示上 ...

  5. POJ 3414 Pots(深搜并打印路径)

    POJ 3414 Pots(深搜并打印路径) You are given two pots, having the volume of A and B liters respectively. The ...

  6. I - 滑雪 POJ - 1088(深搜,记忆化搜索)

    Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底滑坡. ...

  7. ROADS POJ - 1724(限制条件的最短路)【邻接表+深搜】

    思路:先说下题意,题意第一行给了一个k,代表你有k的钱数,下一行有一个n,代表n个点,然后一个m,代表m条边,然后接下来m行,每行有四个数,分别代表起点.终点.路径长度和要花费的钱数,题目想问在花的钱 ...

  8. poj—2488骑士的旅程(深搜)

    题目: 骑士厌倦了一次又一次地看到相同的黑白方块,并决定 环游世界.每当骑士移动时,它都是一个方向上的两个正方形和一个垂直于此方向的正方形.骑士的世界就是他所生活的棋盘.我们的骑士住在一个棋盘上,这个 ...

  9. 深搜DFS\广搜BFS 图初步入门

    首先,不管是BFS还是DFS,由于时间和空间的局限性,它们只能解决数据量比较小的问题. 深搜,顾名思义,它从某个状态开始,不断的转移状态,直到无法转移,然后退回到上一步的状态,继续转移到其他状态,不断 ...

最新文章

  1. viterbi维特比算法和隐马尔可夫模型(HMM)
  2. 深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战
  3. python三角形判断白盒测试的代码_进化的测试 软件测试,自动化测试,白盒测试,Python...
  4. 江苏卫视舞蹈演员机器人_虽然跨年湖南卫视收视第一,但要说专业,还属江苏卫视...
  5. mysql复制主从集群搭建
  6. 慎用Hyper-Threading Technology
  7. 九城最多多少组服务器,历经4年之久 九城WOW服务器价值几何
  8. mysql知识汇总2019
  9. 要么出色,要么出局!威马公布三大核心技术矩阵背后的大野心
  10. YUV与RGB互转各种公式
  11. oh-my-zsh主题添加命令显示执行时间和当前时间
  12. Windows 2003系统25招加速大法
  13. Exploiting Unintended Feature Leakage in Collaborative Learning 阅读心得
  14. android 酷狗demo_在Android上使用酷狗歌词API
  15. spring boot 源码解析52-actuate中MVCEndPoint解析
  16. 华为测试 称砝码
  17. 用计算机打生僻字的歌,学子写抖音最火《生僻字》歌,70多个生僻字,懵了~
  18. PHP将ppt转成图片查看
  19. layui自定义验证表单
  20. 有哪些道理是你毕业多年后才明白的?

热门文章

  1. girton college things locations
  2. Final Cut Pro快捷键
  3. 大数据初学者必备的详细版学习路线图
  4. HDU 2152 选课时间(题目已修改,注意读题) (母函数)
  5. 《Unity 3.x游戏开发实例》——2.10节注意
  6. Android --修改arr文件
  7. caffe 一些网络参数
  8. Codeforces Round #325 (Div. 2) Laurenty and Shop 模拟
  9. Bitmap 多语言实现及应用
  10. ERWin 7.1 和7.2 的官方FTP下载地址