自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zyy.cpp 的博客

努力不一定成功,但可以很轻松

  • 博客(81)
  • 收藏
  • 关注

原创 Kd树实现K近邻算法——鸢尾花分类

Kd树讲解推荐文章:https://github.com/Daycym/Machine_Learning代码实现:import numpy as npfrom sklearn.model_selection import train_test_splitclass Node: def __init__(self, value, lson=None, rson=None): self.lson = lson self.rson = rson

2020-09-20 15:20:33 616

原创 CCFCSP认证——压缩编码(动态规划)

思路:题目的内容很容易使我们想到哈夫曼树(右图),但是哈夫曼每次是选择两个权值最小的,这样形成的编码字典序可能不是最小。而左图构造的树所形成的编码才是字典序最小的,因为它是按照相邻的顺序进行构造,这样从树根走到叶子形成的编码一定保证a[i]的编码<a[j]的编码。但是按这样的方式去构造,可能形成很多种树。比如:这样花费(就是每个字符的编码乘以自己出现的次数加和)不是最小。...

2019-08-28 11:36:54 278

原创 第十五次CCFCSP认证——数据中心(SPFA变形)

题意:题目比较繁琐,其实就是从给的图中,找出一棵树,使得这棵树最大的边尽可能小,然后求的就是这条“最大边”。有两种解法,一是最小生成树中最大边即是答案(最小生成树采用贪心策略,每次选最小的边,那么生成的树中最大边一定是所有生成树中最大边中最小的)。二是采用spfa变形,这就和之前的地铁修建那道题一模一样(不过最后要取dis[1.2...n]中的最大值),将伸缩公式dis[to]>di...

2019-08-27 19:27:49 333

原创 第九届蓝桥杯A组省赛——全球变暖

【题目描述】你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示:其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。例如上图中的海域未来会变成如下样子:请你计算:依...

2019-03-12 15:37:30 181

原创 2018 ACM-ICPC北京网络赛 A.Saving Tang Monk II(bfs)

好久没bfs了,没想到用三维数组去标记状态来进行bfs。。。但仔细一想想,这么解很有道理。。。因为这个图每个格子可以走多遍,我们考虑,对于一个格子,如果带着相同的氧气瓶走两次,那结果是相同的。所以我们从这个约束进行搜索,开一个三位数字,vis[i][j][k]代表带着k个氧气瓶走到第[i][j]个格子。然后就是进行讨论。我们要求到达终点的时间最短,所以可以用优先队列进行bfs,首先到达终点...

2018-09-24 00:19:42 286

原创 2018 acm-icpc焦作网络赛 F(费用流+区间离散化)

这道题和poj3680很相似,不过这道题每个点只能重复一次。但我们可以将右端点加一,这样就可以建图了。区间离散时加了一段代码,导致T了10多次,后来发现这段代码不加也可以,因为,离散化之后保证相对不相交就可以。。。#include&lt;stdio.h&gt;#include&lt;iostream&gt;#include&lt;string.h&gt;#include&lt;qu...

2018-09-18 21:12:41 280

原创 hdu 2485 Destroying the bus stations(费用流)

题意:n个点,m条有向边,问最少去掉几个点使得从1到n的路径(最短路)大于k?思路:这道题用费用流解,感觉好奇妙。。。首先我们想,求费用流时,我们是每次用spfa求得最短路然后进行减流,直到找不到从汇点到源点的路径。那么对于这道题,当我们增广出一条从1到n的最短路时,我们可以将其中的某个点删去,使得这条路以及从这条路分支出来的路都使得不能从1走到n。所以我们可将点2~n进行拆点,所...

2018-09-14 20:18:38 189

原创 hdu 3251(最小割+输出割边)

大致题意:有一个国家,有许多城市,一条道路连接两个城市,拆掉这条路的花费为w,国王居住在城市1,因为你拯救了国家,所以国王现在要奖赏你一些城市,可选的城市有f个,每个城市都有一定的价值,当你选择一些城市之后要拆掉一些道路使得国王不能从城市1走到你所选的任一个城市,现在问你,你所能获得的最大价值是多少。将给出的城市和道路建图,然后添加一个原点,将能选择的f个城市与这个源点相连,权值为所能获得...

2018-09-12 20:16:40 471

原创 dinic 模板(链式向前星+当前弧优化)

#include&lt;stdio.h&gt;#include&lt;iostream&gt;#include&lt;string.h&gt;#include&lt;queue&gt;#include&lt;set&gt;#include&lt;map&gt;#include&lt;algorithm&gt;#define ll long longusing namespace s

2018-09-12 14:35:19 266

原创 操作系统课程设计——页式虚拟存储系统设计

语言:C#工具:VS2017代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threadi...

2018-09-05 09:47:08 1343 4

原创 hdu1269 强连通图判断

第一道强连通题。。。以前貌似用并查集做过。。。代码:#include&lt;stdio.h&gt;#include&lt;iostream&gt;#include&lt;string.h&gt;#include&lt;algorithm&gt;using namespace std;#define maxn 100000int tot;struct Node{ i...

2018-08-19 16:09:49 673

原创 牛客多校训练第九场 E(思维+期望计算)

玩一场游戏,游戏中会有n个点,每个点被点击成功的概率是p[i],游戏结束后所得分数是每段点击成功的长度的m次方的总和,求所得分数的期望。n,m&lt;=1000例:0111011011(0代表这个店点击失败,1代表成功)最后的得分是3^m+2^m+2^m.枚举每个情况,然后计算得分成上相应概率,最后求出总和。情况有2^1000种,显然不行。解题思路:我们假设一场游戏的一个子情况...

2018-08-18 16:48:49 242

原创 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 163

原创 凸包算法模板+叉积

学习网址:https://www.cnblogs.com/aiguona/p/7232243.html凸包模板:#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;#include&lt;cmath&gt;#define PI 3.141592...

2018-08-18 11:04:39 349

原创 upc 6744 求和(倍增求LCA)

#include&lt;stdio.h&gt;#include&lt;iostream&gt;#include&lt;string.h&gt;#include&lt;algorithm&gt;#include&lt;vector&gt;#include&lt;math.h&gt;using namespace std;#define ll long longconst ll mo...

2018-08-11 16:20:37 212

原创 poj 3686 The Windy's(建图+费用流)

这道题卡vector,改用链式向前星存图可以过,至于边数要开的尽可能大,否则超时。。。。 #include&lt;stdio.h&gt;#include&lt;iostream&gt;#include&lt;algorithm&gt;#include&lt;string.h&gt;#include&lt;vector&gt;#include&lt;queue&gt;using...

2018-08-07 10:38:25 153

原创 poj 3680 Intervals(构图+最大费用最大流)

大致题意:给你n个开区间,每个区间都有一个权值,现在从中选出一些区间使得所选区间的总权值最大,且所有区间上的数字被覆盖次数不能超过k次。解题思路:这是挑战书上的一道例题(p246),是一道费用流的题,不看题解我是想不到这道题如何构图的。这道题的构图思想大致如下:因为区间区间端点值很大,但是n很小,所以我们可以将区间离散化。离散化之后,端点有2*n个,大约最多400个。我们将...

2018-08-06 10:50:53 516

原创 bzoj 1877 晨跑(费用流)

求的是最多的天数,和这些天跑步总路程最小.我们将每两个点之间看成流量为一的通道,那么从源点到汇点,最大的流量就是从寝室跑到学校最多的路线,即最多天数.并且题目里要求每个点只经过一次,那么需要将每一个点拆分成两个点,之间的边流量设置成一,这样就会保证只有一条路通过这个点了.剩下的就是套模板了...#include&lt;stdio.h&gt;#include&lt;iostream&...

2018-08-05 16:52:52 167

原创 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 238

原创 kmp循环节

#include&lt;stdio.h&gt;#include&lt;iostream&gt;#include&lt;string.h&gt;#include&lt;algorithm&gt;using namespace std;int nnext[1000006];char s[1000006];void getnnext(char *s,int len){ int ...

2018-07-26 22:28:43 173

原创 容斥原理(位运算)

#include &lt;iostream&gt;#include &lt;cstring&gt;#include &lt;cstdio&gt;using namespace std;long long prime[50005],num[50005];long long temp[50005];long long get(long long n,long long cur){ ...

2018-07-24 15:19:01 285

原创 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 251 1

原创 2018 湘潭邀请赛 A.Easy h-index(容斥原理)

题意:给出两个区间 [ a,b ] , [ c,d ]。分别取出两个数x,y组成数对(x,y)。问有多少个这样的数对使得他俩相乘的结果是2018的倍数。结果=(1009的奇数倍个数)*k(k是除了2018的倍数的其他偶数)+2018的倍数*任意数。代码:#include&lt;stdio.h&gt;#include&lt;iostream&gt;#include&lt;math.h&gt;#...

2018-06-09 22:03:13 252

原创 ABC048&ARC064(upcoj 6487) Cosmic Rays (最短路)

题目大意:在二维平面内,给出起点和终点,你可以任意方向行走,给出n个圆(圆心x,y和半径r),它们可能相交或者相离,在圆内行走不会受到辐射。现在问你,你从起点走到终点,被辐射的最短路程是多少。换个角度思考,如果要从A圆心走到B圆心,被辐射的路程是这两个圆的圆心距减掉它俩半径之和(肯定按照直线方向走才保证最短)。如果小于零,代表这两个圆相交,被辐射的路程也就是0。所以这道题的解法是:求出任意两个圆心...

2018-05-29 21:41:23 490

原创 ccf 棋盘评估(极大极小值搜索+alpha beta剪枝)

#include#include#include#includeusing namespace std;int ma[5][5];int cha(){ int ans=0; for(int i=1; i<=3; i++) { for(int j=1; j<=3; j++) { if(ma[i][j]==0

2018-04-27 21:16:44 755 1

原创 zoj 4011 Happy Sequence(动态规划)

大致题意:假如有一个数列a1,a2,a3,a4,a5....an。如果对于每一个a[k],都有a[k+1]%a[k]==0.那我们称这个数列为happy sequence。现在给你两个数n和m,在保证每个happy sequence中的元素不大于n的情况下,求长度为m的happy sequence有多少个??这道题用动态规划去做,首先找状态,我们设数组f[i][j]表示以i结尾且长度为j的happ...

2018-03-10 21:08:08 547

原创 20180305

http://www.cnblogs.com/fengty90/p/3768845.html

2018-03-05 12:17:18 169

原创 LCA最近公共祖先 hdu-2586

大致题意:一个城镇有n个房子,有n-1条双向路将n个房子连接起来,城镇中不会有环。每条路都有自己的长度,现在问你任意两个房子间的距离是多少。既然不会形成环,那我们可以任选一点作为根,“吊挂”起来形成一棵树。那任意两个房子间的距离就是这两个房子的最近公共祖先分别到达两个房子距离的和。我们先利用dfs将每个点到达根的距离都求出来,然后求A和B的距离就转换成(A和根部之间的距离 - 最近公共祖先和根部之...

2018-02-21 18:18:03 348

原创 关于dinic算法中当前弧如何优化问题

刚开始学最大流dinic算法时,并没有运用优化,但是也解决了一些题。后来在做hdu的3572时,一直超时,被卡时间。所以上网查了下,了解到dinic中必须要加当前弧优化才可以过。然后查了下当前弧优化是什么鬼,网上的解释也是比较模糊,自己便思考了一番,于是说一下自己的想法。当前弧优化就是为了防止走重复的边,从而较少了时间。int dfs(int k,int y){ if(k==maxl+1...

2018-02-20 16:23:33 1109 1

原创 欧拉路 hdu-1116

#include&lt;stdio.h&gt;#include&lt;iostream&gt;#include&lt;string.h&gt;#include&lt;algorithm&gt;using namespace std;//有向图欧拉路 要记录每个节点的入度与出度int in[30];int out[30];int fa[30];//是否存在欧拉路的前提条件是图必须连通...

2018-02-16 10:58:29 147

原创 二分匹配-hdu-1281

这道题如果读懂了,就很简单。大致题意:一个n*m的棋盘,有k个可以放‘車’的格子,放完‘車’之后,要保证不能互相攻击。假设最多能放t个‘車’。如果某个能放‘車’的格子现在不可以放了,且结果最多能放的‘車’数目不是t了,就称这个格子为重要点。最后输出重要点的数目和t。大致思路:先将最大数目求出来,也就是利用行和列(将可放的格子的行和列进行连边)两个集合求出最大匹配ans。然后在一一枚举每个格子不可以...

2018-02-09 14:30:12 221

原创 hdu-1151(最小路径覆盖)

大致题意:有n个十字路口,m条街道,每两个十字路口组成的街道是单向的,现在要在一些十字路口放置一些士兵进行看护,士兵可以通过街道从一个十字路口到达另一个十字路口(注意是单向的,且每个路口最多被一个士兵看护),问最少需要几个士兵就可以看护所有的十字路口?解题思路:本题强调图是无环图,我们想,假如开始n个十字路口都是独立的(没有街道),那么需要n个士兵进行看护。如果有两个十字路口可以组成一条单向路,那...

2018-02-08 22:11:37 192

原创 树状数组区间修改区间查询

#include#include#include#includeusing namespace std;long long num[200050];long long c[200050];long long c2[200050];long long n,q;long long lowbit(long long i){ return i&(-i);}void add(

2017-12-01 20:22:20 192

原创 ccf 除法

#include#include#include#define ll long longusing namespace std;ll num[100050];ll c[100050];ll n,m;ll lowbit(ll i){ return i&(-i);}void add(int i,ll val){ for(i; i<=n; i+=lowbit(i)

2017-12-01 20:21:01 405

原创 差分数组

给你一个序列,现在进行多次操作(很多),操作分两种,一种是在(x,y)区间内加减某个数,另一个操作是查询(x,y)内的所有数的和。看到这种题,我们第一想到的就是树状数组和线段树,如果暴力做,那肯定会tle。现在把这种题型改一下,改成先进行区间修改操作,最后再查询。那么现在就可以使用差分数组代替树状数组和线段树来更简单的求解。注意:差分数组只能解决先区间修改再查询的题。设a数组为

2017-12-01 17:09:18 441 1

原创 sdsad

#include#include#includeusing namespace std;#define overlow -2#define error -1#define ok 1#define status int#define maxsize 200#define elemtype inttypedef struct seque{ int *base; i

2017-11-30 19:59:39 410

原创 bfs 三维标记

做训练赛遇到的一道题,感觉很好。大致题意:现在给你一个地图n*m,' . '代表是空格子,' * '代表是有柱子阻隔。现在你站在a点,要走到b点。走的时候要遵循一个规则:必须走相邻的格子,如果相邻的格子为有柱子格子,那么这个格子与有柱子的格子相邻的边起火,如果一个有柱子的格子的两条或者多条不同的边起火了,那么这个格子就会变成空格子。现在问你,你是否能从a点走到b点。n大致思路:

2017-11-29 19:59:24 256

原创 java 大整数开方模板与常用方法

BigInteger开方:public static BigInteger Sqrt(BigInteger xx) { BigDecimal x=new BigDecimal(xx); BigDecimal n1=BigDecimal.ONE; BigDecimal ans=BigDecimal.ZERO; while((n1.multiply(n1).subtract(x)).abs(

2017-10-29 12:49:33 1029

原创 ccf 2017-09-04 通信网络 图的遍历

中文题意,不在重复。开始时用的传递闭包思想,三层循环,结果给了35分,超时了。后来,看了别人的代码,发现暴力搜图就可以了。我们只需遍历n个点(发现n才1000。。。),每次都将此时的节点当做起点,然后开始查询通过此点能到达的所有点。代码:#include#include#include#include#includeusing namespace std;int f

2017-10-24 20:52:34 5350 3

原创 ccf 公共钥匙盒 模拟

这道题理解不难,但是实现真的。。。网上没有答案,也不知道自己错在哪里了,于是自己测试样例找错误,最后终于找对了。我的大致思想就是纯模拟(这道题除了模拟,应该没有其他做法,有的话,请大佬告诉我)。利用一个vector模拟钥匙盒,然后模拟取放。当V[i

2017-10-12 21:23:24 4375 2

空空如也

空空如也

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

TA关注的人

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