自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 FJNU第二十二届低年级程序设计竞赛题解

问题 A: 逃跑路线时间限制: 1 Sec  内存限制: 128 MB题目描述n个人在w*h的监狱里面想要逃跑,已知他们的同伙在坐标(bi,h)接应他们,他们现在被关在(ai,1)现在他们必须要到同伙那里才有逃出去的机会,这n个人又很蠢只会从(x,y)->(x+1,y),(x,y+1)并且这他们走过的路径不能相交如果相交第一个经过后就会有第二个人经过时候就会有一名狱警在那等他,第...

2018-11-26 22:58:04 1029 2

原创 HDU - 4035(树形概率dp+分离系数)

有一个n个结点的树形迷宫,在每个结点有概率被杀,有概率逃出,否则随机选择一条边进入下一个结点,若被杀则回到结点一重新走迷宫,问逃出迷宫所走的边数期望dp[i]为点i逃出的期望和ZOJ - 3329类似dp方程中含有dp[1]而dp顺序是从叶节点到根节点1的,所以没法直接求设根据这两题来看,dp方程的设法应该是把还未求得的变量前乘上一个系数,然后已求得的变量合并为一个系数最后...

2018-09-25 01:28:12 299

原创 hdu6222(佩尔方程+大数)

求最小的大于等于n的t,使得t-1,t,t+1围成的三角形面积是整数要使s^2是整数,就要使3*(x^2-1)是平方数,也就要使(x^2-1) = 3*y^2整理得到x^2-3*y^2 = 1然后用__int128搞一下就行了#include <cstdio>#include <cstring>#include <ctime> #in...

2018-08-31 15:41:26 775

原创 hdu6444(最大子段和+gcd)

给出长度为n的数组,目标快乐值s,体力m,跳跃间隔ka[i]表示i这个点的快乐值,每花费一体力跳到(i+k)%n的位置上可以获得a[(i+k)%n]的快乐值,问要达到目标快乐值s,初始至少需要多少快乐值,实际上就是求花费m体力最多能获得多少快乐值由于跳跃间隔固定为k,那么所有的循环种数就是gcd(n,k),每个循环节的长度就是n/gcd(n,k)所以暴力每个循环节,问题转化为最大子段和...

2018-08-29 17:57:22 836

原创 codeforces1028C (矩形相交)

有n个矩形,找出其中一个矩形的一个点,满足这个点至少包含在n-1个矩形内 处理一下前缀交,也就是矩形1-2的交矩形k, 再求矩形k与矩形3的交矩形。。。a[i]是前缀交,b[i]是后缀交假设p[i]这个矩形与其他矩形都没交矩形,那么就求a[i-1]与b[i+1]的交矩形K,相当于把p[i]扔了,如果K是一个矩形,那答案直接取K的左下角 #include <cstdi...

2018-08-29 09:52:34 268

原创 hdu6446(树上dp)

给出一颗树,n个结点,n个结点有n!种排列组合,假设其中一种是1 3 5 2 4,那么就要求出1-3,3-5,5-2,2-4的路径总和,问所有排列组合的路径总和。先考虑路径重复的问题,有n!中排列组合,每种组合有(n-1)条路径,不同路径数是n*(n-1)/2,那么每条路径重复次数就是2*(n-1)!接下来就是求不同路径的长度总和。。。本着大胆猜想的原则。。我猜测路径长度总和与路径无关...

2018-08-29 00:51:42 267

原创 hdu6438(优先队列)

有一个物品每天的价格不同,每天可以选择以当天的价格买入或卖出问n天后最多挣多少钱以及最少的交易次数 做法是把每天的价格丢到队列里,如果当天的价格高于队列top就把top弹出,更新总收益,并把当天价格push两次,这里push两次目的是当天的价格可能不是最优比如1 2 10 11第二天卖出同时push两次进去,第三天卖出,第四天又卖出,相当于第二天作为跳板,同时又把第二天买入又卖出了。处...

2018-08-27 21:55:08 344

原创 hdu6441(费马大定理+勾股数)

给出n和a求b, c满足a^n + b^n = c^n由费马大定理得出n > 2时无解,n = 2时参考勾股数#include <cstdio>typedef long long ll;int main() { int T; scanf("%d", &T); while (T--) { ll n, a, b, c; scanf("%lld%...

2018-08-27 16:28:06 849

原创 hdu6447(树状数组+离散化)

商人从(0,0)走到(1e9,1e9)途中有若干村庄,商人可以向(x,y+1)(x+1, y)(x+1, y+1)三个方向前进,当向(x+1,y+1)方向前进时可以获得村庄(x+1, y+1)的利润,问商人途中最多可以挣多少钱 商人到达点(x,y)的最大利润一定是从(0,0)到(x-1,y-1)这个矩形转移而来的,但是如果单纯的用二维来dp会超空间,可以考虑dp的顺序而降低dp维度,dp顺...

2018-08-27 15:31:18 714 1

原创 CodeForces - 364E(二维分治)

给出一个n*m的矩形,问有多少个子矩阵包含1的个数为k参考博客好难的一题分治。。基本分治思路是不断切割中线,一刀水平,一刀垂直的切每次切割完后枚举割线两边的矩形包含的1的个数,例如如下这幅图,是按水平中线分割完的,然后先枚举矩形的左右边界Y1,Y2,接着再枚举矩形的上下边界,按这样分治可以保证每次数的矩形都会穿过切割的中线,可以保证矩形不数重,不数漏博客里的人每次分治后矩形...

2018-08-24 11:15:39 1461

原创 hdu2848(博弈)

两个人轮流切割一个数字n,要求将数字切割成k份,第二个人切割的数字是第一个人切割完后各个片段的求和,不能切割者输len(n) < 19,k<len(n)做法是枚举第一个人的切法,寻找是否有一种切法使得第二个人怎么切都输#include <cstdio>#include <cstring>#include <algorithm>u...

2018-08-23 09:52:56 172

原创 codeforces505B (思维)

(a1,b2) (a2, b2)....这样的数对有n对,问是否存在一个数,使得这个数是每个数对中至少一个数的因子。 我一开始贪心被hack了。。后来又想枚举一个数的所有因子,a[i]太大了放弃。。比赛结束后看别人代码才知道只需要枚举质因子就行了。。而int内的数的质因子不超过十个。。#include <cstdio>#include <cstring>#...

2018-08-20 16:32:29 233

原创 fjut3467(gcd+dp)

题目链接求一个序列最长不互质子序列第一层循环遍历序列,第二层遍历该数的因子,转移方程为f[i] = max(f[i], pre[prime[j]])f[i]表示到i位时的最长子序列长度,prime[j]是a[i]的质因子,pre[prime[j]]表示上一个公约数含有prime[i]的数的最长子序列长度这里需要提前打表打出每个数的因子,我一开始只能想到On根号n的打表,其实这里可以...

2018-08-20 16:26:55 302

原创 poj3281(网络流模板)

EK算法:参考博客这题建图很巧,具体怎么建图是看的这篇博客:最大流+匹配+拆点由于我是用邻接表建图的,每次找到增广路要回溯更新,不仅要记录增广路的前驱结点,由于邻接表的特殊性还要记录前驱结点的edge下标,这样才有办法更新。#include <cstdio>#include <cstring>#include <cmath>#include ...

2018-08-17 22:43:25 118

原创 poj6313(构造)

构造一个矩阵,任意子矩阵中没有四个点都为1先看构造的公式:for (int i = 0; i < p; i++)        for (int j = 0; j < p; j++)             for (int k = 0; k < p; k++)                mat[i*p+j][k*p+(j*k+i)%p] = 1;再贴上图:...

2018-08-17 13:24:50 121

原创 hdu6395(快速幂)

分段的时候边界用这个公式计算:ll j = P/i==0?n:min(n, P/(P/i));#include <cstdio>#include <cmath>#include <cassert>#include <cstring>#include <algorithm>using namespace std;ty...

2018-08-16 19:18:59 278

原创 hdu6299(贪心)

很好的一题贪心,自己死活想不出来怎么贪,一直去想几种特殊情况,比如(()()) , (()()())之类的,绕进死胡同了,这题关键是把已经匹配好的括号去掉,只考虑剩余部分怎么拼接才能最大化参考博客看完这个博客思路后自己实现的时候除了点小问题,就是排序的时候出现死循环了,查了百度后可能原因是有相同的元素返回true导致不断排序,解决办法是让相同元素返回false或者使用stable_sort...

2018-08-16 13:05:14 578

原创 CF730J(背包)- 省赛选拔

有n个瓶子,每个瓶子有a[i]的水,每个瓶子容量为b[i],每移动一个单位水小号1秒,问在使用最少个瓶子的前提下,移动水至少需要多少秒省赛选拔前没做背包专题,后来做了背包专题,现在看这题还是毫无头绪。。。状态实在太难想了,还是只会参考别人的参考博客:背包dp#include <cstdio>#include <cstring>#include <...

2018-08-15 18:52:17 308

原创 CF982E(很神奇的exgcd)

n*m的球桌的(x,y)点上有一个球,给球任意八个方向的初速度问球能否进洞,并把洞口坐标输出主要是很难想到补边,以及用exgcd求出的交点坐标不一定是第一个交点,甚至有可能是另一个方向的交点,这个有点难处理#include <cstdio>#include <cstring>#include <cmath>#include <algor...

2018-08-15 15:51:41 1343

原创 poj2886 (约瑟夫环,树状数组)

n个人围成圈,每个人手上有一个数字,最开始k跳出圈,如果k手上的数num是正数,则向左num个人出圈,负数就向右,直到所有人都出圈,得分最高的是第(1-n中因子数最多的数)次跳出的人首先处理1-n中因子最多的数,有个名词叫反素数,不管他这里直接打表#include <cstdio>#include <cstring>#include <cmath>...

2018-08-15 11:56:52 609

原创 POJ3449(垃圾作文题)

有n个图形问每个图形与哪些图形相交 正方形只给出对角两个点,已经对角点(a, b) (c,d),则另外两个对角点坐标为((a+b+c-d)/2, (-a+b+c+d)/2)和((a-b+c+d)/2, (a+b-c+d)/2), 由于负号的位置不同,所以直接把负号的位置背下来就行:4,1,2,3矩形给出三个点,第四个点很好求,利用对角点坐标相加除以2等于中心坐标就行了然后就是漫长的...

2018-08-14 13:40:08 285

原创 POJ - 1039(线段与直线相交)

有一个宽度为1的管道,一束光从左端射入问最远能到达的横坐标是多少 我的做法是把管道分为上半部分线段和下半部分线段,光线射入角度就是枚举管道拐点,然后从左到右判断上半部分的线段是否在光线的上面,如果不是则说明光线在这里被阻挡了,下半部分同理,最后取上下部分被阻挡点的最小值,就是此次枚举所能到达的横坐标 #include <cstdio>#include <c...

2018-08-14 10:06:49 212

原创 poj2826(垃圾精度题)

求两块木板能装雨水的面积,垃圾题WA了几十发,随机数造了几十万组数据过了还是WA,最后用上long double加特判过的,特判了一块木板水平的情况,我也不知道为什么要特判,按我的做法这种情况不特判也会输出0的,数据是真的坑。#include <cstdio>#include <cstring>#include <cmath>#include &...

2018-08-13 18:16:23 351

原创 poj3348(凸包模板题)

Graham扫描法:参考博客一开始以为找到一个顶点向右转弯时,把这个顶点抛出只抛出一个,WA了一直找不到bug,用随机数大法测出了一个数据在这个例子中,走到第4个点时发现向右拐弯了,于是把第4个点抛出,这时第三个点还是向右拐弯的,所以应该一直抛出直到向左拐弯为止。#include <cstdio>#include <cstring>#include &...

2018-08-13 12:34:48 210

原创 poj3347(思维题)

如图摆放正方形,问从上往下看可以看到哪些正方形,实在想不到怎么求每个正方形的坐标看到心里只有学习 天下欲倾,利刃安在。 计算几何 poj 3347这个博客才豁然开朗。#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using name...

2018-08-11 15:24:48 518

原创 POJ1696(极角排序)模板题

坐标上有n个点从一个点出发,只能沿直线走,只能逆时针拐弯,求走过每个点的顺序极角排序博客:几何:极角排序详解极角排序裸题,但是这题用atan2()很难写,因为atan2()函数返回值是(-π,π)也就是默认按照第四象限到第二象限排序,但是这题是逆时针选点,如果一个点在第二象限,一个在第四象限,那么根据atan2()返回值取小的点会取到第四象限那个点,而实际上应该去第二象限的那个点,所以这题...

2018-08-11 12:27:05 713

原创 POJ1410(线段矩形相交--坑多)

判断矩形和线段是否相交,线段在矩形内也算 前几题一直以为判断线段相交只需要跨步实验就行了,这题是个例外,因为这题相交可以是端点相交所以叉乘那里条件是 >= eps(注意这里的等号)这就导致如果有两条线段是在同一直线上的但是没有重合部分,那么通过跨立实验返回的是相交,就错了,必须再加上快速排斥#include <cstdio>#include <cstri...

2018-08-11 00:24:11 792

原创 poj1556(线段相交模板题)

求(0,5) 到(10,5)的最短距离对每两个点进行建边然后跑最短路判断线段相交的方法参考这个博客:快速排斥实验和跨立实验 #include <cstdio>#include <cstring>#include <cmath>#include <vector>#include <algorithm>usi...

2018-08-10 12:36:17 773

原创 poj3304(叉乘)

有n条线段,问是否存在一条线段与所有给出得线段相交存在这样一条线段,那么一定可以通过旋转使得该线段与给出线段的某两个端点相交,所以枚举这样的线段只需要枚举任意两个端点即可,判断线段与线段是否相交,可以转化成判断线段1的两个端点是否在线段2的两侧,然后用叉乘来判断就行了,n注意==1时特判#include <cstdio>#include <cmath>#inc...

2018-08-09 20:02:23 141

原创 poj2318(叉乘+二分)

矩形被n块板分割,有m个物品都在矩形里,求每一块的物品的个数 用叉乘判断物品在板的左右侧,在用二分查找第一块在物品右侧的板#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int mx = 5e3+5;int u[mx], ...

2018-08-09 12:08:09 137

原创 hdu6319(单调队列)

给出一个数列长度为n 求从左往右的每个长度为m的子区间的最大值maxnum,以及每个子区间从左往右数最大值变化的次数count、 maxnum好求,单调队列维护一下就行了, count想了很久都有bug,看了题解是从又往左进行单调队列这样单调队列里就会依次保存这个区间内的最大数,次大数,第三大数。。。,队列的size就是count值#include <cstdio>#i...

2018-08-06 20:32:43 388

原创 hdu5934(tarjan缩点)

一堆炸药桶放在平面上,每个炸药爆炸范围不同,点燃每个炸药花费不同,求引爆所以炸药的最小花费枚举任意两个炸药桶建立单向边,进行缩点,被缩成同一点的几个炸药桶说明点燃这几个炸药桶的任意一个都能把这一片都引爆。缩完点后,建立一个新的图,并把每个被缩点的炸药桶的最小化费来代替这个点的花费,最后把所有入度为0的点的花费加起来就行#include <cstdio>#include ...

2018-07-31 20:47:29 318

原创 FZU-2254(最小生成树)

题目链接很神奇的一道题。。知道是生成树后就好做了#include <cstdio>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int mx = 1005;const int INF = 0x3f3f3f3f;...

2018-07-31 20:41:33 156

原创 hdu6156(数位dp)

题意:定义函数 f(n, k) 如果数n在k进制下是回文数则f(n, k) = k,否则f(n, k) = 1,求n在L,R区间内k在l,r区间内的函数和问题转化为求L,R区间内k在l,r区间内的回文数的个数对数位dp理解还是不够深刻,比赛的时候想到数位dp没敢开,赛后补题还是写不出来,不会设状态,看了网上博客定了3个状态,dp[i][j][k]表示在i进制下,长度为j,枚举到第k位时,回...

2018-07-31 20:39:27 550

原创 hdu6315(线段树)

给出一个数组b[i],一个初始为0得a[i],两个操作add l r把a[l] - a[r]都加1,query l r求a[i]/b[i]的和 用一个数组维护(a[i] + ti ) / b[i]中的ti, ti初始等于b[i]每add一次ti就减一,当ti为0得时候维护a[i]/b[i]的地方+1,并把ti重置为b[i] 下推lazy地时候写错了写成了tree[rt<&lt...

2018-07-26 12:28:27 466

原创 POJ1236(tarjan入门)

题意:有n所学校需要信息交流,每个学校有一个信息下发列表,表示这个学校可以把信息传递给列表里的学校,问开始至少需要几个学校发出信息才能使所以学校都接收信息,如果不能完成问最少要往信息列表里添加多少条信息第一问就是缩点然后求入度为0的点的个数, 第二问相当于求补多少条边能使整个图联通, 补的边数是入度为0和出度为0的点数中大的那个(挺好理解的就不解释了)#include <cstdi...

2018-07-25 00:37:14 178

原创 LightOJ1197(大区间素数打表)

求a-b内素数个数,a,b在int范围内,但是b-a <= 100000先打好素数表,在用素数筛法把a-b区间的非素数给筛掉#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;typedef l...

2018-07-24 16:14:36 697

原创 LightOj1282(n^k前三位)

求n^k的前三位和后三位原博客#include <cstdio>#include <cmath>long long pow_mod(long long a, long long b){ long long ans = 1; while (b > 0) { if (b & 1) ans = ans * a % 1000; a ...

2018-07-24 09:49:01 180

原创 hdu6301(贪心+set)

求一个长度为n的数列, 给出m个区间,这m个区间各自区间内的数不同 当时比赛打完3题后稍微看了一下这题想了几分钟不是很容易就丢了。。比完想补这题想了一个垃圾做法复杂度有点高不敢写,于是面向标程编程了。。。大佬的做法真的清奇唉慢慢学吧 预处理一下用一个数组保存以这个点为起点的查询的最大的R的位置last[l] = max(last[l],r) (这里相当于去掉了完全包含在大区间里的小...

2018-07-24 00:39:24 989 1

原创 lightOJ1341(唯一分解定理)

前面学的好多知识都忘了,现在决定复习一下了 问有几种边长为整数的矩形面积等于a,且矩形的短边不小于b用唯一分解定理求出a的因子对数,在暴力求出1-b内的a的因子个数,相减一下就好了 #include <cstdio>#include <cmath>#include <cstring>#include <algorithm>...

2018-07-23 19:02:31 1027 1

空空如也

空空如也

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

TA关注的人

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