hdu5355 Cake
and today is their birthday. The 1-st
soda has prepared n cakes
with size 1,2,…,n.
Now 1-st
soda wants to divide the cakes into m parts
so that the total size of each part is equal.
Note that you cannot divide a whole cake into small pieces that is each cake must be complete in the m parts.
Each cake must belong to exact one of m parts.
indicating the number of test cases. For each test case:
The first contains two integers n and m (1≤n≤105,2≤m≤10),
the number of cakes and the number of soda.
It is guaranteed that the total number of soda in the input doesn’t exceed 1000000. The number of test cases in the input doesn’t exceed 1000.
If it is possible, then output m lines
denoting the m parts.
The first number si of i-th
line is the number of cakes in i-th
part. Then si numbers
follow denoting the size of cakes in i-th
part. If there are multiple solutions, print any of them.
4
1 2
5 3
5 2
9 3
NO
YES
1 5
2 1 4
2 2 3
NO
YES
3 1 5 9
3 2 6 7 3 3 4 8 这题和木棒拼接正方形非常像,用同样的思路即可了。 这里注意dfs可能比較深,所以要手动开栈。#pragma comment(linker, "/STACK:102400000,102400000") 这句话加在程序最前面。#pragma comment(linker, "/STACK:102400000,102400000")
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;
#define maxn 100050
#define ll long long
int vis[maxn],liang,fen,n;
set<int>myset[20];
set<int>::iterator it; int dfs(int x,int pos,ll len)
{
int i;
if(x==fen)return 1;
for(i=pos;i>=1;i--){
if(!vis[i]){
vis[i]=1;
if(len+i<liang){
myset[x].insert(i);
if(dfs(x,i-1,len+i))return 1;
myset[x].erase(i);
}
else if(len+i==liang){
myset[x].insert(i);
if(dfs(x+1,n,0))return 1;
myset[x].insert(i);
}
vis[i]=0;
}
}
return 0;
} int main()
{
int i,j,T;
ll num;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&fen);
num=(ll)(n+1)*n/2;
if(n<fen || num%fen!=0 || num/fen<n){
printf("NO\n");continue;
}
liang=num/fen;
memset(vis,0,sizeof(vis));
for(i=0;i<=fen;i++){
myset[i].clear();
} if(dfs(0,n,0)){
printf("YES\n");
for(i=0;i<fen;i++){
printf("%d",myset[i].size());
for(it=myset[i].begin();it!=myset[i].end();it++){
printf(" %d",*it);
}
printf("\n");
}
}
else printf("NO\n");
}
return 0;
}
/*
100
50 10
NO
40 10
YES
3 3 39 40
3 7 37 38
3 11 35 36
3 15 33 34
3 19 31 32
3 23 29 30
4 1 26 27 28
5 2 9 22 24 25
5 6 17 18 20 21
8 4 5 8 10 12 13 14 16
*/
hdu5355 Cake的更多相关文章
- hdu5355 Cake(构造)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Cake Time Limit: 2000/1000 MS (Java/Other ...
- hdu5355 思维+爆搜
pid=5355">http://acm.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m sod ...
- Windows 7上执行Cake 报错原因是Powershell 版本问题
在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...
- 2015暑假多校联合---Cake(深搜)
题目链接:HDU 5355 http://acm.split.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m s ...
- Scalaz(15)- Monad:依赖注入-Reader besides Cake
我们可以用Monad Reader来实现依赖注入(dependency injection DI or IOC)功能.Scala界中比较常用的不附加任何Framework的依赖注入方式可以说是Cake ...
- uva10167 Birthday Cake
Lucy and Lily are twins. Today is their birthday. Mother buys a birthday cake for them. Now we put t ...
- HDU 4762 Cut the Cake(公式)
Cut the Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- Brute Force --- UVA 10167: Birthday Cake
Problem G. Birthday Cake Problem's Link:http://uva.onlinejudge.org/index.php?option=com_onlinejudg ...
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest, B. Layer Cake
Description Dasha decided to bake a big and tasty layer cake. In order to do that she went shopping ...
随机推荐
- struts2结果处理、获取参数(二)
结果处理 1.转发 type可以不写,默认就是转发 <package name="hello" namespace="/hello" extends=&q ...
- Bootstrap中container与container-fluid的区别
/*0-768px以上宽度container为100%*/ .container { padding-right: 15px; padding-left: 15px; margin-right: au ...
- Multipart/form-data POST文件上传
简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form method="post"action=&qu ...
- 【Android】实例 忐忑的精灵
在Android Studio中创建项目,名称为“Animation And Multimedia”,然后在该项目中创建一个Module,名称为“Frame-By-Frame Animation”.在 ...
- js视频学习笔记1
1:数组赋值的个数长度定义无效,第4个存储的数还是能原封不动打印出来. js的数组是内部有一个变量名叫0,它的值是1,有一变量名叫1,它的值是2.是这样表示的 2:js是弱类型语言,没有var标识符, ...
- mysql主从不同步,提示更新找不到记录
查看丛库状态show slave status\G 从库原文提示:Last_Error: Coordinator stopped because there were error(s) in the ...
- List 练习
(List)已知有一个Worker 类如下: public class Worker { private int age; private String name; private double sa ...
- DE2之7-segment displays
以前课题用的是友晶的DE2-70,现在重拾FPGA,选了一款性价比高的DE2.恰逢闲来无事,于是尝试将各个Verilog模块翻译成VHDL,半算回顾以前的知识,半算练习VHDL. Verilog 01 ...
- (转)基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用
http://www.cnblogs.com/wuhuacong/p/4759564.html 在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理& ...
- js 请求单个文件 并验证扩展名
function suffix(file_name) { var three=file_name.split("."); ]; return last; } $('#btnSear ...