自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

china震震的博客

大家一起来学习

  • 博客(27)
  • 问答 (3)
  • 收藏
  • 关注

原创 计蒜客 羊圈(凸包+多边形面积计算模板)

题目链接:https://www.jisuanke.com/course/615/28220题目大意:让你求解出可以用木棍围出的最大面积,然后算出可以容纳多少只羊题目思路:首先用扫描线法求出凸包的点集,然后再利用叉积求出多边形的面积。学到的东西:利用叉积求面积可能是负数,这样就用到了abs()函数。这个题目要求羊的个数,有小数点怎么办?向下取整!!!floor()floor()floo

2017-08-15 12:59:13 364

原创 巴什博弈威佐夫博弈

巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。    显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m

2017-08-12 12:59:46 295

原创 hdu6081 度度熊的王国战略(并查集处理连通图问题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6081题目大意:给你一个连通图,你可以减掉一些连通分量,让它变为非连通图,输出去掉多少连通分量(最少),图为非连通图题目思路:    一、首先你要确定该图是连通图,如果不是则输出0,图内一共有N个点,那么根据并查集的性质,会有N-1个点并入到某一个点为根节点的集合中去,所以设Cnt=N-1,

2017-08-09 12:09:03 487 3

原创 计蒜客 平分娃娃(多重背包问题二进制优化)

题目链接:题目思路:典型的背包问题,一开始的思路是将多重背包转变为01背包从而求解出相应的答案,最后发现这样的话会超时,那么我们就要想办法优化这个算法,所以我们采用了二进制的方法来优化多重背包。优化的思路:思路:这接对k进行1,2,4,8·····的分解,大于0的部分不要忘记,分解的时候注意V与W的重新分配。代码:#includeusing namespace s

2017-08-07 11:38:34 1858

原创 计蒜客 机器人的相遇问题(扩展欧几里得模板题)

题目链接:https://www.jisuanke.com/course/615/28212题目大意:求解走多少步后,两个人再次相遇。题目思路:将式子总结成ax+by=gcd(a,b)的形式,从而可用扩展欧几里得进行相应的求解。无解的情况是c/gcd(a,b)不为0代码:#include using namespace std;#define ll long longll

2017-08-29 19:06:28 1024

原创 计蒜客 矩阵变换 (bfs+set)

题目:题目大意:让你求解出原字符串怎样通过已有的规则变化为目标串,输出所用到的规则。题目思路:这样的话,我们先将所谓的规则写成相应的函数,然后利用bfs进行字符串的变换,知道字符串变为目标串结束,如果你不进行visit标记的话,那么MLE,如果采用O(n)的方法来标记的话,肯定会超时,那么就用set作为标记数组,这样就能得出相应的结果。代码:#include us

2017-08-28 18:41:21 464

原创 计蒜客 多边形面积(pick定理模板题)

题目链接:https://www.jisuanke.com/course/615/28223题目思路:将各个点的坐标按照顺序储存起来,然后再利用分解三角形的方法存储多边形的面积,再利用gcd求解边上点的个数,最后用pick定理求解图形内点的个数学到的东西:代码:#include using namespace std;int gcd(int a,int b)

2017-08-19 09:45:43 359

原创 计算几何-判断两线段是否相交(模板)

判断线段相交有很多的方法,现在先整理一下最简单的方法,由于时间问题先整理模板,过段时间再整理理论struct Point{ double x; double y;}p1[5050],p2[5050];double mult(Point a, Point b, Point c){ return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(

2017-08-15 12:30:22 720

原创 计算几何-计算多边形面积(模板)

提起平面多边形,最容易想到的就是三角形了。对于简单的三角形面积问题大家一定不陌生!其中就编程而言,精确度最高的当属通过叉积(也称内积)来求解。那么是不是平面多边形也可以通过将多边形分割成一个个的三角形进而求解呢?      回答是肯定的,以梯形ABCD为例,S梯形ABCD=S三角形ABC+S三角形ACD  。       同样对于多边形来说我们也可以通过同样的分割三角形法来实现多边形面积的

2017-08-14 21:20:53 712

原创 计算几何-常用几何函数(模板)

浮点误差与精度问题实数是用浮点数运算的,精度受到限制,特别是乘除法之后,误差比较大。此时>=代码:const double eps=1e-8;int dcmp(double d){ if(fabs(d)<eps) return 0;//fabs(x)返回实数x的绝对值 return (d>0)?return 1:-1;}叉积判断方向p1×p2 = x1

2017-08-13 21:46:02 1572

原创 hdu 2795Billboard(线段树+思路)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795题目大意:有个公告板,大小为h*w,要贴n张公告,每个公告的长度是k,高度固定为1,公告放的要尽可能靠上并尽可能靠左,每给出一张公告,要求这个公告在满足要求的情况下放在了第几层。 题目思路:利用线段树查询的性质,复杂度只有logn。题目要求尽量靠左,那么就采用tree数组储存每个区间的最大

2017-08-11 12:54:58 350

原创 计蒜客 奇怪的报数游戏(树状数组+二分+思路)

题目:题目大意:以前是知道序列,然后利用树状数组求解比自己小的数的总数,这里刚好反转。让你求解原来的序列。题目思路:如果我们知道最后一个人,他前面有 i 个比他小的编号,那么他的编号一定是 i+1。那么我们是不是可以从后往前来确定每个人的编号呢。设某个点的原序列的值为x,那么它必然满足read(x)+m[i]+1(在这里read(x)为在它后边比它小的数,m[i]为前边比它

2017-08-10 21:59:06 464

原创 数据离散化模板(用STL实现)

最近在练习一道提的时候,数据比较大,总过不了,后来了解得需要用离散化,对视抛弃没有用到数据只存取有用的数据,并且用简单好记的东西去存储,例如:有些数据本身很大, 自身无法作为数组的下标保存对应的属性。如果这时只是需要这堆数据的相对属性, 那么可以对其进行离散化处理!离散化:当数据只与它们之间的相对大小有关,而与具体是多少无关时,可以进行离散化。例如

2017-08-10 20:15:31 1034

原创 计蒜客 排序(离散化+树状数组)

题目链接:https://www.jisuanke.com/course/615/28134题目大意:给你一个序列,将它排列成升序,最少的交换次数是多少?题目思路:一次有效的交换意味着什么呢?为了使序列有序,一次有效的交换应该是后一个较小的数与他前一个较大的数交换,那么单独一个数字的交换次数,应该是这个数字前面比它大的数字的个数。

2017-08-10 20:13:06 365

原创 初识树状数组(模板)

树状数组:优雅而简短的数据结构

2017-08-10 14:04:40 227

原创 计蒜课 银行的客户队列(映射二叉堆学习+模板)

题目链接:https://www.jisuanke.com/course/615/28120题目思路:STL之映射二叉堆个人总结用法:让你查找堆中的某个元素的时候,让你同时取堆顶或者堆低的元素的时候,需要用到映射二叉堆。二叉堆中pair的第一个元素是决定优先级的!!!!!set中的end函数并不是最后一个元素,取最后的元素用的是rbegin。ac代码:#in

2017-08-10 11:42:59 504

原创 计蒜客 计蒜机(优先队列+思路,没想到)

题目:题目思路:我们只要把注册的 ID 全部放入堆里面,然后按照时间小优先级高的方式,每次从堆中取走时间最小的 ID。然后把该 ID 的时间增加该 ID 的间隔时间后再次放入堆中,就可以了。学到的东西:一开始没有想到这一方面,题目的优先级没有分析清楚,思路很重要。代码:#include using namespace std;struct node{ i

2017-08-09 09:47:20 576

原创 计蒜客 接龙 (带权并查集模板题)

题目链接:https://www.jisuanke.com/course/615/28116题目大意:通过一系列的合并操作,然后求解出两点之间的距离。题目思路:我们可以很容易的统计俩张卡片是否在同一个队列中,用并查集就可以了。关键是怎么计算,在一个队列中的俩个卡片之间卡片数目,只要维护一下每个卡片到队列头的卡片数目就好了。在计算同一队列中的俩个卡片之间卡片数目,只要把俩个卡片到队列头的卡片

2017-08-09 09:38:02 641

原创 计蒜客 家具布置 (有依赖的背包问题)

题目来源:这个题目改编自NOIP2006 金明的预算方案 题目思路:我们仔细想想,其实这个题目一共只有5种情况, 1主件+0附件  1主件+1号附件  1主件+2号附件  1主件+1号附件+2号附件  0主件+0附件;也就是说上述五种情况我们只能选择一种情况,那么就采用分组背包的方法,每一组我们只取出贡献最大的情况。学到的东西:背包九讲中的内容还要细细体会。代码:#include

2017-08-07 21:13:52 352

原创 计蒜客 正方形 (dfs好题,具有参考价值)

题目:题目思路:先将木棍长度数组降序排序,dfs前先判断一下是否符合题意,然后进行dfs,dfs出结果就退出,需要剪枝的地方,dfs 用一个参数记录上一次搜索的位置在哪里,下一次搜索只会在这条边之后。搜索完一条边后

2017-08-03 23:16:45 1318

原创 计蒜客 逃跑 (bfs+预处理)

题目:题目思路:bfs 搜索状态多加一维表示时间,vis[t][x][y]vis[x][y][t] 表示 tt 时间能否到达点 (x, y)(x,y)。对于每个士兵, 预处理出哪些时间哪些点是不可访问,我们使用mmap[x][y][t]表示(对应哪些状态是非法的)的。代码:#include &lt;bits/stdc++.h&gt;using namespace std;int n,m,k,d...

2017-08-03 22:43:18 770 2

原创 计蒜客 方程的解数

题目链接:https://www.jisuanke.com/course/615/28151题目大意:求解多少满足方程的解题目思路:数据量较小直接dfs坑点:用pow居然会超时,所以要新建一个mypow数组,对数据进行预处理。学到的东西:pow函数速度非常慢,必要条件下可以进行相应的预处理。代码:#include using namespace std;int n,M;

2017-08-02 23:00:18 1357 2

原创 next_permutation(排列问题)

全排列的模板#include     // std::cout#include    // std::next_permutation, std::sortint main () {    int myints[] = {1, 2, 3};    std::sort(myints, myints + 3);    std::cout     do { 

2017-08-02 22:12:32 305

原创 计蒜客 踩蚂蚁(优先队列)

题目链接:https://www.jisuanke.com/course/615/28104题目思路:_这道题需要用到前面介绍过的贪心策略,因此在这里直接给出算法的过程,你只需要借助priority_queue来实现它。_首先将蚂蚁按照血量从大到小排序,并把鞋子(可以使用结构体或pair来保存鞋子的伤害值和费用)按照伤害值从高到低排序。逐个计算每只蚂蚁需要用哪双鞋子来踩,对于当前蚂蚁的

2017-08-02 21:44:47 450

原创 蒜厂秘籍(map)

题目思路:用STL中的map学到的东西 string的迭代器是auto  ,一整行的输入getline(cin,string)代码:#include using namespace std;int main() { string start1;cin>>start1; string x,y; map m; while (true) {

2017-08-02 14:53:51 315

原创 蒜头君的玩具娃娃

题目链接:https://www.jisuanke.com/course/615/28147/题目思路:RMQ模板题代码:#include using namespace std;int f[200010][20];int f2[200010][20];//最小值 int lg2(int n)//确定查询时候的分界值 { return log(double(n))/log(

2017-08-02 13:37:46 985

原创 蒜头君学代数(二分)

题目链接:https://www.jisuanke.com/course/615/28897题目思路:2 分 \|A-B\|∥A−B∥ 矩阵范数,即答案,那么对应的 BB 矩阵的每个元素都可以确定在某个区间范围内,然后根据这些区间范围判断是否能构造出一个奇异矩阵。坑点:为了避免精度问题采用循环的方法求解,一开始的check函数写的不对,采用四个循环的方法,求解出行列式的最大值和最小值,如果

2017-08-02 12:36:47 782 2

空空如也

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

TA关注的人

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