摘要:
dfs,O(2^16) 阅读全文
posted @ 2011-02-01 14:27
undefined2024
阅读(696)
评论(0)
推荐(0)
摘要:
dfs,搜索所有的操作方法,O(2^16) 阅读全文
posted @ 2011-02-01 14:27
undefined2024
阅读(683)
评论(4)
推荐(0)
摘要:
题意:平面上有一些点,现要求用一些圆心在x轴上的圆(雷达)来覆盖这些点,问最少需要多少雷达。分析:我的解法是把点按横坐标排序,然后把每个点的雷达尽量往右放,然后每放一个雷达都要保证雷达左面的岛都被雷达所覆盖。所以我们可以按一个点靠右放完雷达后,再根据后面的在雷达位置左面的点,把雷达向左移。一个雷达经过了移的过程,就一定是能覆盖左面的岛。所以排好序后,只需O(n)。注意:unique函数的返回值是结尾指针,所以可以用被注释掉两行的方法来获得数组长度。标准方法是把每个点的放置雷达的区间求出,然后按照区间排序。排好序后,从左至右看,当发现下一个区间的起始点大于前面所有区间的最小结束点的时候,答案加一 阅读全文
posted @ 2011-02-01 14:26
undefined2024
阅读(4403)
评论(0)
推荐(0)
摘要:
本来想二分,后来发现一个函数就解决了。 阅读全文
posted @ 2011-02-01 14:24
undefined2024
阅读(565)
评论(0)
推荐(0)
摘要:
本题中最多5个命题变项:p,q,r,s,t 每个有0,1两种取值,所以总共32种情况,分别枚举即可。 对于每种情况,计算表达式的值,如果有结果为0的则输出not 难点在于如何计算表达式的值,我们采用递归的方法,把表达式分为一或两个子表达式,并把参数end(本表达式的结束位置)传给上一层,一遍上一层获取第二个子表达式的起始位置。最后通过两个子表达式的结束位置,得到整个表达式的结束位置。 en... 阅读全文
posted @ 2011-02-01 14:23
undefined2024
阅读(1803)
评论(1)
推荐(0)
摘要:
最大的难点在于读题,全年十二个月,有8个连续的五个月,1~5,2~6,…… 确定了s和d,8次报告中每次报告有五种选择(i次s,(5-i)次d,i = 0~4),在这五种情况中必然是选择最优的,即亏损且亏损值最小。假设我们按某种顺序安排好了这五个月哪些是亏,哪些是盈。我们就可以让12个月以此5个月为循环构成。然而想要让d在12个月中出现得尽量少,就必须在安排5个月的时候把s排在前面,d排在后面。... 阅读全文
posted @ 2011-02-01 14:23
undefined2024
阅读(1083)
评论(0)
推荐(0)
摘要:
本题的图与其他题稍有不同,本题以左下角为(0,0)点,列号对应x,行号对应y。 完全模拟即可。 阅读全文
posted @ 2011-02-01 14:22
undefined2024
阅读(356)
评论(0)
推荐(0)
摘要:
本题是简单的模拟,使用双层vector嵌套存储棋子的位置和种类,然后分别对每个vector进行排序 注意:排序方法为sort(piece[i].begin(), piece[i].end(), cmpWhite); 当然,cmpWhite是比较函数,可以不加比较函数,只用用前两个参数。 阅读全文
posted @ 2011-02-01 14:21
undefined2024
阅读(476)
评论(0)
推荐(0)
摘要:
可以认为这是一道简单的字符串处理题,只要把相应的值填入map对应的位置,然后把map输出就行了 阅读全文
posted @ 2011-02-01 14:20
undefined2024
阅读(249)
评论(0)
推荐(0)
摘要:
这一题学到的东西太多了 1.大数组不能开在函数中,要使用全局变量 2.bellman_ford算法 3.c语言中struct不能有构造函数,开数组不能使用const的值作为大小,而要用define. 4.代替vector的建图方法,数组模拟链表法,map[i]存第i个点的第一条边在e中的下标。e用来存边,next记录该点的下一条边的坐标。 5.使用vector的效率极低。 本题只需建正... 阅读全文
posted @ 2011-02-01 14:19
undefined2024
阅读(1403)
评论(0)
推荐(0)
摘要:
错了好多次,原因有,path是双向的,开始没考虑到。边的数组应开到2500*2 + 200。图式不连通的,要把图的各个部分都覆盖到。 本题用spfa算法,判断是否有负权回路。若松弛过程中存在某点的入队次数=n,则说明有,否则没有。 阅读全文
posted @ 2011-02-01 14:18
undefined2024
阅读(2044)
评论(0)
推荐(0)
摘要:
题意:每个人都有一个物品,对应一定的钱数,想要得到此物品可以直接出钱,也可以通过用其他人的物品并添加一些钱来交换,问要得到酋长的物品最少需要多少钱?另外,每个人都有一个等级,要求和你交易的人中不能有任何两人的等级相差m以上。分析:我们可以把本题理解为,我们要买一号物品,而一个物品的一部分价值可以转化为别的物品,我们通过购买别的物品和加钱来购买获得一号物品。所以我们可以把需要加的钱数作为该物品到别的物品的一条边,走过这条边,我们要花一些钱,然后我们只需要购买现在所在结点的物品即可。这样就把问题转化为最短路问题,用dijkstra就可以了。本题还有个等级制度的问题。我们可以每次枚举一个宽为m的等级 阅读全文
posted @ 2011-02-01 14:16
undefined2024
阅读(2867)
评论(2)
推荐(3)
摘要:
dijkstra 把存最短距离的数组改为存储frog distance即可 阅读全文
posted @ 2011-02-01 14:15
undefined2024
阅读(289)
评论(0)
推荐(1)
摘要:
floyd算法,floyd过后查看每个点传播消息需要的时间,把最小的点输出即可。 阅读全文
posted @ 2011-02-01 14:14
undefined2024
阅读(756)
评论(0)
推荐(0)
摘要:
题意:给定一些货币之间的单向汇率,问一笔钱能否经过若干次对换而增值。分析:根据输入建立有向图,不能使用dijaskra,因为增值的方法不一定是优先选择最小的路径,并不是贪心所能解决的。所以要用以动态规划为基本思想的floyd来做。#include <iostream>#include <string>#include <vector>using namespace std;const int maxn = 31;struct edge{ int x; double l; edge(int xx, double ll):x(xx),l(l... 阅读全文
posted @ 2011-02-01 14:13
undefined2024
阅读(937)
评论(0)
推荐(0)
摘要:
简单题,只要对所有的数字求出cycle number即可 阅读全文
posted @ 2011-02-01 14:00
undefined2024
阅读(685)
评论(0)
推荐(0)
摘要:
水题,排序 阅读全文
posted @ 2011-02-01 13:59
undefined2024
阅读(511)
评论(0)
推荐(0)
摘要:
这是一道简单题,但是我错了n次。 开数组的时候一定要注意范围,不要直接maxn; 阅读全文
posted @ 2011-02-01 13:58
undefined2024
阅读(458)
评论(0)
推荐(0)
摘要:
水题,注意判断是不是整分钟读完,如果不是,去尾进一。 阅读全文
posted @ 2011-02-01 13:58
undefined2024
阅读(329)
评论(0)
推荐(0)
摘要:
赤裸裸的01背包 阅读全文
posted @ 2011-02-01 13:57
undefined2024
阅读(670)
评论(1)
推荐(1)
摘要:
水题, 排序, 贪心 阅读全文
posted @ 2011-02-01 13:56
undefined2024
阅读(331)
评论(0)
推荐(0)
摘要:
水题,求最大值最小值 阅读全文
posted @ 2011-02-01 13:55
undefined2024
阅读(224)
评论(0)
推荐(0)
摘要:
水题,只要排好序后,从大到小每三个取一个,加起来就是答案。 阅读全文
posted @ 2011-02-01 13:54
undefined2024
阅读(221)
评论(0)
推荐(0)
摘要:
排序之后,能与牛i + 1匹配的,一定能与牛i匹配,所以我们弄一个左指针l,从右向左看每一头牛,每次移动左指针,使左指针左面的都是满足的,右面的都是不满足的即可。 阅读全文
posted @ 2011-02-01 13:53
undefined2024
阅读(429)
评论(0)
推荐(0)
摘要:
简单字符串处理,从规定位置pos开始查找,string::find(char *, pos);还要注意replace的用法string::replace(pos, length, char*); 阅读全文
posted @ 2011-02-01 13:53
undefined2024
阅读(265)
评论(0)
推荐(0)
摘要:
水题,进行两次排序即可 阅读全文
posted @ 2011-02-01 13:52
undefined2024
阅读(413)
评论(0)
推荐(0)
摘要:
枚举分界线的位置,不要忘了最左侧的分界线 阅读全文
posted @ 2011-02-01 13:51
undefined2024
阅读(281)
评论(0)
推荐(0)
摘要:
水题 阅读全文
posted @ 2011-02-01 13:49
undefined2024
阅读(202)
评论(0)
推荐(0)
摘要:
水题,没有算法 阅读全文
posted @ 2011-02-01 13:35
undefined2024
阅读(285)
评论(0)
推荐(0)
摘要:
线性筛法可以过 阅读全文
posted @ 2011-02-01 12:56
undefined2024
阅读(323)
评论(0)
推荐(0)
摘要:
字符串水题 阅读全文
posted @ 2011-02-01 12:55
undefined2024
阅读(232)
评论(0)
推荐(0)
摘要:
kmp算法 首先,这类题不要用cin,应该用scanf和char[] 其次,overlap是重叠的意思,不是扣圈的意思 阅读全文
posted @ 2011-02-01 12:54
undefined2024
阅读(1200)
评论(0)
推荐(0)
摘要:
网络流的最小割问题,看到分配成两部分的题,就要想到网络流最小割,割值是一部分指向另一部分的边的初始容量的总和,不加上另一部分指向本部分的边的容量。而对于最小割来说,最大流流量就是最小割的容量。而划分方法,就是将最大流后残余网络中s可以走到的点划为s集合,其余点划为t集合,注意,不是可以走到t的点,因为有可能有一条线上的多条边都流满的情况,这种情况下有些点就无法走到t,而且s也走不到它。 阅读全文
posted @ 2011-02-01 12:49
undefined2024
阅读(1527)
评论(0)
推荐(0)
摘要:
字符串处理简单题,注意reverse()的使用,这个函数要包含"algorithm" 阅读全文
posted @ 2011-02-01 12:46
undefined2024
阅读(240)
评论(0)
推荐(0)
摘要:
题意:给定三个矩阵a,b,c,问a×b是否等于c?分析:只需要设置一个列向量x,求a*(b*x),求c*x,看是否相等即可。当然这不能保证正确,x是生成的随机向量,多次生成多次测试即可使错误概率大大减小。#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <ctime>#include <algorithm>using namespace std;const int maxn = 510;long lon 阅读全文
posted @ 2011-02-01 12:45
undefined2024
阅读(714)
评论(0)
推荐(0)
摘要:
树状数组题意:给定一棵树,某些节点上有苹果,多次询问各子树上的节点数,并且在询问的中途随时可能新增和删除苹果。分析:dfs遍历树的同时,对每个点标注时间,每个点有一个开始时间和一个结束时间,把这两个时间当做下标,该点的苹果个数(1或0)填入数组的两个对应位。子树中结点的时间段一定是根节点时间段的子段,所以求子树苹果数,只需求数组某区间的和即可。用树状数组比较快。#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;#d 阅读全文
posted @ 2011-02-01 12:44
undefined2024
阅读(2467)
评论(0)
推荐(0)
摘要:
水题,求平均数#include <stdio.h>int main(){ //freopen("D:\\t.txt", "r", stdin); int n; while (scanf("%d", &n) != EOF && n != 0) { int i; int xmin, xmax, sum; scanf("%d", &xmin); xmax = xmin; sum = xmin; for (i = 1; i < n; i++) { int a; scanf( 阅读全文
posted @ 2011-02-01 12:38
undefined2024
阅读(274)
评论(0)
推荐(0)

浙公网安备 33010602011771号