摘要:
题目链接:http://poj.org/problem?id=1236 题意:向一些学校分配一种软件,有些学校获得软件后可以分配给其它学校(有向边),分别求:1.最少要分配多少个软件使得所有学校都能获得软件。2.最少要加几条边使得只要分配一个软件给其中任意一个学校,其它学校都能获得软件。 对于第一个问题很好求,就是入度为0的强连通分量中的点的个数。对于第二问,就是加多少条边使得图是强联通的,考虑那么只要考虑入度为0和出度为0的强连通分量,使得他们能成环,那么就是它们之间的最大值,注意一个强连通分量时要特殊考虑。 1 //STATUS:C++_AC_0MS_216KB 2 #incl... 阅读全文
摘要:
题目链接:http://poj.org/problem?id=2553 题意:在有向图中,求出一些点,自己能到达的点一定能到达自己。 简化模型,就是求出度为0的强连通分量中的那些点。 1 //STATUS:C++_AC_79MS_712KB 2 #include <functional> 3 #include <algorithm> 4 #include <iostream> 5 //#include <ext/rope> 6 #include <fstream> 7 #include <sstream> 8 #inclu 阅读全文
摘要:
1877题目链接:http://poj.org/problem?id=1887 3903题目链接:http://poj.org/problem?id=3903 数据大,线性优化,O(n*logn)。1877: 1 //STATUS:C++_AC_16MS_172KB 2 #include <functional> 3 #include <algorithm> 4 #include <iostream> 5 //#include <ext/rope> 6 #include <fstream> 7 #include <sstream 阅读全文
摘要:
题目链接:http://poj.org/problem?id=1631先确定一方有序后,就是LIS问题了。 仔细观察上图:红色航线是合法的,那么他们满足什么规律呢? C1 C2 C3 C4北岸红线的端点: 4 9 15 17南岸红线的端点: 2 8 12 17 D1 D2 D3 D4不难看出无论线的斜率如何,都有这样的规律: C1<C2<C3<C4 且 D1<D2<D3<D4如果我们把输入数据排升序,问题变抽象为:在一个序列(D)里找到最长的序列满足DI<DJ<Dk……且i<j<k这样的话便是典型的最长非降子序列问题了。。。。法... 阅读全文
摘要:
联合训练赛中遇到的(以后留给新生做):1.排列的逆序数题目描述{1,2...n}的所有排列中逆序数为k的排列个数。输入多组样例,每组样例: n, k ( 1≤n≤100, 0≤k≤n*(n-1)/2)输出对于每个样例,输出排列个数,答案模1000000007。样例输入2 1样例输出1简单DP,转移方程: f[i][j]为前i个数所有排列中逆序数为j的个数,则f[i][j]=Σ( f[i-1][k] | max(0,j-i+1)<k<=j )。 1 //STATUS:C++_AC_93MS_1348KB 2 #include <functional> 3 #include 阅读全文