P2383 狗哥玩木棒
题目背景
狗哥又趁着语文课干些无聊的事了...
题目描述
现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢?
输入输出格式
输入格式:
输入文件中的第一行是一个整数n表示测试的组数,接下来n行表示每组的测试数据。 每行的第一个数为m(4<=m<=20),接下来m个数ai(1<=ai<=1000)表示木棒的长度。
输出格式:
对于每组测试数据,如果可以组成正方形输出“yes”,否则输出“no”。
输入输出样例
3
4 1 1 1 1
5 10 20 30 40 50
8 1 7 2 6 4 4 3 5
yes
no
yes
说明
狗哥快抓狂了
题目大意:t组测试 n个木棒 是否能拼成一个正方形
题解:
dfs.
a、因为木棒都要用完,所以木棒的长度和%4!=0 直接输出No
b、最长的木棒大于求出的正方形的边 输出no (sum/4)
代码:
洛谷上面一个代码很好...我加了b的判断
我写的略丑..=L=
搜索用完n个木棒。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int t,n,sum,flag,maxx,w[],a[];
void dfs(int q){
if(q==n+){flag=;return;}
if(flag)return;
for(int i=;i<=;i++){
if(w[i]>=a[q]){
w[i]-=a[q];
dfs(q+);
w[i]+=a[q];
}
}
}
int main(){
scanf("%d",&t);
while(t--){
sum=;flag=;maxx=-0x7ffffff;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];maxx=max(maxx,a[i]);
}
if(sum%){
printf("no\n");
continue;
}
if(maxx>sum/){
printf("no\n");
continue;
}
for(int i=;i<=;i++)
w[i]=sum/;
sort(a+,a+n+,greater<int>());
dfs();
if(flag)printf("yes\n");
else printf("no\n");
}
return ;
}
换个风格
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int t,n,a[],flag,sum,maxx,vis[];
void dfs(int l,int v){
if(v==&&l==sum){flag=;return;}
if(flag)return;
if(l==sum)l=,v+=;
for(int i=;i<=n;i++){
if(!vis[i]&&l+a[i]<=sum){
vis[i]=;
dfs(l+a[i],v);
vis[i]=;
}
}
}
int main(){
scanf("%d",&t);
while(t--){
flag=;sum=;maxx=-0x7ffff;
scanf("%d",&n);
maxx=-0x7ffffff;sum=;
for(int i=;i<=n;i++){scanf("%d",&a[i]);sum+=a[i];maxx=max(maxx,a[i]);}
if(sum%||maxx>sum/){printf("no\n");continue;}
sum/=;
sort(a+,a+n+,greater<int>());
dfs(,);
if(flag)printf("yes\n");
else printf("no\n");
}
return ;
}
P2383 狗哥玩木棒的更多相关文章
- 洛谷——P2383 狗哥玩木棒
P2383 狗哥玩木棒 题目背景 狗哥又趁着语文课干些无聊的事了... 题目描述 现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢? 输入输出格式 输入格式: 输入文件中的第 ...
- 洛谷 P2383 狗哥玩木棒
题目背景 狗哥又趁着语文课干些无聊的事了... 题目描述 现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢? 输入输出格式 输入格式: 输入文件中的第一行是一个整数n表示测试 ...
- 狗汪汪玩转无线电 -- GPS Hacking
狗汪汪玩转无线电 -- GPS Hacking Kevin2600 · 2015/12/09 10:12 0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因 ...
- 洛谷P2380 狗哥采矿
P2380 狗哥采矿 题目背景 又是一节平静的语文课 狗哥闲来无事,出来了这么一道题 题目描述 一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是 ...
- 洛谷 P2380 狗哥采矿
题目背景 又是一节平静的语文课 狗哥闲来无事,出来了这么一道题 题目描述 一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是多少.最北边有blog ...
- P2380 狗哥采矿
#include<iostream> #include<algorithm> #include<cstring> ; using namespace std; in ...
- luogu 题解 P2380 【狗哥采矿】
拿到dp题我们就要想如何推方程 “最北边有bloggium的收集站,最西边有 yeyenum 的收集站.现在要你在这些格子上面安装向北或者向西的传送带(每个格子只能装一种).” 这说明了什么,对于某一 ...
- P2380狗哥采矿(状态不易设计)
描述:https://www.luogu.com.cn/problem/P2380 首先分析一下,易知传送带一定是要么向上,要么向右.且一定摆满了整个矩阵. 所以我们设 f [ i ] [ j ]表示 ...
- 玩了一下SDN:MININET+FLOODLIGHT,感觉这确实是一个趋势啊
功能用增加中间层的方案来解决. 仿佛回到用交换机和路由器模拟器的感觉. 遇到执行命令小问题,狗哥搞定: mininet>mininet> dpctl dump-flows tcp:127. ...
随机推荐
- 快讯 | FireEye在GitHub上开源密码破解工具GoCrack
近日,FireEye 开源了一款密码破解工具 GoCrack,可在多机器上部署破解任务. GoCrack 是由 FireEye’s Innovation and Custom Engineering ...
- Ubuntu中一次更改用户名带来的连锁反应
我是一个ubuntu新手,接触ubuntu半年不到,装系统的时候输入了一个用户名,但是最近突然想更名了,这是悲剧的开始! google:ubuntu change username等相关的关键字,最终 ...
- python读取txt、csv和excel文件
一.python读取txt文件:(思路:先打开文件,读取文件,最后用for循环输出内容) fp = open('test.txt','r') lines = fp.readlines() fp.clo ...
- surface 通过U盘 镜像恢复系统
1. 在恢复之前首先要解锁bitlocker(如果你的surface没有加锁就不需要这个步骤) 在另一台电脑上登录bitlocker锁绑定的微软账号,查询密钥,在需要的地方输入这个密钥(不经过这个操作 ...
- HttpUtility.UrlEncode,Request.RawUrl,HttpUtility.UrlDecode,HttpUtility.UrlPathEncode,Uri.EscapeDataString
碰到同样问题, 记录一下. 引自:https://www.cnblogs.com/ken-admin/p/5826480.html HttpUtility.UrlDecode(url),从Encode ...
- 【ZZ】Visual C++ 6.0 精简安装版(支持VA、ICC 等等安装)
(2012-04-22 08:10:10) 标签: it 分类: 软件_Software Visual C++ 6.0 精简安装版(支持VA.ICC 等等安装) 2012-04-16 21:07 想找 ...
- 2018-11-13-常用模块1 (time random os sys)
1.时间模块 time 2.随机数模块 random 3.与操作系统交互模块 os 4.系统模块 sys 在我们真正开始学习之前我们先解决下面几个问题,打好学习模块的小基础,以便更好的学习模块. (1 ...
- A Short Introduction to Boosting
http://www.site.uottawa.ca/~stan/csi5387/boost-tut-ppr.pdf Boosting is a general method for improvin ...
- 20170316 REUSE_alv_display_lvc 面向对象函数
**将ALV显示数据更新进输出内表中 DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID. CALL FUNCTION 'GET_GLOBALS_FROM_SLV ...
- objective-c的代码块block
一.block 1.bock是由于^开头,括号里面填写参数类型. 标准代码块: 返回值 (^代码块名称) (参数类型) = ^(参数) {方法体}; 2.我们的块即可以定义在函数内或者对象 ...