自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笔记

个人笔记,欢迎交流!

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

原创 poj3685 Matrix(第K大的数)

题意:给你一个公式,i行,j列,表示这个矩阵里i行j列的数是i^2 + 100000 × i + j^2 - 100000 × j + i × j. 求这个矩阵第m大的数。 思路:数学差的看不出这个公式的规律,可以先输出几行发现,每列从上往下递增,从左往右递增。 所以这个二分的判断函数里面也是二分查找比x小的个数,在进行判断。 详细见代码:#include<cstdio>#include<

2016-04-28 21:10:50 353

原创 csu1646 HearthStone

好久没有写dp,这题算很基础. dp首先定义状态:dp[i][j][k]:当进行到第i轮,达拉然法师出场j个,刺骨使用k次情况下的最大伤害。 仔细考虑,还有每轮的费用,法师,刺骨使用几张的情况这些并不需要定义成状态。开始我想复杂,把这些也定义成状态,结果状态转移方程反而不好写。这里就要思考一个变换过程中并不是要把每一个变换都设置为状态的一个变量,只要拍你定义的状态容易写出状态转移方程,并能正确求

2016-04-28 18:29:13 364

原创 poj3579 Median

题意:给你100000个大小1000000000的数,他们任意组合差的绝对值的结果有组合数C(n,2)个,这个结果很大数组肯定存不下。问你这些差的绝对值的数中中位数是? 思路:第K大的数,当然是二分了。主要还是判断函数。对于每次x,直接二分原来序列里对于当前的数有多少个大于等于这个范围的数,求和,就可以知道这个x在差里面有多少个大于等于它的数,所以如果sum大于这个差序列里中位数以后数的个数才能说

2016-04-25 20:35:36 433

原创 poj3111 K Best

题意:求n个东西里取k个,使它们平均值最大,输出这个k个东西序号。 思路:这题数据很大,开始我没注意二分的细节,一直TLE,顿时感觉这题有毒。改了两个地方就AC,一个是 把排序的定义方式cmp写成结构体里对<的重载 bool cmp(node a,node b) { return a.b>=b.b; } 改成: struct node { double b;int

2016-04-25 15:16:55 542 1

原创 poj2976Dropping tests(最大化平均值)

题意:从n个东西里面取还剩k个东西使它们的平均值最大。 思路:典型平均值最大化 问题,标准解法二分,这里是剩下k个,所以取n-k个东西。 详见挑战程序设计143页。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int a[1010],b[1010];int

2016-04-25 14:18:05 329

原创 hdu 3242 List Operations

题意:很水的模拟字符串,get到vector容器删除 erase ,指针会自动向后移并返回当前指针内容。 其他,容易错的,考虑空串之间操作。#include<bits/stdc++.h>using namespace std;int main(){ string a,b,op; string s=""; while(cin>>a){ if(a=="."

2016-04-23 19:36:12 299

原创 hdu5671 Matrix

题意: 官方题解:对于交换行、交换列的操作,分别记录当前状态下每一行、每一列是原始数组的哪一行、哪一列即可。对每一行、每一列加一个数的操作,也可以两个数组分别记录。注意当交换行、列的同时,也要交换增量数组。输出时通过索引找到原矩阵中的值,再加上行、列的增量。小技巧:不用真正换,用中间变量记载过程!#include<bits/stdc++.h>using namespace std;long l

2016-04-23 00:39:44 345

原创 hdu1811 Rank of Tetris(并查集+拓扑排序)

题意:中文题意,就不多解释。 思路:这题比普通的拓扑排序多了一个相等的关系,而且当拓扑排序的结果不唯一的时候是输出”UNCERTAIN”. 然后这题处理相等的关系,由于是可以传递特性,果断选择并查集,将相等绑定在一起。然后把相等看成一个整体,对这些整体一块块拓扑排序。 当队列里出现两个以上入度为0的块,就说明解不唯一。 当最后还剩下没有排序的块,就说明排序矛盾。 没有出现以上情况就是ok#

2016-04-21 19:11:35 368

原创 HDU 2647 Reward(拓扑排序)

题意:春节来临给员工发工资,有n名员工,m个要求,每个要求是 a b,意思a的工资要比b多。每个员工最低工资是888.问总共发放工资的最低是多少? 思路:从最低工资拓扑排序.排序的方向就是从低到高,(开始方向建错,W好几发)。最低888,依次+1,没有要求就是统一等级。#include<bits/stdc++.h>using namespace std;int v[10010],ans[100

2016-04-21 18:54:42 341

原创 hdu1274 展开字符串(递归or栈)

题意:展开 1(1a2b1(ab)1c)= abbabc 3(ab2(4ab))= abaaaabaaaababaaaabaaaababaaaabaaaab 类似的具有 在括号里面,递归特性的的字符串。 思路:对于每个括号里面都具有类似特性,明显对于每个括号里递归处理或者借助栈,原理都是一样的,递归算是借用系统的栈。码力很弱,搞了几天,最后还在我们oj上出了一道类似的,最后把两种代码记载一下

2016-04-16 21:41:38 890 1

原创 poj1990 MooFest

题意:主人公又是Farmer John’s,他有n头牛,参加完party后每头牛的听力值变成v后,每头牛还有一个位置属性。并且任意两头牛位置之差乘以他们当中v大的哪一个作为一个volume,问n头牛两两之间所有volume之和是。 思路:也就是 给你n个数,n的范围是20000,然后算任意两两数之差的绝对值之和,n^2的算法明显TLE。这里,由前面做过的题目,树状数组可以求对于当前第i个数,前面比

2016-04-14 23:51:32 851

原创 树状数组总结

前言:早在知乎看到某位巨巨回答最优美的数据结构:树状数组, 原因是:实现简单,代码优雅,效果拔群。 这么优美的数据结构,怎么能不来一个总结? 树状数组的作用:频繁对于单点和区间修改和查询操作,时间复杂度都是log(n). 关于原理神马,各种神牛博客都有,我就不多加解释. 这里就发一些题解,作为新手入门,大牛可以忽略. 主要操作: 1.追溯其父节点或下辖第一个没有关系的点: (所有

2016-04-06 19:08:00 5147

原创 hdu5656 CA Loves GCD

题意:给你n个数ai,n和ai范围在1到1000之间,问这些数任意不重复组合的最大公约数之和取模100000007的结果。 思路:设dp[i][j]表示前i个数里任意组合后的最大公约数为j的个数。 则它的转移方程就是:dp[i+1][j]+=dp[i][j].如果dp[i][j]存在则与当前a[i+1]求一次最大公约数: dp[i+1][gcd(j,a[i])]+=dp[i][j]#includ

2016-04-03 20:33:51 689

原创 poj3225 Roadblocks

题意:某道路共有R条道路,N个路口。问从1号路口到N路口的次短路是?次短路是比最短路长度次短的路径。 思路:Dijkstra 算法虽然只能求最短路,但是我们修改一下。次短路:要么是到终点的前某一个点的最短路加上它到终点的路,或者是要么到它的次短路加上到终点的最短路。因此,对于每个顶点,我们记录的不仅是最短路,还有 次短路距离。接下来就是和Dijkstra()一样的做法,不断更新这两个距离就可以求出

2016-04-02 18:25:13 324

原创 hdu1160 FatMouse's Speed

题意:求一个上升序列长度,和输出序号。这里就需要我们标记最初序号,用一个pre[]回溯回去。总之很水的dp。#include<bits/stdc++.h>using namespace std;struct node{ int w,v,t;}a[1000+10];bool cmp(node a,node b){ return a.w==b.w ? a.v>b.v : a

2016-04-02 10:52:12 303

原创 poj3040Allowance

题意:农夫约翰要给奶牛Bessie发工资了 ,每周至少 C 元。约翰手头上有面值V_i的硬币B_i个,这些硬币的最小公约数为硬币的最小面值。求最多能发几周? 思路:首相将面额大于等于C的硬币,直接发送。对于生下硬币,先从大到小排序,凑出最接近C的面额,不超过C,然后在从小到大,凑出刚好大于等于C的面额。然后修改它们数量,一直重复这个操作。最后所有都凑不出C为止,思路好想,操作不好写。#includ

2016-04-01 20:30:45 692

空空如也

空空如也

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

TA关注的人

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