摘要: 题意:有N个结点,初始时每个结点的父节点都不存在。你的任务是执行一次I操作和E操作,格式如下。I u v:把结点u的父节点设为v,距离为|u-v|除以1000的余数。输入保证执行指令前u没有父节点。E u:询问u到根节点的距离分析:因为题目只查询结点到根节点的距离,所以每棵树除了根节点不能换之外,其他结点的位置可以任意改变,这恰好符合并查集的特点,但是需要记录附加信息。// File Name: 1329.cpp// Author: zlbing// Created Time: 2013/3/8 22:06:16#include<iostream>#include<strin 阅读全文
posted @ 2013-03-08 22:34 z.arbitrary 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 一道简单的并查集。。题意其实就是判断是否有环。。// File Name: 1160.cpp// Author: zlbing// Created Time: 2013/3/8 21:26:11#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set>#include<map>#include<vector>#include<cstring>#inc 阅读全文
posted @ 2013-03-08 21:39 z.arbitrary 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 刘汝佳新书---训练指南题意:有K个整数数组,包含K个元素。在每个数组中取一个元素加起来,可以得到k^k个和。求这些和中最小的K个值分析:这题有简化版本的,即2个整数数组A,B,包含K个元素,在每个数组中取一个元素加起来,可以得到k^2个和,求这些和中最小的K个值。我们需要把这k^2个和组织成如下k个有序表.表1:A1+B1<=A1+B2<=......<=A1+Bk表2: A2+B1<=A2+B2<=......<=A2+Bk表k:Ak+B1<=AK+B2<=......<=Ak+Bk我们可以用二元组(s,b)来表示一个元素即s=Aa+B 阅读全文
posted @ 2013-03-08 21:12 z.arbitrary 阅读(1194) 评论(4) 推荐(0) 编辑
摘要: 题意:你的任务是编写一个称为argus的系统。该系统支持一个register命令 Register Q_num Period该命令注册了一个触发器,它每个Period秒钟就会产生一次编号为Q_num的事件。你的任务是模拟出前K个事件。如果多个事件同时发生,先处理Q_num小的事件。分析:用优先队列来维护每个触发器的“下一个事件“,然后每次从中取出最早发生的一个事件,重复K次即可。// File Name: 1203.cpp// Author: zlbing// Created Time: 2013/3/6 18:18:19#include<iostream>#include< 阅读全文
posted @ 2013-03-08 20:13 z.arbitrary 阅读(227) 评论(0) 推荐(0) 编辑