
思维
zyy_2017
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ABC048&ARC064(upcoj 6487) Cosmic Rays (最短路)
题目大意:在二维平面内,给出起点和终点,你可以任意方向行走,给出n个圆(圆心x,y和半径r),它们可能相交或者相离,在圆内行走不会受到辐射。现在问你,你从起点走到终点,被辐射的最短路程是多少。换个角度思考,如果要从A圆心走到B圆心,被辐射的路程是这两个圆的圆心距减掉它俩半径之和(肯定按照直线方向走才保证最短)。如果小于零,代表这两个圆相交,被辐射的路程也就是0。所以这道题的解法是:求出任意两个圆心...原创 2018-05-29 21:41:23 · 563 阅读 · 0 评论 -
第十五次CCFCSP认证——数据中心(SPFA变形)
题意: 题目比较繁琐,其实就是从给的图中,找出一棵树,使得这棵树最大的边尽可能小,然后求的就是这条“最大边”。 有两种解法,一是最小生成树中最大边即是答案(最小生成树采用贪心策略,每次选最小的边,那么生成的树中最大边一定是所有生成树中最大边中最小的)。二是采用spfa变形,这就和之前的地铁修建那道题一模一样(不过最后要取dis[1.2...n]中的最大值),将伸缩公式dis[to]>di...原创 2019-08-27 19:27:49 · 408 阅读 · 0 评论 -
第九届蓝桥杯A组省赛——全球变暖
【题目描述】 你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示: 其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。 由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。 例如上图中的海域未来会变成如下样子: 请你计算:依...原创 2019-03-12 15:37:30 · 218 阅读 · 0 评论 -
hdu 2485 Destroying the bus stations(费用流)
题意: n个点,m条有向边,问最少去掉几个点使得从1到n的路径(最短路)大于k? 思路: 这道题用费用流解,感觉好奇妙。。。 首先我们想,求费用流时,我们是每次用spfa求得最短路然后进行减流,直到找不到从汇点到源点的路径。那么对于这道题,当我们增广出一条从1到n的最短路时,我们可以将其中的某个点删去,使得这条路以及从这条路分支出来的路都使得不能从1走到n。所以我们可将点2~n进行拆点,所...原创 2018-09-14 20:18:38 · 229 阅读 · 0 评论 -
牛客多校训练第九场 E(思维+期望计算)
玩一场游戏,游戏中会有n个点,每个点被点击成功的概率是p[i],游戏结束后所得分数是每段点击成功的长度的m次方的总和,求所得分数的期望。n,m<=1000 例:0111011011(0代表这个店点击失败,1代表成功) 最后的得分是3^m+2^m+2^m. 枚举每个情况,然后计算得分成上相应概率,最后求出总和。情况有2^1000种,显然不行。 解题思路: 我们假设一场游戏的一个子情况...原创 2018-08-18 16:48:49 · 278 阅读 · 0 评论 -
zoj3537 cake(凸包+区间dp)
首先利用凸包判断给出的点是否正好组成一个凸多边形,如果可以的话,定义状态dp[i][j]为从i点到j点构成的凸多边形的最优解。因为凸多边形是一个环,所以我们将节点后面再复制一遍节点,这样方便计算。然后就可以按照区间dp去做了。 转移方程: dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+temp);k为枚举的切割点,temp为割i到j点的代价。当i和j相邻时,显然...原创 2018-08-18 16:27:07 · 199 阅读 · 0 评论 -
upc 6744 求和(倍增求LCA)
#include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> #include<vector> #include<math.h> using namespace std; #define ll long long const ll mo...原创 2018-08-11 16:20:37 · 232 阅读 · 0 评论 -
poj 3686 The Windy's(建图+费用流)
这道题卡vector,改用链式向前星存图可以过,至于边数要开的尽可能大,否则超时。。。。 #include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> #include<vector> #include<queue> using...原创 2018-08-07 10:38:25 · 188 阅读 · 0 评论 -
Codeforces Round #498 (Div. 3) E. Military Problem(dfs记录)
题意: 给出一棵树,然后q个询问(u,k),每个询问代表以u为子树根,向下遍历(序号小的优先),问遍历到第k个元素是多少?如果k大于这棵子树的节点总数,那么输出-1. 思路: 首先n和q是20000的,如果每次询问都遍历一次,那么复杂度是n^2,肯定会超时。所以我们可以遍历整棵树,只遍历一次,在遍历的时候记下每个子树根的起点和终点,然后把遍历的值放在一个数组中,最后每次询问时,我们可以直接输...原创 2018-07-22 16:42:18 · 289 阅读 · 1 评论 -
kmp循环节
#include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> using namespace std; int nnext[1000006]; char s[1000006]; void getnnext(char *s,int len) { int ...原创 2018-07-26 22:28:43 · 223 阅读 · 0 评论 -
upcoj 5725 小奇画画(map维护)
小奇想画几朵红莲,可惜它刚开始学画画,只能从画圆开始。小奇画了n个圆,它们的圆心都在x轴上,且两两不相交(可以相切)。现在小奇想知道,它画的圆把画纸分割成了多少块?(假设画纸无限大) 输入 第一行包括1个整数n。 接下来n行,每行两个整数x,r,表示小奇画了圆心在(x,0),半径为r的一个圆。 输出 输出一个整数表示答案。 样例输入 4 7 5 -9 11 11 9 0 20 ...原创 2018-07-29 16:49:47 · 274 阅读 · 0 评论 -
2018 湘潭邀请赛 A.Easy h-index(容斥原理)
题意:给出两个区间 [ a,b ] , [ c,d ]。分别取出两个数x,y组成数对(x,y)。问有多少个这样的数对使得他俩相乘的结果是2018的倍数。结果=(1009的奇数倍个数)*k(k是除了2018的倍数的其他偶数)+2018的倍数*任意数。代码:#include<stdio.h> #include<iostream> #include<math.h> #...原创 2018-06-09 22:03:13 · 288 阅读 · 0 评论 -
CCFCSP认证——压缩编码(动态规划)
思路: 题目的内容很容易使我们想到哈夫曼树(右图),但是哈夫曼每次是选择两个权值最小的,这样形成的编码字典序可能不是最小。而左图构造的树所形成的编码才是字典序最小的,因为它是按照相邻的顺序进行构造,这样从树根走到叶子形成的编码一定保证a[i]的编码<a[j]的编码。但是按这样的方式去构造,可能形成很多种树。比如: 这样花费(就是每个字符的编码乘以自己出现的次数加和)不是最小。...原创 2019-08-28 11:36:54 · 363 阅读 · 0 评论