题目背景

狗哥又趁着语文课干些无聊的事了...

题目描述

现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢?

输入输出格式

输入格式:

输入文件中的第一行是一个整数n表示测试的组数,接下来n行表示每组的测试数据。 每行的第一个数为m(4<=m<=20),接下来m个数ai(1<=ai<=1000)表示木棒的长度。

输出格式:

对于每组测试数据,如果可以组成正方形输出“yes”,否则输出“no”。

输入输出样例

输入样例#1:

3
4 1 1 1 1
5 10 20 30 40 50
8 1 7 2 6 4 4 3 5
输出样例#1:

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 狗哥玩木棒的更多相关文章

  1. 洛谷——P2383 狗哥玩木棒

    P2383 狗哥玩木棒 题目背景 狗哥又趁着语文课干些无聊的事了... 题目描述 现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢? 输入输出格式 输入格式: 输入文件中的第 ...

  2. 洛谷 P2383 狗哥玩木棒

    题目背景 狗哥又趁着语文课干些无聊的事了... 题目描述 现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢? 输入输出格式 输入格式: 输入文件中的第一行是一个整数n表示测试 ...

  3. 狗汪汪玩转无线电 -- GPS Hacking

    狗汪汪玩转无线电 -- GPS Hacking Kevin2600 · 2015/12/09 10:12 0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因 ...

  4. 洛谷P2380 狗哥采矿

    P2380 狗哥采矿 题目背景 又是一节平静的语文课 狗哥闲来无事,出来了这么一道题 题目描述 一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是 ...

  5. 洛谷 P2380 狗哥采矿

    题目背景 又是一节平静的语文课 狗哥闲来无事,出来了这么一道题 题目描述 一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是多少.最北边有blog ...

  6. P2380 狗哥采矿

    #include<iostream> #include<algorithm> #include<cstring> ; using namespace std; in ...

  7. luogu 题解 P2380 【狗哥采矿】

    拿到dp题我们就要想如何推方程 “最北边有bloggium的收集站,最西边有 yeyenum 的收集站.现在要你在这些格子上面安装向北或者向西的传送带(每个格子只能装一种).” 这说明了什么,对于某一 ...

  8. P2380狗哥采矿(状态不易设计)

    描述:https://www.luogu.com.cn/problem/P2380 首先分析一下,易知传送带一定是要么向上,要么向右.且一定摆满了整个矩阵. 所以我们设 f [ i ] [ j ]表示 ...

  9. 玩了一下SDN:MININET+FLOODLIGHT,感觉这确实是一个趋势啊

    功能用增加中间层的方案来解决. 仿佛回到用交换机和路由器模拟器的感觉. 遇到执行命令小问题,狗哥搞定: mininet>mininet> dpctl dump-flows tcp:127. ...

随机推荐

  1. 转: Android开发的网络抓包

    方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包记录到本地,再把抓到的.cap文件导到pc上面用wireshark来分析.这里步骤非常多,在和后台联调的时候,这个效率是非常低 ...

  2. JavaScript校验输入的字符串是否包含特殊字符

    校验在文本框输入的字符串中是否包含特殊字符串,js代码如下 function strInclude(substring){ if(substring){ var reg = new RegExp(&q ...

  3. mysql 导入sql文件时自动切换了大小写

    windows环境下: 解决办法(即将其改为大小写敏感): 在my.ini中添加 lower_case_table_names=1

  4. HDU 1253:胜利大逃亡(简单三维BFS)

    pid=1253">胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  5. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

  6. Leetcode题解(4):L216/Combination Sum III

    L216: Combination Sum III Find all possible combinations of k numbers that add up to a number n, giv ...

  7. 笔记09 saveFileDialog

    C# saveFileDialog用法: #region 保存对话框private void ShowSaveFileDialog(){//string localFilePath, fileName ...

  8. 笔记08 WPF导航

    如何在winform中做导航,如何重定向界面,就产生了争执. 是用window还是Page还是UserControl? 先不管用啥.我们先比较一下各自的优缺点. 在WPF中使用导航,内容被组织在Pag ...

  9. 如何学习Java?

    一点感悟 java作为一门编程语言,在各类编程语言中作为弄潮儿始终排在前三的位置,这充分肯定了java语言的魅力,在实际项目应用中,我们已经无法脱离javaa(Ps当然你可以选择不使用),但它的高性能 ...

  10. 【TensorFlow-windows】(四) CNN(卷积神经网络)进行手写数字识别(mnist)

    主要内容: 1.基于CNN的mnist手写数字识别(详细代码注释) 2.该实现中的函数总结 平台: 1.windows 10 64位 2.Anaconda3-4.2.0-Windows-x86_64. ...