12 2016 档案

摘要:题意: 就是说给你一些数,然后要求你使用这些数字组成2个数,然后求他们的差值最小。 思路: 我用的双重DFS做的,速度还比较快,其中有一个很重要的剪枝,若当前搜索的第二个数后面全部补零与第一个数所产生的差值比当前所搜索到的结果还要大,那么就直接返回。这个剪枝就是超时与几十MS的差距 注意一点就是可能 阅读全文
posted @ 2016-12-15 15:51 demianzhang 阅读(336) 评论(0) 推荐(0)
摘要:From: AOJ 0121 思路:与前几题的bfs不同,这次的bfs没有明确的移动对象,看似任意一个数都可以当成对象移动。这时我们只需要抓住一个格子就行,比如我们把0作为移动对象,那么0在地图中漫游所有的格子得到的肯定就是问题的解空间。由于题目的输入是多个case,如果对每个case都运行一遍bf 阅读全文
posted @ 2016-12-12 20:12 demianzhang 阅读(416) 评论(0) 推荐(0)
摘要:题意: 把手臂都各自看成一个向量,则机械手的位置正好是手臂向量之和。旋转某个关节,其实就是把关节到机械手之间的手臂向量统统旋转。 由于手臂很多,要每个向量做相同的旋转操作很费时间。这时就可以想到用线段树的优势正是可以快速地成段更新。和一般的成段更新题目没什么差别,只是通常成段替换、或者成段增加。这时 阅读全文
posted @ 2016-12-12 15:12 demianzhang 阅读(584) 评论(0) 推荐(0)
摘要:POJ 3669 去看流星雨,不料流星掉下来会砸毁上下左右中五个点。每个流星掉下的位置和时间都不同,求能否活命,如果能活命,最短的逃跑时间是多少? 思路:对流星雨排序,然后将地图的每个点的值设为该点最早被炸毁的时间 #include <iostream> #include <algorithm> # 阅读全文
posted @ 2016-12-10 00:47 demianzhang 阅读(471) 评论(0) 推荐(0)
摘要:在H * W的地图上有N个奶酪工厂,分别生产硬度为1-N的奶酪。有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪。老鼠有一个体力值,初始时为1,每吃一个工厂的奶酪体力值增加1(每个工厂只能吃一次),且老鼠只能吃硬度不大于当前体力值的奶酪。 老鼠从当前格走到相邻的无障碍物的格(上下左右)需要时间1单 阅读全文
posted @ 2016-12-10 00:03 demianzhang 阅读(409) 评论(0) 推荐(0)
摘要:POJ 3009 题意: #include<cstdio> #include<iostream> #include<cstring> using namespace std; typedef long long LL; const int INF = 0x7FFFFFFF; const int ma 阅读全文
posted @ 2016-12-09 20:14 demianzhang 阅读(257) 评论(0) 推荐(0)
摘要:有一个筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B管或C管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B管和C管中的球从下往上标号递增。 输入: 第一行输入数据组数N。接下来N行为N组具体数据,每组数据中有10个整数,代表球的放入顺序。 输出: 对于每组数据,若策略存在,输出YES;若不存在,输出NO 解法1:DFS 思路:每次判断当前小球是否大... 阅读全文
posted @ 2016-12-09 17:49 demianzhang 阅读(600) 评论(0) 推荐(0)
摘要:题意:在H * W的矩形果园里有苹果、梨、蜜柑三种果树, 相邻(上下左右)的同种果树属于同一个区域,给出果园的果树分布,求总共有多少个区域。 输入:多组数据,每组数据第一行为两个整数H,W(H <= 100, W <= 100), H =0 且 W = 0代表输入结束。以下H行W列表示果园的果树分布 阅读全文
posted @ 2016-12-09 17:10 demianzhang 阅读(480) 评论(0) 推荐(0)
摘要:标准DFS,统计遍历过程中遇到的黑点个数 #include<cstdio> #include<vector> #include<queue> #include<string> #include<map> #include<iostream> #include<cstring> #include<al 阅读全文
posted @ 2016-12-09 16:22 demianzhang 阅读(239) 评论(0) 推荐(0)