摘要: 题意:N个点构成一棵树。树枝的长度都是1。在当中找两条不相交【没有公共点】的路,使得二者长度之积最大。(2 ≤ n ≤ 200)思路:一开始思路好麻烦,好麻烦,好麻烦,,,,,,,而且WA,,,,,正解:必定存在第三条路径连接两条最长路径。【因为是一棵树】。去掉第三条路径上的某根树枝就可以将原树分成... 阅读全文
posted @ 2015-03-06 21:35 fish7 阅读(233) 评论(0) 推荐(0)
摘要: 两遍BFS。从任意一个点出发,第一遍可以找到直径的一端,从这端出发即可找到另外一端。证明:从U点出发,到达V【画个图便清晰了】1.如果U在直径上,则V一定是直径的一个端点。2.如果U不在直径上。U,V线一定和直径有交点(如果没有交点,从U引一条路到直径交于U'。【反证】)。有交点则V一定是直径另一端... 阅读全文
posted @ 2015-03-06 21:29 fish7 阅读(565) 评论(0) 推荐(0)
摘要: 题意:300个座位构成一个圈。有N个人要入座。共有M个说明 :A B X ,代表B坐在A顺时针方向第X个座位上。如果这个说明和之前的起冲突,则它是无效的。问总共有多少个无效的。思路:并查集的询问方式,,,,直接看代码吧!代码:int n,m;int fa[50005];int dis[50005];... 阅读全文
posted @ 2015-03-06 16:36 fish7 阅读(123) 评论(0) 推荐(0)
摘要: 题意:N个工兵营地,第i个营地有ai个人。三种操作:1.第i个营地增加x个人。2.第i个营地减少x个人。3.查询第i个到第j个营地的总人数。思路:线段树or树状数组代码:(树状数组)int n;int a[50005];int C[50005];void init(){ rep(i,1,n){... 阅读全文
posted @ 2015-03-06 15:46 fish7 阅读(126) 评论(0) 推荐(0)
摘要: 题意:给四个线段(两个端点的坐标)。判断这四个线段能否构成一个矩形。(矩形的四条边都平行于X轴或Y轴)思路:计算几何代码:class Point{public: int x,y; void readd(int xx,int yy){ x=xx; y=yy; ... 阅读全文
posted @ 2015-03-06 15:25 fish7 阅读(194) 评论(0) 推荐(0)
摘要: 题意:N个数。a1...aN。对于每个数而言,每一步只能加一或减一。问最少总共需要多少步使得新序列是非递减序列。N(1 ≤ N ≤ 5000)思路:*一个还不知道怎么证明的结论(待证):最后的新序列b1...bN中的每一个数bi,一定是原a1..aN序列中的某个数。将a1..aN从小到大排列,得到c... 阅读全文
posted @ 2015-03-06 14:29 fish7 阅读(251) 评论(0) 推荐(0)
摘要: 题意:给三个线段(每个线段的两个端点的坐标),问这三个线段能否组成字母A。组成字母A的条件:1.两个线段有公共端点。2.这两个线段夹角小于等于90度。3.第三个线段的两个端点分别在这两个线段上,且各自分割的大小比率不超过4:1思路:直接。。。。。应该开始积累计算几何的代码了,,,,代码:struct... 阅读全文
posted @ 2015-03-06 12:57 fish7 阅读(180) 评论(0) 推荐(0)
摘要: 题意:Little Petya likes numbers a lot. He found that number 123 in base 16 consists of two digits: the first is 7 and the second is 11. So the sum of di... 阅读全文
posted @ 2015-03-06 12:52 fish7 阅读(271) 评论(0) 推荐(0)
摘要: 题意:N个点形成一棵树。给出根结点P还有树结构的信息。输出每个点的F[i]。F[i]:以i为根的所有子结点中编号比i小的数的个数。0 G[N];int C[N];int ans[N];stack S;bool vis[N];void Add(int x){ for(int i=x;i0;i-=... 阅读全文
posted @ 2015-03-06 12:50 fish7 阅读(146) 评论(0) 推荐(0)