- 博客(12)
- 收藏
- 关注
原创 codevs 最大全0子矩阵
这个题可以预处理矩阵前缀和然后用n^3的方法解决,可是明显会超时,所以有一种n^2的算法。 我们可以一行一行的去算,设h[j]为从当前行开始向上数连续的0的个数(当前第i行也为0),如果当前位置等于1的话那么h[j]=0。 比如说样例: 5 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0
2016-11-07 14:52:20 771
原创 codevs1342 种树
codevs1342 种树题目 A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树。园林部门得到指令后,初步规划出n个种树的位置,顺时针编号1到n。并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度。但由于A城市土壤肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+1号位置叫相邻位置。值得注意的是1号和n号也算相邻位置!)。 最终
2016-11-03 20:41:37 534
原创 1172 Hankson 的趣味题
#include<cstdio> #include<iostream> #include<cmath> #include<algorithm> int a0,a1,b0,b1; using namespace std; int gcd(int a,int b){ if(!b){ return a; } gcd(b,a%b); } bool check(int
2016-10-19 20:43:34 357
原创 4712 gcd与lcm问题
题目描述 Description 【NOIP2001最大公约数和最小公倍数问题】的加强版。 T组数据,每组数据给出d,m,求满足gcd(i, j)=d且lcm(i, j)=m的(i, j)的个数。 输入描述 Input Description 第1行是一个数T,表示数据组数。 接下来的T行,每行两个数d,m,意义见题目描述。 输出描述 Outpu
2016-10-18 14:32:28 652
原创 1060 搞笑世界杯
你和你的朋友在欣喜之余,想计算一下排在队尾的两个人同时拿到一种票的概率是多少 (包括同时拿A 类票或B类票) 假设工作人员准备了2n 张球票,其中n 张A类票,n 张B类票,并且排在队伍中的人每人必须且只能买一张球票(不管掷到的是该买A 还是该买B). 输入描述 Input Description 输入文件仅一行,包含球票数2n . 其中,0
2016-10-17 15:20:20 306
原创 编辑距离问题
状态的设置:i对应着s1[i],j对应着s2[j] 因为一共有三种操作,然后跑for循环会把所有的对应全部对应一遍,所以不用担心插入或者删除的后续的影响; 不等的时候:f[i][j]=min(min(f[i-1][j]//删除操作 ,f[i][j-1]//插入操作),f[i-1][j-1]//修改操作)+1; #include #include #include #include u
2016-10-12 10:57:35 216
原创 最长公共上升子序列
首先,在a[i]!=b[j]的时候有DP[i][j]=DP[i-1][j]。为什么呢?因为DP[i][j]是以b[j]为结尾的LCIA,如果DP[i][j]>0那么就说明a[1]..a[i]中必然有一个字符a[k]等于b[j](如果DP[i][j]等于0呢?那赋值与否都没有什么影响了)。因为a[k]!=a[i],那么a[i]对DP[i][j]没有贡献,于是我们不考虑它照样能得出DP[i][j]的最
2016-10-12 10:31:58 208
原创 车站分级
这是一道拓补排序的题,我们的目的是找最少有几级的车站,可以转化为建图然后找图一共有几层; 把每次组数据都视为一层,把每一层没有停下的车站做一条单向边连到停下的车站上,那么每一条路便代表了一层,最后在根据拓补排序的算法看一共要跑几次。 #include #include #include #include #include using namespace std; int sta[1
2016-09-26 14:43:07 762
原创 2039 骑马修栅栏 (欧拉回路)
他说要都走一遍而且不走重复,那就是找一个欧拉回路; 不会欧拉回路的话应该先看一下欧拉回路的概念 这里让找500进制最小的,无非就是字典序最小的欧拉回路,并且因为这个题点的大小最多是500,所以用矩阵存储,遍历的时候根据循环会从小到大依次寻找。 具体事项代码里说明#include #include #include using namespace std; int d[1010],
2016-09-25 08:48:31 876 1
原创 国王游戏
此题可由数学推导,证明按左手乘右手的顺序排序; 此题 #include #include #include #include using namespace std; struct mns{ long long l,r; }; mns crt[10010]; bool cmp(mns a,mns b){ if(a.r*a.l!=b.r*b.l) return a.r*a.l
2016-09-04 08:37:26 295
原创 5.3.1codevs1073 家族
5.3.1codevs1073 家族 题目描述 Description 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。 输入描述 Input Description 第一行:三个整数n,m,p
2016-07-24 19:47:29 229
原创 聪明的质监员
codevs1138 聪明的质监员2011年NOIP提高组 小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有n 个矿石,从1到n 逐一编号,每个矿石都有自己的重量wi 以及价值vi。检验矿产的流程是:见图 若这批矿产的检验结果与所给标准值S 相差太多,就需要再去检验另一批矿产。小T不想费时间去检验另一批矿产,所以他想通过调整参数W 的值,让检验结果尽可能的靠近标准值S,
2016-06-09 15:00:20 598
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人