『ACM Jan's LightOJ』
文章平均质量分 66
cnwsycf
No friends , no ACM
展开
-
LightOJ 1085 - All Possible Increasing Subsequences(DP + 线段树 + 离散)
题意 : 求一个数列的所有严格递增子序列的数量。思路 : 定义一个状态:dp[i]表示第i个位置的数a[i]为这个序列的结尾的所有递增子序列数量,dp[i] = ∑dp[k] (a[i] > a[k] && i > k),这样可以用一个线段树来维护寻找[min, a[i] - 1]所有的dp[k]的总和,而因为输入的|a[]| #include #include #incl原创 2013-11-03 12:03:16 · 1290 阅读 · 0 评论 -
lightoj 1027 - A Dangerous Maze(不错的概率题)
题意 : 在n个门前选择一扇门出去, 然后如果第i扇门的 Xi值是正的话,你会花费Xi时间后出去 , 如果Xi是负数的话你会花费-Xi时间后回到老地方,并且忘记了刚才的选择, 选择一扇门的概率是等概的。求出去的期望。思路 :定义一次选择选择到Xi是整数的概率为P1,选择到负数的概率是P2,然后选择了正数后平均在T1时间后出去, 选择了负数后平均在T2时间后回到原地。接着设出去的期望是Y,那么可原创 2013-11-19 15:16:32 · 3047 阅读 · 1 评论 -
lightoj1038 - Race to 1 Again(概率DP)
题意 : 一开始给你一个数D然后随机从它的因子中找出一个x,进行D = D / x操作, 这样算一步,直到D=1结束,问你P(D)的期望是几步。思路 : 建边之后就是典型的概率DP题,状态转移方程式 : P(D) = (∑(P(D的非1和本身因子)+1) + 2) / (因子数+1) ; #include #include const int maxn = 100005;const原创 2013-11-19 16:26:38 · 930 阅读 · 0 评论 -
lightoj 1099 - Not the Best (次短路)
题意 : 求一张图里面的次短路,可以重复走一个节点,并且长度绝对大于最短路。思路 : 用Dijkstra算法求出每个点到起始点和终止点的最短距离, 然后枚举每一条边(ds[a[i]] + de[b[i]] + w[i])和(ds[a[i]] + de[b[i]] + w[i] * 3),选择一条大于最短路的次短路。#include #include #include #inc原创 2013-11-22 17:41:47 · 1006 阅读 · 0 评论 -
lightoj 1281 - New Traffic System (有限制最短路)
题意 : 给你一张有向图, 然后在给你k条新的路和一个d,问你在建立不超过d条新路条件下节点0 到节点n - 1 的最短路。思路 : 这道题目可以转换成有限制的最短路来做的,只要把新边认为w = 1,而旧边就是w = 0,最后w总和不超过 d后就是裸裸的有限制最短路,至于有限制的最短路可以用A* 优化做的,评估函数 是f(x) = g(x) + h(x) 其中g(x)表示的是当前搜索到的满足条原创 2013-11-26 21:55:19 · 1150 阅读 · 0 评论 -
LightOJ 1140 How Many Zeroes?(数位DP)
题意 : 统计[a, b]之间所有数的含0个数只和思路 : 数位DP,用了GYZ的写法,注意下一个数的前缀0不算进去就OK了的, 简单题。#include #include typedef long long lld;lld dp[15][11][15][2], n, m;int bit[15];lld dfs(int len, int x, int sum, i原创 2013-11-28 22:37:20 · 1224 阅读 · 1 评论 -
LightOJ 1095 Arrange the Numbers (容斥原理)
题意 : 1到n的排列中前m个中恰好有k个数每个数都和他的下标相同。问这样有几个 ? 答案取模。思路 : 前m个(1~m)选择k个是组合数C(m, k)种, 然后令x = m - k, y = n - m; 则 x中会有[0, x]个位置是下标和值一样, 这里可以利用容斥原理做,即减去i为奇数的加上i 为偶数的。ans = C(m, k) * ∑ (C(x, i) * (x + y - i原创 2013-12-01 15:40:34 · 1878 阅读 · 0 评论 -
next_permutation的使用
http://www.cplusplus.com/reference/algorithm/next_permutation/?kw=next_permutation在暴力的时候用这个函数可以使得代码看起来简洁很多。例如 : LightOJ 1023 - Discovering PermutationsCODE :#include #include #include us原创 2014-02-28 18:41:27 · 853 阅读 · 0 评论