随笔分类 -  ZOJ

摘要:题意:已知一些小孩所拥有的信息和他最多共享信息量和最少共享信息量 问其中某一个小孩最多得到的信息量给出n表示有n个小孩接下来n行有 a b c a1 a2 a3 a4 ... ai 表示该小孩有信息a条 最少共享 b 条 最多共享 c 条 其中a1 a2 a3~ai为小孩拥有信息id号给出一个m 问的是小孩m最多得到的信息量思路:鉴于这道题中信息id号从 0 ~ 200 但是每个小孩最初最多知道10条信息..所以为了防止遍历的时候太浪费时间 应该把题目id号变成连续的..然后可以用多重匹配或者最大流来做..Tips:多重匹配的建图方法:以信息为 集合X 孩子为 集合Y然后 limit 为 Y. 阅读全文
posted @ 2012-09-21 20:28 Griselda. 阅读(266) 评论(0) 推荐(0) 编辑
摘要:题意:给出 n m 代表第一棵树有 n 个节点 第二棵树有 m 个节点然后接下来 n+m 行给出 a b 表示第 i 个节点的左孩子是 a 右孩子是 b问这两棵树中有多少棵子树是相同的..eg:View Code Sample Input22 2-1 2-1 -12 -1-1 -15 52 34 5-1 -1-1 -1-1 -12 34 5-1 -1-1 -1-1 -1Sample Output111HintThe two trees in the first sample look like this.思路:根据输入的信息建树..用 deg 数组记录这棵树的第 i 个节点有多少棵子树..用 阅读全文
posted @ 2012-09-11 17:16 Griselda. 阅读(1070) 评论(0) 推荐(1) 编辑
摘要:题意:给出了n个数..给m个询问..问在询问范围a, b内从右到左第一个出现重复的数..思路:用map求出离这个数最近的相同的数的位置..然后用rmq求出范围内位置值最大的那个~如果那个位置不在给定范围内或者最大值就是0..代表范围内没有重复的数~就输出OK..否则输出那个数..Tips:用一个数组保存输入的值..最后就可以根据求出的最大位置..找到这个重复的数..Code:View Code 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define clr(x) ... 阅读全文
posted @ 2012-08-29 23:37 Griselda. 阅读(315) 评论(0) 推荐(0) 编辑
摘要:题意:给出order数n给出n行order<3种>第一种:travel A m a1 .. ai .. an表示来了同学A 其中知道m个信息 信息号为a1 .. ai .. an..第二种:share A B表示 A和B同学分享了她们共有的信息..其中信息可传递..并且和share先后无关..第三种:check A 表示问A同学知道了多少条信息思路:用map<string, int> 来让同学名字变成序号..用set来对信息去重..用并查集使资源共享~<可节省内存~>用set里面的size可以求的根节点的大小~即share后掌握的知识点..Tips:set里 阅读全文
posted @ 2012-08-26 21:38 Griselda. 阅读(737) 评论(0) 推荐(0) 编辑
摘要:题意:给出n表示geeks人数..也是位置总数..给出a1 a2 .. ai .. an 表示第 i 个人想要坐从左往右第 ai 个空位..给出m表示询问的个数..给出m个数b1 b2 .. bi .. bn 表示询问第 bi 个人的位置..思路:如果模拟过程..应该是先按要求排好位置..然后输出位置值..排好位置的过程就用到了二分..用树状数组表示当前位置前有多少个空位..然后二分找出满足当前位置前面空位有 ai 个的位置..Tips:记得安排好第i个geeks的位置后要modify树状数组..Code:View Code 1 #include <stdio.h> 2 #incl 阅读全文
posted @ 2012-08-26 21:25 Griselda. 阅读(230) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示