hdu 4277 USACO ORZ
http://acm.hdu.edu.cn/showproblem.php?pid=4277
暴力dfs全部情况,然后用set去重。。。。
刚开始的时候打算用状态压缩,先从所有枝条中找到其中两组枝条,枚举全部情况。不过这种方法搜索要15 * 9E7次,一个case就超时了。后来改成枚举3^15种状态的状态压缩,3^15是不超时的,不过统计的时候每种状态统计15次,这就完蛋了!刚开始的时候没有意识到这样的问题,而且状态压缩我也打的不多,所以没有什么时候该用什么时候不该的意识,所以一直TLE都没有找到原因。最后一次代码,在dfs的时候同时统计三条边,然后在用完所有边后用set来统计(或者hash)有多少个不同的三角形,最后输出就好了。
1000ms的代码,囧:
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <vector> 5 #include <set> 6 7 using namespace std; 8 9 typedef pair<int, int> pii; 10 typedef pair<pii, int> piii; 11 typedef vector<int> vi; 12 13 set<piii> tri; 14 vi len; 15 16 void dfs(int pos, int la, int lb, int lc, int sum){ 17 if (pos >= len.size()){ 18 if (la <= lb && lb <= lc && la + lb > lc) tri.insert(make_pair(make_pair(la, lb), lc)); 19 return ; 20 } 21 if (la + len[pos] <= (sum / 3)) dfs(pos + 1, la + len[pos], lb, lc, sum); 22 if (lb + len[pos] <= (sum >> 1)) dfs(pos + 1, la, lb + len[pos], lc, sum); 23 dfs(pos + 1, la, lb, lc + len[pos], sum); 24 } 25 26 int main(){ 27 int T, n, a, sum; 28 29 #ifndef ONLINE_JUDGE 30 freopen("in", "r", stdin); 31 #endif 32 scanf("%d", &T); 33 while (T-- && ~scanf("%d", &n)){ 34 tri.clear(); 35 len.clear(); 36 sum = 0; 37 38 while (n--){ 39 scanf("%d", &a); 40 len.push_back(a); 41 sum += a; 42 } 43 dfs(0, 0, 0, 0, sum); 44 45 printf("%d\n", tri.size()); 46 } 47 48 return 0; 49 }
搜索的题做太少了,之后一定要好好加强才行!
——written by Lyon
转载于:https://www.cnblogs.com/LyonLys/archive/2012/09/10/hdu_4277_Lyon.html
hdu 4277 USACO ORZ相关推荐
- 很有趣的STL初学资料
1.泛型程序设计简介与迭代器的介绍 2.常见的STL容器及其例题应用(UVA10474,UVA101,UVA10815,UVA156,UVA540,UVA136 HDU1027,CF501B,HDU1 ...
- java中imp结尾,imp java
适配器模式之桥梁模式 设计模式目录 http://blog.csdn.net/fenglailea/article/details/52733435 风.fox 桥梁模式 Bridge Pattern ...
- HDU-4277USACO ORZ深搜+set去重
USACO ORZ(DFS+set去重) 链接 2.题目描述 Like everyone, cows enjoy variety. Their current fancy is new shapes ...
- 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)
为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997) 状态压缩DP Rotate(hdu4998) 相对任一点的旋转 Overt(hdu4999 ...
- hdu4277 暴力
hdu4277 暴力 USACO ORZ Time Limit : 5000/1500ms (Java/Other) Memory Limit : 32768/32768K (Java/Oth ...
- ACM练级日志:set
STL这个东西有时候会出乎意料的好用,第7篇那个让我写了200行的Treap用set这个玩意可以省掉很多代码--所以之后又用set重新写了一遍,正好以前也没用过set,记录一下,万一下次还有呢. se ...
- hdu 2665(主席树查询区间k大值)
先贴我自己写的代码做模板虽然跟原博主没什么两样.(一开始空间开的4*maxn,交到hdu上一直TLE很奇怪) #include<bits/stdc++.h> using namespace ...
- xdoj(1187~1195 )Orz熊猫杯。
这个月好多事啊马上四级,ccf,选修的大作业,两次数据结构上机报告,物理实验考试,以及这个月过去的马上就到了期末考试了.usaco暂时有空就刷没空就不刷了. 上个星期日学校Oj上搞了一个比赛Orz熊猫 ...
- hdu 1306(字符串匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1306 思路:一开始还以为是求最长公共序列呢...仔细一看,orz.....就是求两个串匹配时公共部分字 ...
最新文章
- npm安装出错Unexpected end of input at 1:2307
- java接口常用_java的常用接口
- python数据拟合固定参数_如何将数据拟合到非理想二极管方程(隐式非线性函数)并检索参数 - python...
- 漫步最优化三十——非精确线搜索
- 最全的“大数据”学习资源
- [51单片机] SPI nRF24L01无线 [可以放在2个单片机里实现通信]
- Javascript第二章中switch结构及与if的区别第二课
- mac 看端口占用并杀死进程
- JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
- 查看mysql服务器位置,查看mysql服务器ip地址
- 你要的Chrome插件都在这里了
- python echarts教程_ECharts 入门教程
- 阿里云Dataworks
- 超简单 Python 汉字拼音转换工具
- ffmpeg实例,fade淡入淡出效果
- 计算圆周率可以根据公式如下:请利用Python提供的itertools模块,我们来计算这个序列的前N项和——python
- C++ 虚函数表 vfptr
- Maven基础——什么是Maven
- smallworld 下的magik module 的logger和service provider
- win7系统没有诊断策略服务器,Win7提示诊断策略服务未运行无法诊断检查网络解决方法...
热门文章
- 牛客练习赛36 Rabbit的字符串(最小表示法)
- HDU Problem - 5101 Select(二分)
- 如何检测ARP病毒,arp病毒怎么解决?
- 最受Linux程序员欢迎的7个代码编辑器的介绍及下载地址
- C++ list::splice()用法
- [BUUCTF-pwn]——picoctf_2018_buffer overflow 1
- Lua——基本语法知识,从hello word开始
- Struts2 action的单例与多例
- svn switch 导致个别文件switch失败
- maven 中 部署构件至Nexus(mvn deploy)