自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yeleng的博客

记录各种算法与想法以便自己更好的成长

  • 博客(24)
  • 资源 (2)
  • 收藏
  • 关注

原创 poj 1769

给一段长为n的线段,m个区间,要求不改变顺序,找出最少个区间使得覆盖1-n。显然可以得出这个dp公式dp[i][j]表示更新到第i个区间,到第j个位置最小要几个区间。dp[i][j]=min(dp[i][j],min(s1,e1)+1);。 s1与e1 表示第i个区间,且j在这个区间里。那么可以转换为这么个dpdp[i]表示第1个数字可以移到i所需要的最少区间数。dp[i]=m

2017-05-31 00:05:49 457 1

原创 状压DP<poj2686>

题意是有一个人去旅游,有n张马票,每张上面有ai头马。给一个有向图,走每条边的费用是长度/马票的马数量,由此可见走到同一个点会有不同的马票,也就是状态不同,需要表示这种多状态只有用状压来解决,用二进制表示状态后用正常的最短路SPFA跑一遍即可。#include #include#include#include #include #include #include #inc

2017-05-30 15:10:35 257

原创 状压DP<旅行商问题>

旅行社问题就是给一个有向图,从点0走一圈全部结点再走回来所花费的费用最少是多少。状压DP一般n因为是走完全部点,那么走到2点的费用有可能走了5,也可能没走,那么就不能简单的用最短路来找。因为要求跑完全部点回到0,而最小树形图的话无法做到。状压dp是指在一个点上存在多种状态,这些状态可以用二进制来进行表示。因为是最后走到0的费用,那么可以有这么个公式dp[S][I]=min(dp

2017-05-30 10:48:47 632

原创 poj 2104 &lt;排序分块,区间第k大>/&lt;第一次用主席树>2个方法+整体二分

给一个序列,查找区间第k大,用分块来实现首先将区间分为每块block大小,也就有num=n/block块,if(n%block==0)num++.然后每次在定义每个块其左右边界的时候进行排序,那么就得到一个每块内排好序的块。查询的时候因为是查找区间第k大,那么我们可以二分出这个区间最大能满足(区间小于其的数&lt;k),因为区间小于其的数&lt;k,也就是这个数排第k个(这里可以好好想...

2017-05-29 06:34:58 1441 2

原创 线段树回顾<找区间最小值,点修改>

注意查找的时候,因为进的区间必定包含有。那么只要l>这个区间的mid,就要右边rl在mid左边,r在mid右边就2边都要。当l r 包含这个区间的时候,就取最小值然后return#include#include #include #include using namespace std;struct ttt{ int left,right,min;};ttt q

2017-05-27 13:46:27 255

原创 POJ 3276 尺取

输入样例7BBFBFBBB为牛的头向后,F为牛的头向前。现在买一台机子可以把连续k头牛转头,问最小转的次数和最小应该买的机子的k。必须严格k头转,k=3时候,不会出现只转最后一头或最后3头。可以显然得出从第i头牛反转0次的结果与反转2次是相同的,反转1次与反转3次是相同的。那么从第i头牛开始反转的次数要么为0要么为1。然后反转的顺序对最终结果是不影响的,那么可以从最左边开始

2017-05-27 11:24:35 424

原创 POJ 1151 坐标离散化<第一道离散化的水题>

0 题意是在坐标上给n个矩阵问这些矩阵覆盖的面积是多少如果范围小,我们可以把所有矩阵覆盖的点都标记上1,但是范围非常大,可是给的矩阵数量却不多,那么我们可以考虑离散化。也就是把输入的200个x和200个y排序后一一对应到map[i][j]中,只考虑这些点。相当于此时输入的100个框框可以在map1中储存了,只储存每个小!小!小!矩阵的左下角。是因为存完4个点再按4个点来判断

2017-05-26 22:30:04 491

原创 POJ 2785

给4个集合A,B,C,D,每个集合中有4000个数,问有多少种方法使得A+B+C+D=0.一般枚举显然4000^4,可折半搜索。把A与B的4000^2种选择方式存起来到集合S,排序,然后再把C+D的4000^2的选择枚举,再二分S看是否存在其负数,存在着sum1++(错误)。因为可能A与B由不同数字组合可能得到同一个数,那么C+D中的一个数就可以有多种。正解应该是在S中找第一个大于

2017-05-26 22:05:41 432

原创 大背包问题(挑战程序设计竞赛)

40个物品,容量范围为1e15,物品重范围为1e15简单dp来写的话为o(1e15*40)枚举全部取的可能是2^40种,可以折半分为n2,n-n2来枚举。变成枚举2*2^20种,左边枚举完后按照重量排序,如果大重量的价值小于之前小重量的价值就全部剔除。那么右边背包枚举全部可能的时候,W-w=所剩重量(w可以是0),可以二分左边背包的所有重量小于剩余重量而价值又是最大的。pa

2017-05-26 21:47:29 307

原创 codefoces 2016 USP Try-outs H - Pop Divas

1 ≤ N, M ≤ 161 ≤ ai, bj ≤ 109题意是给n个数字分别为ai-an,m个数字分别为bi-bn问是否左边的一个集合的数字相乘=右边一个集合的数字相乘。因为数据范围为1e9,两个数相乘是否相等可以用log(a)+log(b)=log(a*b)的原理进行枚举全部子集+log。将枚举出的子集排序,然后b枚举全部子集的同wa-1 long double

2017-05-26 21:45:18 383

原创 usaco 2.4

题意给几个联通图(>=2个),每个联通图的直径为图中任意两点最短距离的最大值,然后将任意2点(在不同的联通图中)用一个路径连起来(路径是有长度的),问连通后最小的这个直径是多少。刚开始是先用并查集合并一波,然后每个dfs一遍,找到离其最远的点(同一个联通图中)存如len中(len就是这个点与这个图的结点的最远距离),然后将距离连起来,枚举这个路径连接全部的点,找到连接后的最小值,这个值为这两个

2017-05-22 21:53:29 290

原创 USACO 2.4 Fractions to Decimals

题意:给2个数字,输出a/b的值,如果结果是整数就输出结果.0,如果在小数不是无限的小数,就输出如22 5 输出4.4,但是如果是无穷循环小数如10 3 就输出3.(3),把循环输出的用括号括起来。由除法的逻辑可以知道,如果除数相同,被除数不变的话,那么除的结果一定相同,根据这个原理,把出现被除数丢到一个数组中进行标记,标记为其第一次出现的位子,那么第二次出现的时候break这个循环,

2017-05-22 10:51:48 389

原创 usaco 2.4 PROB Bessie Come Home<水>

题目给出一个Z点表示终点,然后给各种点之间的距离,大写的点有牛,小写的点没牛,每只牛的速度一样,问哪只牛最快到达终点,直接从Z跑一遍最短路然后找即可。/* ID: 13227851PROG: comehome LANG: C++ */ #include #include #include #include #include #include #include #inc

2017-05-22 09:22:52 221

原创 codefoces #411

We have a tree T with n vertices and m types of ice cream numerated from 1 to m. Each vertex i has a set of si types of ice cream. Vertices which have the i-th (1 ≤ i ≤ m) type of ice cream form a con

2017-05-15 23:09:17 267

原创 codeforces #412

A. Is it rated?题目给出n对数 分别为分数变化前后的数 以递减输入 询问是否codefoces在一场比赛结束后变分了。如果这一对数全部相同,说明不知道变没变化如果左右不同,说明已经改变了如果一个低分有更好的排名 than 高分有低的排名说明排名没改变。B. T-Shirt Hunt给3个数字 p x y x>=y分别表示位子p 目前分数x  最低要

2017-05-15 21:25:14 250

原创 3种树状数组

1、单调更新,区间查询。sum(i)的意思是从1-i的和。int n;int c1[500];int lowbits(int x){ return x&(-x);}int sum(int x){ int sum1=0; while(x>0){ sum1+=c1[x]; x-=lowbits(x); } return sum1;}int add(int x,int

2017-05-15 18:46:55 169

原创 2017、5、13日省赛前组队训练赛。

long long是种玄学hdu4968 贪心 (wa了一发,代码bug问题)hdu4970 离线加区间的值O(n),用的优先队列,读取到头就+攻击,到尾就减攻击。正解是O(n)的处理,即把l, r,  d, 用数组a[l] += d;  a[r+1] = -d; 然后从前向后扫一遍就 能计算出每一个格子的伤害一样的思想,不一样的做法!!树状数组也可以。hdu 4967 用

2017-05-15 18:36:23 257

原创 codefoces #409

C. Voltage Keepsaketime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou have n devices that you want to use

2017-05-12 23:18:02 210

原创 最大正方形 DP

题意是给一个由0、1组成的矩形,问这个矩形中由0组成的最大正方形面积是多少输入样例:7 101 0 0 0 0 0 0 0 1 00 0 1 0 0 0 1 0 0 00 0 0 0 0 0 0 0 1 00 0 0 1 0 0 0 0 0 00 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 1 0 0

2017-05-11 16:25:31 507 1

原创 归并排序的同时求逆序数

#include#include #include #include#include #include #include #include #include #includeusing namespace std;const int maxn= 1e5+7;int A[maxn],L[maxn],R[maxn];void merge(int n,int left,int

2017-05-11 15:23:00 214

原创 CDoj 1324<分块>

看了电子科大的分块算法视频学会的,看视频来学算法感觉特别棒!!当线段树或树状数组对区间问题还是很难解决时,可以考虑分块。分块的思想是把范围为n的数列,分为num块,每块长度为sqrt(n),长度为num(n%sqrt(n)==0时)/num+1块。block为块的长度,然后定义数组L[i],R[i],表示块i的左边界和右边界。belong[i]意思是第i个数据属于哪一个块。这样就b

2017-05-11 10:55:41 249

原创 codefoces Educational Codeforces Round 20

A、给两个数n、m。n表示是否能构建一个n行n列的对称矩阵(也就是里面的1必须是对称的),m表示里面需要填充m个1,按照字典序最大输出,2个矩阵字典序为从上到下第一个不同行的中,第一个从左向右第一个不同的那个数为1的矩阵大。n*n#include#include #include #include #include using namespace std;setq1;se

2017-05-04 19:32:01 270

原创 最长公共子序列<DP>

dp[i][j]表示s1序列到i个字符,s2序列到j个字符的最长公共子序列有长。for i=1 to l1 for j=1 to l2 if(s1[i]==s2[j])dp[i][j]=dp[i-1][j-1]         Q1为什么不能是dp[i-1][j]    dp[i][j-1]elsedp[i][j]=max(dp[i-1][j],dp[i][j-1]Q1因为

2017-05-04 11:47:35 273

原创 最长上升子序列,LIS<DP+二分>

例子如4,1,6,2,8,5,7,38个数,如何求其最长上升子序列呢。可以用L[i]表示前面子序列长度为i+1(因为length的下标从0开始)尾元素的最小值。A[i]装的是每个元素的值。length=1;初始化L[0]=A[0].for i=0 to n-1if|(L[length-1]L[length++]=A[i];//表明最长的子序列的尾元素小于A[I],那

2017-05-04 10:56:22 182

R语言的简单使用

R语言的简单使用。R是一种可编程的语言。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。

2018-08-20

Svm支持向量机详细内容

SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。SVM支持向量机,好东西啊,大家好好学习

2018-08-20

空空如也

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

TA关注的人

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