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. ...
随机推荐
- VC 读取服务器上的文件(HTTP方式) [转]
CString GetStringFromUrl(LPCTSTR pszUrl){ CString str ; HINTERNET hSession = ::InternetOpen( _ ...
- mac异常删除管理员账户恢复操作
重新启动电脑,同时按下command+s键进入命令行方式 待系统加载完成后顺序输入以下命令: /sbin/mount -uaw rm var/db/.applesetupdone reboot 待系统 ...
- ZooKeeper 授权验证
ZooKeeper 授权验证 学习了:https://blog.csdn.net/liuyuehu/article/details/52121755 zookeeper可以进行认证授权:
- 改进后的向量空间模型(VSM)
我们採用更加形式化的定义,并採用稍大一些的样例来展示怎样使用基于数据集频率的权重.相应于一个给定的词项,其权重使用IDF(逆文档频率)来计算. 为了给每篇文档建立一个相应的向量,能够考虑例如以下定义. ...
- Cts框架解析(15)-任务运行完
case运行完成后.会回到CtsTest的run方法中: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRmb290YmFsbA==/font/5a6L ...
- 前言(CSDN也有Markdown了,好开森)
实战出精华 在具体的C++网络编程中提升你的逼格 John Torjo Boost.Asio C++ 网络编程 Copyright © 2013 Packt Publishing 关于作者 做为一名权 ...
- Intel® RAID Software Users Guide
Intel® RAID Software Users Guide: Intel ® Embedded Server RAID Technology 2 Intel ® IT/IR RAID I ...
- Spring Cloud(十):服务网关zuul(转)
前面的文章我们介绍了,Eureka用于服务的注册于发现,Feign支持服务的调用以及均衡负载,Hystrix处理服务的熔断防止故障扩散,Spring Cloud Config服务集群配置中心,似乎一个 ...
- caffe2--Install
Install Welcome to Caffe2! Get started with deep learning today by following the step by step guide ...
- FFmpeg编码详细流程
FFmpeg在编码一个视频的时候的函数调用流程.为了保证结构清晰,其中仅列出了最关键的函数,剔除了其它不是特别重要的函数. 函数背景色 函数在图中以方框的形式表现出来.不同的背景色标志了该函数不同的作 ...