HDU 4405 Aeroplane chess

昨天周赛的水搜索 然而……………… 因为昨晚基地灯坏了,只能跟寝室里的煞笔一起打(当然他比我强,他10分钟A了 我越写越急 最后写了两个小时……………… 不想多说什么了 先贴上源代码 再分析优化 #include #include #include #include #include #include using namespace std; char str[20]; int flag[20]; int len, ans; bool judge() { int mid; for (mid = 0; mid < len; mid++) if (flag[mid] == 2) break; if (mid == len) return false; long

HDU 4499 Cannon

原创的思维和代码永远比看题解A的兴奋的多! 原创的思维和代码永远比看题解A的兴奋的多!! 原创的思维和代码永远比看题解A的兴奋的多!!! 原创的思维和代码永远比看题解A的兴奋的多!!!! 原创的思维和代码永远比看题解A的兴奋的多!!!!! 原创的思维和代码永远比看题解A的兴奋的多!!!!!! 哪怕算法效率上差别人很多 昨天的周常比赛我看到这题就知道用暴力回溯 想想应该和八皇后难度上差不了多少 就放到最后一小时再写 结果就懵逼了 越写越乱 最后也没写出来 晚上也一直在想 结果发现 越深究,我的思路漏洞越多,这个问题也变得越来越有趣,今天早上还是被我A了 真是痛快 思路就是暴力回溯 具体的 见注释(其实我不建议你看我代码,因为我觉得太臭了,但毕竟是自己亲生的,哈哈哈哈哈哈哈哈哈哈 AC Code #include #include #include #include #include #include using namespac

HDU 1198 Farm Irrigation

不太一样的搜索水题 题意: A–K对应不同水管 要事整个田地都能灌溉到水 ,问 需要到少水源 思路: 一开始想的就是深搜 只是方向都不同罢了 和求连通区域个数没什么区别 属于最水的搜索题 AC Code #include #include #include #include using namespace std; const int maxn=60; char mat[maxn][maxn]; bool vis[maxn][maxn]; int row,col; int dir[12][4]= { {1,0,0,1},{1,1,0,0},{0,0,

CodeForces 14D Two Paths

一看到这道题我就是大写的懵逼 因为上半年去华科还是地大打邀请赛的时候做过类似的题目,当初是写不来的 结果现在……………………还是写不来………………造孽啊 题意: 给你一个无向不成环的图 让你找出两条不相交的树链 使其乘积最大 思路 : 枚举每一条道路 并使其暂时断裂 再从这条道路的两端开始搜索 寻找最长的树链即可 说实话 搜索的题目虽然说做的还凑合 但是这种给你一个连通方式 并以此形成无向图 再加以搜索的题目我还是第一次做 我先想得是用二维矩阵保存路径 以G[u][v] 表示从 u到v是连通的 再用vector省点空间 之后我较为习惯的用了BFS 然后就进入了无限懵逼崩溃懵逼崩溃的状态 说到底用矩阵保存如果不用上结构体的话 很难记录链长 无奈还是写了DFS AC Code #include #include #include #include #include #include #include using namespa

POJ 1011 sticks

题意简单说就是本来几根一样长的棍子 被小明乱切(乱切 没切中也是有可能的) 切成了n根小棍子 要你把n根小棍子恢复原样 可能有多组解 要求输出 每根棍子最短的情况时 棍子长度 据说是极为经典的dfs题 一开始真的不知道怎么搜好(辣鸡无力)闷了1个多小时无奈去看了一下题解 恍然大悟 看完自己敲一A后 细看一下 还是原来那些东西 dfs传参 之前积累的棍长 棍的数量 累加棍的位置 AC Code #include #include #include #include #include #include #include using namespace std; int stick[70]; bool flag[70]; int len,sum,num,n;//len 棍长 sum所有棍子总长度 num棍数目 n小棍数目