自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(416)
  • 收藏
  • 关注

原创 CodeForces-812B Sagheer, the Hausmeister

小dp#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=20;const int M=100...

2018-10-02 17:57:02 132

原创 LightOJ-1342 Aladdin and the Magical Sticks

一类经典问题的变形:邮票收集问题https://en.wikipedia.org/wiki/Coupon_collector%27s_problem1类棍子只会拿起一次,ans+=权值2类棍子会拿起多次,ans+=权值*h[n]#include<iostream>#include<cstdio>#include<cstring>#includ...

2018-09-28 11:16:45 315

原创 LightOJ-1321 Sending Packets

先用迪杰斯特拉算法,找到0~n-1的最大成功概率p那么对于每KB数据,需要时间期望d=2*k+(1-p)*d,那么d=2*k/p所以总期望为2*k*s/p#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath&...

2018-09-27 20:36:24 195

原创 LightOJ-1317 Throwing Balls into the Baskets

水题,输出n*p*k即可刚开始觉得m没用,以为看错了题,提交后发现m真的没用因为每个篮筐概率都一样,而且不冲突,就当作n个人向一个篮筐投球k次,进球概率为p所以期望是n*p*k#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#incl...

2018-09-27 20:08:02 129

原创 LightOJ-1287 Where to Run

状压dp求期望,难点就在于怎么判断下一个点是不是EJ题目说只会走EJ点,代表只有能走遍所有点的路径才会有概率走如果图不连通,就直接不走,输出0dfs搜索时,只有在搜到所有点都走过的情况返回一个非0值,代表可以走通如果没有走遍所有点且没有其他EJ点,返回0,代表这个点不是EJ中途假如接下来有cnt个EJ点,他们的期望加起来是sum,再加上原地待5分钟的情况总期望为(sum+5...

2018-09-27 14:00:43 201

原创 LightOJ-1284 Lights inside 3D Grid

单独计算每个点被选中奇数次的期望,加起来就是总亮灯数的期望对于一次选取,x轴位置 i 的点,被选中的概率就是1.0减去不被选中的概率(两个点都在 i 一侧)P(x,i)=1.0-1.0*((i-1)*(i-1)+(x-i)*(x-i))/(x*x)三维坐标下被选中的概率就是三个维度概率乘起来p=P(x,i)*P(y,j)*P(z,k);假设选取n次,f(n)为选取n次被选中奇数次的...

2018-09-26 20:49:52 204

原创 CodeForces-811C Vladik and Memorable Trip

预处理+dp#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=5000+10;int d[N...

2018-09-22 11:02:26 119

原创 LightOJ-1274 Beating the Dataset

期望dp+逆推参考题解:https://blog.csdn.net/qq_31759205/article/details/54646913#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>using...

2018-09-18 14:14:18 306

原创 CodeForces-810C Do you want a date?

每个集合实际上起作用的就是最大和最小的两个数,根据这个把每个集合按跨度分类跨度就是所有数排好序后,集合中最大和最小的数的间隔所有的集合可以分为跨度从1~n-1的几类举例,有5个数,1,2,3,4,5,那么最小和最大数为2和4的集合跨度为2确定最大最小数,且跨度为i的集合有2^(i-1)种,因为最大最小数之间的数的个数为 i-1那么可以统计所有跨度为 i 的集合的和(最大数减去最...

2018-09-08 10:44:32 141

原创 LightOJ-1265 Island of Survival

这道题其实根本不需要考虑鹿的存在,因为鹿不会对人或者老虎造成任何影响,它只会自己减少就当做只有老虎在,然后计算老虎全部自相残杀的概率是多少老虎个数为奇数时概率为0.0#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<...

2018-09-06 22:24:06 197

原创 LightOJ-1248 Dice (III)

其实是一道概率水题,假如是一个n面体,现在有 i 个面已经出现过了那么丢出没出现过的面的期望次数是d=(i/n)d+1  --->  d=n/(n-i)遍历 i 从0~n-1,将d加起来就是答案,这道题直接暴力递推就可以了#include<iostream>#include<cstdio>#include<cstring>#includ...

2018-09-06 15:30:32 146

原创 LightOJ-1151 Snakes and Ladders

概率dp+高斯消元:https://www.cnblogs.com/jiachinzhao/p/7204458.html#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace s...

2018-09-06 15:14:06 173

原创 LightOJ-1104 Birthday Paradox

现在每年有n天,那么两个人生日相同的概率为1/n,之后i个人生日相同概率为d[i]d[i]=d[i-1]+(1-d[i-1])*(i-1)/n正如题目中所说,就算n比较大,但是生日相同的概率达到0.5的人数还是比较小所以对于每个n,直接暴力递推,到概率大于等于0.5时得到答案退出,n==1时答案为2还有不知道为什么输出要-1#include<iostream>#...

2018-09-04 22:38:52 208

原创 LightOJ-1079 Just another Robbery

用概率背包dp,d[i]表示拿到 i 金钱最小被抓概率初始化d[0]=0.0,然后把每个银行过一遍,每次更新d数组#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace st...

2018-09-04 21:56:11 124

原创 LightOJ-1038 Race to 1 Again

先求出公式,设数字n的期望为d,n除去去本身所有因数期望和为sum,所有因数数量为cntd=sum/cnt+d/cnt+1 --->  d=(cnt+sum)/(cnt-1)   d[1]=0然后用记忆化搜索,dfs递归找因数求答案#include<iostream>#include<cstdio>#include<cstring>#i...

2018-09-04 15:47:36 81

原创 LightOJ-1030 Discovering Gold

从每个位置开始走能得到金币的期望,就是之后能到达的位置的期望平均再加本位置的金币倒着逆推一遍就可以了#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;type...

2018-09-04 15:05:09 116

原创 LightOJ-1027 A Dangerous Maze

设走出迷宫期望时间为T=0,遍历n个门,x[i]为走每个门花费的时间第 i 个门,如果可以走出迷宫,则T+=(x[i])/n如果不能走出迷宫,则T+=(x[i]+T)/n把公式化简后可得,T=sum/cnt,sum为x[i]总和,cnt为可以走出去的门的个数如果cnt==0,那么就输出inf#include<iostream>#include<cstdio...

2018-09-04 12:54:25 192

原创 回文树 模板

类似AC自动机,树里面每个节点代表主串的一个回文子串,且每个回文子串都不同主要功能:1.求串S前缀0~i内本质不同回文串的个数(两个串长度不同或者长度相同且至少有一个字符不同便是本质不同)2.求串S内每一个本质不同回文串出现的次数3.求串S内回文串的个数4.求以下标i结尾的回文串的个数参考链接:https://blog.csdn.net/yxuanwkeith/article/de...

2018-09-04 12:18:17 144

原创 最大/最小表示法 模板

求出字符串所有循环同构中字典序最大或最小的起始下标,如果有多个返回最小的那个int getMin(char s[],int len){ int i=0,j=1,k; while(i<len&&j<len) { for(k=0;k<len;k++) if(s[(i+k)%len]!=s[(j+k)%len]) break; if(k&gt...

2018-09-04 09:00:05 181

原创 卢卡斯定理 模板

卢卡斯定理模板用于快速求解C(n,m)%p,p为质数typedef long long ll;ll expow(ll a,ll b,ll mod){ ll ret=1; while(b) { if(b&1) { ret*=a; ret%=mod; } a*=a; a%=mod; b>>=1; } return ret;...

2018-09-03 13:39:27 164

原创 POJ-2074 Line of Sight

给出房子,障碍物,街道,都用一条线段表示,障碍物会遮挡房子问在街道上可以完整看到房子的最大连续长度是多少对于每个障碍物,可以在街道上求出遮挡房子的区域起点和终点把这些点都保存下来,起点标记为-1,终点标记为1另外把街道起点和终点保存下来,起点标记为1,终点标记为-1然后按照x从小到大排序,遍历这些点,初始化f=0,每次到一个点f+=标记可以发现f>0时,就代表接下来的...

2018-09-03 11:15:42 269

原创 POJ-1584 A Round Peg in a Ground Hole

给出一个圆心和半径描述的圆,以及若干个点形成的多边形问多边形是否是凸多边形,还有圆是否在凸多边形内多边行的点不多,开1000足矣,是按顺序给出的,但有顺时针也有逆时针先判断多边形是不是凸的,不是直接输出 HOLE IS ILL-FORMED然后判断圆心在不在凸多边形内,还要圆心到边的距离小于等于半径,可以输出 PEG WILL FIT不行输出 PEG WILL NOT FIT...

2018-09-03 10:00:44 139

原创 POJ-3349 Geometric Shapes

题解:https://blog.csdn.net/miranda_ymz/article/details/81980053#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace ...

2018-08-29 16:09:25 143

原创 POJ-1039 Pipe

题解:https://blog.csdn.net/miranda_ymz/article/details/81980801#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace ...

2018-08-29 14:47:34 95

原创 POJ-2826 An Easy Problem?!

这是一道需要注意很多问题的简单计算几何题首先判断两个线段状态,不相交或者重合直接输出0.00然后求出交点,检查四个端点,是否在交点之上,在之上的可以做两个线段一个是横跨平面穿过这个点的线段L,一个是从这点向上到边界的线段R如果满足L与另一条线段相交且R与另一条线段不相交(可以蓄水到这个高度,并且上方没有被遮挡)就计算蓄水的三角形面积,详细见代码还有注意答案要加eps,这是一...

2018-08-27 09:50:39 169

原创 POJ-3348 Cows

模板题,先用Graham求凸包,然后用多边形面积公式求凸包面积,除以50取整就是答案#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long l...

2018-08-27 09:12:23 162

原创 POJ-3347 Kadj Squares

把每个正方形抽象成三个数据,最左端点和最右端点的横坐标L,R,以及两个端点的高度H也就是一条线段,和它的位置,判断遮挡的时候只需要判断这些线段就可以了难点就是确定每个线段的位置,每次新加一个正方形时,算出与前面所有的正方形相接的左端点值最大的那个就是真实位置,计算公式 L=S[i].R-abs(S[i].H-H); S[i]为前面的正方形确定位置后按照高度从高到低排序,然后用标记判...

2018-08-27 08:47:39 250

原创 CodeForces-1029F Multicolored Markers

用a或b形成小矩形,用a+b形成大矩形,小矩形只要能放在大矩形里就可以了大矩形的长和宽要尽量接近,详细见代码注释#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std...

2018-08-26 09:25:43 285

原创 CodeForces-1029D Concatenated Multiples

开二维数组p[][],p[i]保存所有数字乘以10^i 对 k 的余数(0 < i < 11),对所有p[i]排序在对每个数字求对 k 的余数,如果这个数字 A 是 i 位数,就在p[i]中寻找 (k - A%k)%k 的个数用二分查找来确定个数,还要去掉自己和自己组合的情况,加起来就是答案#include<iostream>#include<cstd...

2018-08-26 09:16:04 269

原创 CodeForces-1029C Maximal Intersection

先将数据离散化,然后用线段树统计所有线段叠加起来覆盖最多次数的线段和长度再单独将每个线段去掉,查询是否有覆盖n-1次的线段,记录最大的长度就可以了当线段是一个点是要注意特判#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include&...

2018-08-26 08:59:59 219

原创 CodeFoces-1029B Creating the Contest

题目中给出的序列就是升序的,所以最大数量的问题就是最长连续的符合要求的序列所以就找最长连续的序列,符合要求a[i]<=2*a[i-1]#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using...

2018-08-26 08:54:56 135

原创 POJ-1696 Space Ant

先选出最下边的点作为起点,再以起点为中心给所有点极角排序这样就选出了当前点最右边的点,在以这个点为中心极角排序,继续选点以这个规则路径就不会有交点,并且一直向左转弯极角排序就是利用点的叉乘运算判断两个向量的左右,以此给所有点按中心以顺时针或逆时针方向排序#include<iostream>#include<cstdio>#include<cstr...

2018-08-24 16:22:06 114

原创 POJ-1410 Intersection

给出一条线段和和矩形的左上右下点,问线段与矩形有没有公共点也就是说,如果线段与矩形的边有交点或者线段在矩形内输出T,否则F有个让人无语的坑点,左上点不一定是左上,右下点也不一定是右下,要再判断交换一下#include<iostream>#include<cstdio>#include<cstring>#include<algorithm...

2018-08-24 10:57:38 127

原创 POJ-1066 Treasure Hunt

有一个100*100的密室,密室中贯穿了n个墙,再加上外围的四个墙,这些墙不会有三个及以上的墙交于一点给出密室中宝藏的坐标,要从密室外爆破通过墙壁到达宝藏位置,爆破位置必须是进入房间墙壁的中心点问最少需要爆破墙壁数因为必须是墙壁中心点,我们可以从外围寻找两两点构成墙壁的中心点,从这些位置开始爆破如果从这些点和宝藏连一条线,可以发现,与这条线相交的墙壁都是必须要爆破的,而且只需要一次...

2018-08-24 10:27:40 178

原创 POJ-2653 Pick-up sticks

每次新放一根棍子时,判断与之前的棍子是否相交,如果相交那么之前的那个棍子将不在顶部题目说明在顶部的棍子始终不超过1000,那么可以用一个数组保存在顶部棍子的下标每次判断相交只需要判断在在顶部的棍子,时间复杂度为1e8#include<iostream>#include<cstdio>#include<cstring>#include<a...

2018-08-24 09:40:31 126

原创 POJ-1556 The Doors

这道题,没想到什么好的办法,数据量不大,干脆直接转化成最短路问题把每个列上的四个点放到点数组里,再加上起点和终点,再把每列的三个墙放到墙数组,再加上左墙和右墙然后求两两点之间连成线段是否与墙数组的墙有超过两个交点,(因为和墙相接的缘故,总会有两个相交的)不超过两个就在图中加一条边,代表两点相连,还有路径长度最后迪杰斯特拉求解#include<iostream>#...

2018-08-23 22:01:47 146

原创 POJ-1269 Intersecting Lines

一道模板题,判断直线重合,平行还是相交#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const double ep...

2018-08-23 16:08:23 237

原创 POJ-3304 Segments

题目意思转化过来就是说,问能不能有一条直线,可以穿过给出的所有线段可以枚举两两点之间形成的直线,判断这条直线是否穿过所有线段如果有直线可以输出Yes!,否则输出No!要注意如果两个点距离太近(可以视为同一位置),就不要组成直线了#include<iostream>#include<cstdio>#include<cstring>#incl...

2018-08-20 22:22:01 182

原创 CodeForces-1205B Weakened Common Divisor

先找出最小的一对数字,把他们所有的因数找出来,保存在数组里接下来过一遍数字对,每次都把能够整除至少一个数字的因数保留,最后剩余的都可以作为答案如果因数特别多会超时,所以在开始时尽量对因数分解,分解为质数,能够大大减少因数数量#include<iostream>#include<cstdio>#include<cstring>#include&...

2018-08-20 11:21:39 255

原创 POJ-2398 Toy Storage

先按照每个隔板上端x的大小从左到右排序排好之后用二分找到每个玩具在第i个隔板的右边,玩具就在i+1区域再统计有i个玩具的区域有多少个(i>0)#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>...

2018-08-19 19:18:15 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除