上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 61 下一页
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1210思路:首先是缩点染色,然后重建并且统计新图中的每个点的入度和出度,于是答案就是max(入度为0的点的个数, 出度为0的点的个数,这里有一个trick就是如果scc_count == 1,那么应该输出0. 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int MAXN = (20000 + 20); 9 int n, m,... 阅读全文
posted @ 2014-01-22 15:23 ihge2k 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1357 1 #define _CRT_SECURE_NO_WARNINGS 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 const int MAXN = (100000 + 10);10 typedef long long ll;11 int n;12 ll child[MAXN];13 ll ans;14 vectorg[MAXN];15 16 ll ... 阅读全文
posted @ 2014-01-20 20:19 ihge2k 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1337思路:对于搜过的区域进行标记,如果要求的点落在已经搜过的区域,那么直接取出来即可,否则,就dfs一下。 1 #define _CRT_SECURE_NO_WARNINGS 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 const int MAXN = (500 + 50);10 int n, m, Q, _count, cnt;11 char map... 阅读全文
posted @ 2014-01-20 10:54 ihge2k 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1257思路:首先需要用到一个知识点就是树上任一点到树上最长直径的某一个端点的距离最远,因此我们可以用dp[u]表示从u点出发到的最远距离,然后从任意一点出发,一遍dfs求出树上最长直径的某一个端点,然后从这个端点出发,再次dfs求出另一个端点,最后在从求出的端点出发进行dfs更新.每次做dfs时都更新一下dp. 1 #define _CRT_SECURE_NO_WARNINGS 2 #include 3 #include 4 #include 5 #include 6 usi... 阅读全文
posted @ 2014-01-19 19:58 ihge2k 阅读(777) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1032思路:数位dp, 采用记忆化搜索, dp[pos][pre][have] 表示 pos处,前一位为pre, 当前有have个满足条件的状态。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 long long dp[34][2][34]; 8 int n, digit[34]; 9 10 long long dfs(int pos, int pre, int have, in... 阅读全文
posted @ 2014-01-14 20:30 ihge2k 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1030思路:一直以来对这种概率题都挺感冒的=.=......还是说一下思路吧,dp[i]表示前i个位置所能能到的期望值,然后我们可以从后往前递推。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int MAXN = (100 + 10); 9 double dp[MAXN], num[MAXN];10 int n;11 12 int main(... 阅读全文
posted @ 2014-01-14 14:26 ihge2k 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1011思路:最近的开始做dp了。。。很明显的一道状态压缩题,dp[n][state]表示前n行状态为state的最大值。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 int dp[17][1<<17]; 8 int n, num[17][17]; 9 10 int main()11 {12 int _case, t = 1;13 scanf("%d", & 阅读全文
posted @ 2013-12-29 21:53 ihge2k 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1214用java写大数果然是方便多了! 1 import java.math.BigInteger; 2 import java.util.*; 3 import java.io.*; 4 5 public class Main{ 6 public static void main(String[] args){ 7 Scanner cin = new Scanner(System.in); 8 int n = cin.nextInt();... 阅读全文
posted @ 2013-12-15 16:02 ihge2k 阅读(1751) 评论(0) 推荐(0) 编辑
摘要: 今天碰到的求解阶乘的位数的公式,记上一笔:ans=(n*log(n/exp(1.0))+0.5*log(4*n*acos(0.0)))/log(base*1.0) + 1;其中base该运算在base进制下。 阅读全文
posted @ 2013-12-13 22:11 ihge2k 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://lightoj.com/volume_showproblem.php?problem=1426思路:首先我们预处理出每一个"*"在某一方向上最终能到达的位置,这里我们可以用一个四维数组来记录next[i][j][k][2],然后首先判断"impossible"这种情况,我们可以对每个"*"进行dfs,看是否能够到达边界,如果存在某个“*”不能到达边界,那么直接就是"impossible“了。判断好这个之后就可以直接bfs求解了,这里我们用map,string >mp来判重,我们可以枚举4个方向, 阅读全文
posted @ 2013-12-11 22:15 ihge2k 阅读(676) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 61 下一页