LightOJ
文章平均质量分 81
时雨晴天
PhD毕业,正在寻找下一个人生目标,愿求文武双全之道。
展开
-
LightOJ 1314 Names for Babies (后缀数组 区间长度子串个数)
题目连接:http://lightoj.com/volume_showproblem.php?problem=1314题意:求字符串长度在[p,q]区间上的子串个数。思路:求sa和height数组。每个位置sa[i]最多产生n-sa[i]个子串,min(q,n-sa[i])为实际产生的子串,减去其中max(p,height[i])个重的#pragma warning(disable原创 2013-08-09 17:51:02 · 1174 阅读 · 0 评论 -
LightOJ 1408 Batting Practice (期望)
题目连接:http://lightoj.com/volume_showproblem.php?problem=1408题意:连续进k1个球或连续不进k2个球则游戏结束,给出进球概率p,求到游戏结束时投球个数的期望。思路:f[i]表示连续i次不命中时到游戏结束剩余投球个数的期望,t[i]表示连续i次命中时到游戏结束剩余投球个数的期望。设命中概率p,则不命中q=1-p。f[i] = q*(原创 2013-08-11 20:13:33 · 1461 阅读 · 0 评论 -
LightOJ 1027 A Dangerous Maze 概率期望学习小记
偶尔做过一些概率期望的题,现在系统的学习下。大学《概率论与统计》的知识基本够用……下面的链接是别人总结的题目:概率DP_滴答_百度空间【DP_概率DP专辑】【10、4最新更新】 - ZeroClock - 博客频道 - CSDN.NET概率dp 与 dp求期望 - 标签 - Because Of You - 博客园概率dp与dp求期望 « DarkSword概率dp原创 2013-08-10 19:32:16 · 1455 阅读 · 0 评论 -
hdu 2955 Robberies + LightOJ 1079 Just another Robbery (01背包 概率)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955题意:有一个小偷要偷银行的钱,可是他偷没家银行总是有一定的概率被抓,现在给了你一个概率P,只要他被抓的概率乘积不大与P,他就是安全的。问你在他安全的情况下,他最多可以偷多少钱。思路:01背包。所有银行的总资产为背包容量V。求最大的逃跑概率。题目给出被抓的概率,要求最大的逃跑率,即1-p原创 2013-02-26 20:22:19 · 864 阅读 · 0 评论 -
最短路题目整理 Hdu 2066 + 1839 + LightOJ 1099(次短路)
Hdu 2066 一个人的旅行思路:新增一个源点和一个汇点,将所有起点与源点连接权值为0的边,将所有终点与汇点连接权值为0的边,从源点到汇点求最短路。#include #include #include #include using namespace std;const int INF = 0x5fffffff; //权值上限const int MAXPT = 101原创 2013-07-30 21:46:42 · 1006 阅读 · 0 评论 -
LightOJ 1289 LCM from 1 to n (节省空间的素数筛法+n个数的最小公倍数)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1289题意:给出n,求1到n的所有数的最小公倍数,模2^32.思路:看到结果需要模2^32,瞬间想到要尝试用unsigned int来存储结果,它可以表示的数据范围是0~2^32-1,这样不用做任何操作,结果自然就是模2^32的。接下来就是筛素数了,常用的方法学名是:埃拉托斯原创 2013-07-21 13:30:02 · 4413 阅读 · 0 评论 -
LightOJ 1231+1232+1122+1047 (简单dp)
LightOJ 1231 Coin Change (I)题目链接 http://lightoj.com/volume_showproblem.php?problem=1231题意:给你n个物品的体积和数量,让你求有多少种组合能恰好装满M体积的背包。思路:最开始想的是多重背包和母函数,发现都不太合适。最后还是回归最基本的dp吧。dp[i][j]表示前i种物品,组成j的容量有几种取法,原创 2013-07-15 11:03:47 · 1225 阅读 · 0 评论 -
LightOJ 1064 Throwing Dice (DP)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1064题意:一次掷n个骰子,求点数之和大于m的概率。思路:dp,将所有数据预处理出来。要用64位整型。#include #include __int64 dp[26][151],p[25];int n,m; void init (){ int i,j,k;原创 2013-07-18 09:30:35 · 1226 阅读 · 0 评论 -
Lightoj 1085 All Possible Increasing Subsequences (树状数组+DP)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1085题意:找出一个序列中的所有上升序列。思路:离散化后,树状数组优化的DP。dp[i]表示以a[i]为序列最后一个数字的上升序列的个数,状态转移方程见注释。很久前写的,都快忘了这题是怎么回事了……#include #include #include #includ原创 2013-07-18 10:46:43 · 1197 阅读 · 0 评论 -
LightOJ 1277 Looking for a Subsequence (LIS)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1277题意:给出一个长度为n的数列。输出数列一个长度恰好为m的下标字典序最小的(即最靠左的)上升子列。思路:从右向左求一次最长递减子列,记录每个位置的dp值,即以该数结尾最长的下降子列的长度。对于给定的m,先从左向右找到一个dp[i]>=m的位置,那么这个数肯定是答案原创 2013-05-15 21:34:29 · 825 阅读 · 0 评论 -
LightOJ 1028 Trailing Zeroes (I)
题目链接 http://lightoj.com/volume_showproblem.php?problem=1028题意:给你一个十进制的数N,把它转化成一个任意进制的数M,并且M的最后一位为0(M为[2,inf)的任意进制),问存在多少种这样的进制。思路:如果N 转化成x进制符合题目给出的条件,则N=an*x^n+an-1*x^n-1+...+a1*x^n=x*(an*x^n-1+原创 2012-12-02 20:17:29 · 770 阅读 · 0 评论 -
LightOJ 1138 Trailing Zeroes (III) (阶乘末尾0的个数)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1138题意:寻找最小的自然数N,使其阶乘的末尾有Q个0.思路:只有2和5相乘时末尾才会出现0,在阶乘过程中,因子2的个数足够多,所以每遇到一个5,末尾就会出现一个0,因此问题转化为求1到N这N个整数中包含了多少个因子5。二分求解。#include int Q,n;原创 2013-04-09 20:09:52 · 1640 阅读 · 0 评论 -
LightOJ 1038 Race to 1 Again (约数+期望)
题目连接:http://lightoj.com/volume_showproblem.php?problem=1038题意:给一个数,用这个数的约数(包括自己)去除这个数,直到得数为1,求除的次数的期望。思路:设一个数的约数有num个,E[n] = E[a[1]]/num+E[a[2]]/num+...+E[a[num]]/num+1 (因为又除一次,所以+1)整理得:E[n]=(原创 2013-08-11 10:36:21 · 1179 阅读 · 0 评论 -
LightOJ 1030 Discovering Gold + Hdu4405 Aeroplane chess (期望)
相似的两题一起总结。LightOJ 1030 Discovering Gold题目链接:http://lightoj.com/volume_showproblem.php?problem=1030题意:投骰子从1走到n,注意在最后如果数字超过剩余的格数要重新投。思路:倒推,dp[i]表示走到i位置(从1开始计数)之后获得的期望#include #include #def原创 2013-08-11 10:20:11 · 1514 阅读 · 0 评论 -
LightOJ 1284 Lights inside 3D Grid (概率期望)
题目连接:http://lightoj.com/volume_showproblem.php?problem=1284题意和思路参考:http://www.cnblogs.com/jianglangcaijin/archive/2013/01/01/2841663.html其中Get函数用于计算一维两点不在同一侧的概率。最后公式又迭代、等比数列求和公式推得。#include #inc原创 2013-08-11 16:17:30 · 1303 阅读 · 0 评论 -
基础BFS 邻接矩阵Flood fill 算法题目总结
很基础的一类BFS题,个人觉得BFS在求最短、最近、最快等题目时比DFS还是有较大优势的Poj 1979 Red and Black#include #include #include using namespace std;const int N=25;struct Point{ int x,y;};int graph[N][N];bool visit[N][N]原创 2014-01-18 11:36:52 · 1650 阅读 · 0 评论 -
LightOJ 1017 Brush (III) (DP)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1017题意:坐标系里有n个点,一个宽度为w的刷子可以擦去这些点(边缘擦到也算),刷子可以横向无限移动,问移动k次最多可以擦去多少点。思路:显然与点的横坐标无关,将纵坐标排序,预处理:以刷子的底边擦去一个点i会向上影响多少个点mv[i]。状态转移方程:dp[i][j]=max(原创 2013-11-08 23:06:35 · 1302 阅读 · 0 评论 -
LightOJ 1013 Love Calculator (LCS+DP)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1013题意:给出两个字符串,求一个字符串,使得另两个字符串为该串的子序列(也就是说不必每个字母都相邻),求该串的最小长度,并求出在最小长度的情况下,该串可以有多少种不同的构成。思路:LCS变形,最小长度=两串长度之和-两串的LCS的长度。接下来用DP求有多少种不同的构成。dp原创 2013-11-08 21:36:03 · 1458 阅读 · 0 评论 -
LightOJ 1005 Rooks (排列数 组合数)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1005题意:在一个n*n的棋盘上放k个车,使得各个车之间不相互攻击。有多少种放法?思路:先在n行中选出k行,C(n,k),再在n列中选出k列随便放A(n,k),答案为C(n,k)*A(n,k)。一直都记得0!=1,却忘了A(n,0)=1。。。。。。#include原创 2013-11-06 21:09:46 · 851 阅读 · 0 评论 -
LightOJ 1246 Colorful Board (DP+组合数)
题目连接:http://lightoj.com/volume_showproblem.php?problem=1246题意:有(M+1)*(N+1)的棋盘,可以用k种油漆给它们染色。要求曼哈顿距离为奇数的格子不能染同一颜色(显然相邻格子的曼哈顿距离为1),问总的染色方案数。思路:问题可转化为:每个格子(x,y),x+y奇偶性不同的格子的颜色不能相同。于是棋盘被分成两部分,类似于国际象棋黑白原创 2013-09-06 16:47:18 · 1665 阅读 · 0 评论 -
数学学习小记(二) 组合数求模:Lucas 定理 LightOJ 1067 + Hdu 3037
最近被数论搞得生活不能自理。。。。电路终于考完了,一道非线性原件的题我算出电阻是负的。。。。。生死未卜。。。五一假期还要忙数学建模。。。。从以下博文中学习的,代码中有许多借鉴的地方也来自这里:hdu - 4349 - Xiao Ming's Hope - 大大的Lucas定理 && 小小的乘法逆元 - Julyana_Lin_夜 - 博客频道 - CSDN.NEThtt原创 2013-04-28 22:49:41 · 1426 阅读 · 0 评论 -
斯特林数 - 环排列 学习小记 Hdu 3625 Examining the Rooms + LightOJ 1326 Race
环排列定义从n个不同的元素中仅取m(1≤m≤n)个不同的元素按照圆圈排列,这种排列叫做从n个元素里取m个元素的环排列。两个环排列,如果元素间的位置没有改变,就是同一排列。计算公式把一个m个元素的环在m个不同的位置拆开记得到m个不同的线排列。由于n个不同元素中任取m个元素的排列方法为P(n,m)种,所以n个不同元素中任取m个元素的环排列方法有P(n,m)/m种。特别的原创 2013-05-29 20:36:44 · 2324 阅读 · 0 评论 -
LightOJ 1058 & Poj 1971 Parallelogram Counting
题目链接1 http://lightoj.com/volume_showproblem.php?problem=1058题目链接2 http://poj.org/problem?id=1971题意:给出n个点,求出这n个点能够组成平行四边形的个数。思路:1)平行四边形的对角线的中点一定相交。 如果有两条不同线段的中点相交,就是一个平行四边形 2)利用点坐原创 2012-12-02 22:45:58 · 1439 阅读 · 0 评论 -
LightOJ 1173 The Vindictive Coach (DP 计数)
题目连接:http://lightoj.com/volume_showproblem.php?problem=1173题意:n个不同身高的队员和教练的按照身高排成波浪形……每个人按照身高由低到高编号,其中第m个是教练,他必须在第一个,如果条件允许,排第二的要比m低,如果条件不允许,即其余人都比教练高,则要让差距尽可能小。思路:其实就是n个不同的数排成波浪形。f[n][i]表示n个数以第原创 2013-09-03 19:49:31 · 1915 阅读 · 0 评论 -
Hdu 4715 Difference Between Primes (2013网络赛 warm up) & LightOJ 1259 Goldbach`s Conjecture(素数和差)
和以前做过的一题很像,于是没细想就忽略了n==2这种情况。。。。以后不能再手残贡献WA了。。Hdu 4715 Difference Between Primes题意:一个偶数表示为两素数之差。思路:猜想是正确的,所以不用考虑不存在的情况。#include #include using namespace std;const int N=10000007;bool原创 2013-09-08 20:42:54 · 1263 阅读 · 0 评论 -
AC自动机总结 part1
这回总结的基本都是模板题……Hdu 2896 病毒侵袭用set统计哪些子串出现过。注意字符集并不只有a-z#pragma warning(disable:4786)#include #include #include #include #include #include #include #include #include #include #include #原创 2013-08-25 10:31:02 · 1021 阅读 · 0 评论 -
LightOj 1418 Trees on My Island (Pick定理)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1418数据比较大,要用__int64我又被LightOJ的fabs函数坑了一次。#include #include #include using namespace std;struct Point{ __int64 x,y; void Get () {原创 2013-01-07 22:06:45 · 1170 阅读 · 0 评论 -
LightOJ 1203 Guarding Bananas
题目链接:http://lightoj.com/volume_showproblem.php?problem=1203题意:求凸包最小内角。思路:使用__int64 Graham水平序,枚举内角。这个题的主要收获是学会了一种新的求两线夹角的方法,下篇文章会有总结#include #include #include using namespace std;#define mi原创 2012-12-20 22:54:37 · 895 阅读 · 0 评论 -
LightOJ 1178 Trapezium
题目链接 http://lightoj.com/volume_showproblem.php?problem=1178题意:给定梯形四边边长求面积思路:转化成一个三角形和一个平行四边形的面积和#include #include #define PI acos(-1.0)#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))double Deal ()原创 2012-12-07 12:20:40 · 887 阅读 · 0 评论 -
LightOJ 1211 Intersection of Cubes
题目链接 http://lightoj.com/volume_showproblem.php?problem=1211题意:给出n个六面体对定点的坐标,求重叠部分体积思路:分别取下面那个点3个坐标的最大值,上面那个点3个坐标的最小值,然后判断是否合法。先在二维上模拟比较好理解。#include const int INF=0x7fffffff;int Deal (){原创 2012-12-07 13:18:36 · 1592 阅读 · 0 评论 -
Poj 2546 Circular Area & LiaghtOJ 1118 Incredible Molecules
题目链接: http://lightoj.com/volume_showproblem.php?problem=1118 http://poj.org/problem?id=2546题意:给出两圆的圆心和半径,求相交部分面积。思路:三种情况:外离或外切,内含或内切,相交(这时有两种情况:一圆心在另一圆的内部和外部,效果一样)。先求出两原创 2012-12-05 20:41:22 · 906 阅读 · 0 评论 -
LightOJ 1107 How Cow
题目链接 http://lightoj.com/volume_showproblem.php?problem=1107水题#include struct{ int x,y;}ld,ru,q;bool Deal (){ scanf("%d%d",&q.x,&q.y); if (q.xld.x && q.yld.y) return true; return false原创 2012-12-05 17:49:50 · 1050 阅读 · 0 评论 -
LightOJ 1072 Calm Down
题目链接 http://lightoj.com/volume_showproblem.php?problem=1072没什么技术含量,搞清楚边角关系即可#include #include #define PI acos(-1.0)int main (){ int T,n; double R,r,alpha; scanf("%d",&T); for (int cas=1;c原创 2012-12-05 17:30:59 · 1543 阅读 · 0 评论 -
LightOJ 1043 Triangle Partitioning
题目链接 http://lightoj.com/volume_showproblem.php?problem=1043相似三角形,水题#include #include int main (){ int T; scanf("%d",&T); for (int cas=1;cas<=T;cas++) { double AB,ratio,ans; scanf("%lf%原创 2012-12-02 21:27:55 · 1272 阅读 · 0 评论 -
LightOJ 1022 Circle in Square
题目链接 http://lightoj.com/volume_showproblem.php?problem=1022十足水题,不多说了#include #include #define PI acos(-1.0)int main (){ int T; double r,ans; scanf("%d",&T); for (int cas=1;cas<=T;cas++)原创 2012-12-02 21:03:56 · 653 阅读 · 0 评论 -
LightOJ 1007 Mathematically Hard
第一次到LightOJ做题,输入输出好不习惯,不过题目描述比Poj清楚多了。题目链接 http://lightoj.com/volume_showproblem.php?problem=1007题意:计算所给出的a,b两数间(包括a,b)的所有数的欧拉函数的平方和。思路:利用前缀和优化减少运算时间,需要用unsigned long long才能存下数据。原创 2012-12-01 23:06:52 · 1023 阅读 · 0 评论 -
LightOJ 1045 Digits of Factorial
题目链接 http://lightoj.com/volume_showproblem.php?problem=1045题意:计算N!在K进制下的位数,即计算log(1)+log(2)+...+log(N)其中log的底数都是K思路:首先利用log(xy)=log(x)+log(y)可以求出log(n!)..然后换底公式求出log(b,n!)...然后加1即可。询问次数很多,每次都重新算原创 2012-12-02 20:25:24 · 1314 阅读 · 0 评论 -
LightOJ 1035 Intelligent Factorial Factorization
题目链接 http://lightoj.com/volume_showproblem.php?problem=1035题意:计算N!的素数分解式,N最大100,注意输出格式#include #include #include using namespace std;const int NUM=105;int prime[NUM],indexmax[NUM],factor原创 2012-12-02 20:20:49 · 928 阅读 · 0 评论 -
LightOJ 1024 Eid
题意:计算所给数的最小公倍数思路:每个数都素数分解,每个素数取在所给数的因式中的最高次幂。结果需要使用高精度(大数),大约4000位。#include #include #include #include using namespace std;#define i64 __int64const int NUM=2000;int prime[NUM],indexmax[100原创 2012-12-02 20:02:40 · 1212 阅读 · 0 评论 -
LightOJ 1216 Juice in the Glass
题目链接 http://lightoj.com/volume_showproblem.php?problem=1216题意:求圆台体积思路:圆台体积公式:设上底的半径为r,下底的半径为R,高为h,则V= (1/3)*π*h*(R^2 + Rr +r^2)#include #include #define PI acos(-1.0)double Deal (){ in原创 2012-12-07 13:48:42 · 1075 阅读 · 0 评论