2014年4月9日

HDU 2767:Proving Equivalences(强连通)

摘要: 题意:一个有向图,问最少加几条边,能让它强连通方法:1:tarjan 缩点2:采用如下构造法: 缩点后的图找到所有头结点和尾结点,那么,可以这么构造:把所有的尾结点连一条边到头结点,就必然可以是强连通了。如果说有几个结点不连通,那么让他们的尾结点相互只向对方的头结点就好了。那么,最后的答案就是,头结点和尾结点中比较小的那个数量。当然,如果缩点后只有一个点,那么就是0;代码:#include #include #include #include using namespace std;#define N 20010using namespace std;vector to[N];vector . 阅读全文

posted @ 2014-04-09 22:03 ShineCheng 阅读(140) 评论(0) 推荐(0) 编辑

POJ 2828: Buy Tickets(线段树)

摘要: 扯淡:这题要赞。因为卡了我两次……第三次终于做出来了。。。好吧是看了别人代码之后T T。太弱太弱。。。题意:有n个人排队,但他们会插队。他们按先后顺序来到,每次每个人选择插在Pos[i]这个位置,问最后的排队情况(每个人用其val值表示)。(1 ≤ N ≤ 200,000) 思路:容易想到,最后一个人,插哪,那它就在哪。也就是说,一个人的最后位置,只会被它后面的人影响到。再分析,就会发现,如果一个人插在Pos[i]这个位置,那么表示,它插入的时候,前面有Pos[i]个人(废话)。那么我们倒着计算的时候,由于他后面的人已经进来了,那么第i个人站的实际位置,是在它前面还有pos[i]个空位的位置( 阅读全文

posted @ 2014-04-09 14:38 ShineCheng 阅读(147) 评论(0) 推荐(0) 编辑

导航