自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2017 Multi-University Training Contest - Team 2 To My Boyfriend

我是参考了这篇文章点击打开链接接下来我讲几个比较关键的点。1.n*m的大矩阵总的有(n+1)*n*(m+1)*m/4;2.颜色是从0开始依次累加的。3.这个符合要求的子矩阵存储用int 会爆掉,(这个我估算错了一次。。。)进过这两次比赛(我是小白),感觉杭电喜欢考容斥还有贡献和问题(我认为是一类 A占有B 但是却反过来计算从B被多少A占有,就像这道题)。这样的题目其实不是很

2017-07-31 11:55:30 363 1

原创 2017 Multi-University Training Contest - Team 2 TrickGCD

诡计多端的GCD。。。其实这个题目不是很难,题目的元素范围已经提示了我们枚举GCD。先用sum进行一个计数过程,然后前后累加sum。这样是为了快速找出我们想要范围内的元素,例如sum[i]-sum[j]=范围到j-1的元素个数,时间复杂度O(1),很棒棒。这里是为了一次消灭一个范围的元素。这样我们就得到了一个如何在数组中快速查找范围元素个数的方法(小范围整数数组)。接下来就

2017-07-30 08:46:10 245

原创 2017 Multi-University Training Contest - Team 2 Regular polygon

一开始的时候我是枚举正方形的中心,结果wa了一下午,水平太菜了。正确的方法是每次枚举两个点,然后就能计算出另外4个点的坐标(对于常年没数学的还是在纸上一笔一划的把点坐标求出来)然后这样结果会是4倍,结果/4即可。还有一点,我虽然知道多关键字排序,但是稍微变一下我就不会了。。。。用pair代表坐标,然后按这两个关键字进行排序,这样找点的时候就能二分查找了。所以这道题目对于水平不行

2017-07-28 10:54:07 349

原创 2017 Multi-University Training Contest - Team 2 Maximum Sequence

这个题目简单的贪心即可(后面附上官方证明),实现起来要注意ai数组要不断更新,b数组排序后从头往后依次使用即可。官方证明:预处理:a_i -= i ,易证明从最小的b开始选每次选最大的一定可以使结果最大。 证明思路:如果条件改为a_i<=max{a_j-j|b_k<=j<=n},那么b的顺序与最后的结果无关。条件改回来后,由于每次要计算一个数的最大值时都有a_(n+1)...a_(i-1)在范

2017-07-27 18:10:07 462

原创 2017 Multi-University Training Contest - Team 1 Balala Power!

这个算法没啥好说的,排序,贪心,注意不能为0的既可以。但是实现上要注意一些。首先每个字母开辟一个大的数组,用来储存该字母所占的指数位。weight[]然后根据指数位进行排序。然后在将权进行取模即可。fac[0]=1;for(int i=1;i    fac[i]=fac[i-1]*26%MOD;最后累加求出结果。AC代码#include #include

2017-07-26 09:59:16 347

原创 HDU4546(组合求第k小 优先级队列)

这个直接当模板用吧,太巧妙了,我不是很能理解。#include #include #include #include using namespace std; int arr[10005]; typedef struct node {

2017-07-25 10:16:38 504

原创 HDU4547(tarjan算法 离线LCA)

我也是第一次接触tarjan算法,来来回回花了不少时间才把这道水题做出来了。tarjan算法是一种离线算法(就是等询问全部输入完了再一并处理),算法本身其实挺容易理解。就是需要用到的数据结构有点繁杂,第一次接触肯定不太习惯,多练几次就好了。下面是ac代码。 #include #include #include #include #inc

2017-07-24 17:22:30 502

原创 HDU4545(最长公共子序列)

题目很明显了,最长公共子序列。但是构建映射的时候我用了multimap结果超时。。。。。直接用hash就好,因为范围不大,就26个字母。还有一点要吐槽的是我把两个串的索引写反了 竟然提醒我RE而不是WA 结果一道水题优化了一下午。我真是去年买了个表  fuck  mmp  草TMD #include #include #include

2017-07-21 18:49:08 434

原创 基础数据结构算法_哈夫曼树

哈夫曼树还是比较实用的,又简单。具体的实现方法:设一个优先级队列,频率越小的字母越优先。每次都从队列中取出最前面两个元素,合并成一个新的元素。知道元素一个。具体的实现细节看代码把。 #include #include #include #include using namespace std; typedef struct

2017-07-19 13:58:25 391

原创 基础数据结构算法_二叉树的恢复和非递归遍历

我把二叉树的恢复和遍历写在一起了,刚好恢复完之后就能遍历,上数据结构实验课的小伙伴有福了。二叉树的恢复一定要中序序列,然后先序序列或后序序列的随便一个,其实原理都一样。对于先序来说,第一个元素是树的根节点,重点来了,用这个节点去分割中序序列。(设该节点在中序序列中的位置为i)那么对中序序列来说i左边的为左子树,i右边得为右子树。然后找出先序序列中的左右子树,递归的进行这步操作即可,

2017-07-18 17:55:20 382

原创 基础数据结构算法_计数排序,基数排序,桶排序

这三个是线性时间的排序算法,对排序的数据有一定要求。计数排序:适合排序指定区间内的整数型,并且跨度不能太大。简单来说就是开辟一个count[]数组,count[i]表示整数型i出现的次数。然后从头到尾收集起来即可。#include #include #include #include using namespace s

2017-07-16 21:18:46 409

原创 基础数据结构算法_快速排序,堆排序,归并排序

还是把基础数据结构复习一下吧,算法虽然简单,但是想把后面的思想完全领悟还是比较困难的。这个是排序的三件套,快速排序,堆排序,归并排序。快速排序:以第一个数为支点,把比他小的放前面,比他大的放后面。完成这一步需要在一个大循环里嵌套两个并列的小循环。大循环控制是否结束,第一个小循环控制把小数往前移,第二个控制把大数往前移。然后以支点的位置分别左右递归。 #incl

2017-07-16 20:47:09 404

原创 HDU1698(线段树+延迟标记)

一看便知道用线段树,题目比较水,一般简单的线段树就是两招 离散化和延迟标记这道题目明显是用延迟标记,不要用链式树,用树状数组,否则会超空间。#include #include #include using namespace std; int N,Q; typedef str

2017-07-11 17:35:52 391

空空如也

空空如也

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

TA关注的人

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