OJ
海棠花开
主要记录和分享学习内容。
展开
-
Fibonacci数列(动态规划相关)
问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。样例输入10样例输出55样例输入22样例输出7704数据规模与约定1 <= n <= 1,000,000。#include<c...原创 2018-03-07 11:32:36 · 299 阅读 · 0 评论 -
poj1064(二分搜索)
本题需要注意的地方:1.数据精度的问题。2.保留小数点后两位。本代码涉及到的知识点:1.二分法。2.math.h头文件中floor()函数的使用。(向下取整)#include#includeint N, K;/*4118.02 7.43 4.57 5.39*/const int MAX_N = 10000;double L[MAX_N];const do原创 2017-11-25 12:58:26 · 286 阅读 · 0 评论 -
hdu5178(二分搜索)
本题需要注意的地方:1.数据量大,需要用到long long 类型。2.需要使用二分法,否则会超时。3.注意数据还需要排序。#include#include//需要注意的是数据量大,用long long 类型typedef long long ll;int n;ll k;ll a[100001];using namespace std;void solve(){原创 2017-11-25 12:52:55 · 531 阅读 · 0 评论 -
hud4768(Flyer)详解,二分搜索
题目链接:点击打开链接需要注意的点是:1.如何表示这些票发给了某人(开始我想的是用数组,然后数组下标代表人,数组中存票数,不过这里数据量太大,不可)。2.通过奇,偶性来知道要找的人在那个区间。3.如何定义较大的数据变量。4.二分搜索结束后,想找的人如何表示#include#include#includeusing namespace std;int n;long原创 2017-11-24 17:30:37 · 227 阅读 · 0 评论 -
poj2456Aggressive cows(二分搜索最小化最大值)
poj2456 题意大概就是有M头牛,N个牛舍,表示牛舍的数组x[i].要求将M头牛放进这N个牛舍,并且使牛之间的距离尽可能大。策略就是二分+贪心。网址。#include#include/*531 2 8 4 9*/using namespace std;int N, M;//N为牛舍数 M为牛数量const int MAX_N = 100000;int x[MAX_原创 2017-11-23 20:12:22 · 328 阅读 · 0 评论 -
背包问题(dp动态规划思路详解)
背包问题1---动态DP题目:有n个重量和价值分别为wi,vi的物品。从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大的值。输入:n = 4, (w, v) = {(2, 3), (1, 2), (3, 4), (2, 2)},W = 5输出:W = 5思路:首先我们采用递归的想法。定义一个函数 int rec(int i, int j)。这个函数的作用原创 2017-11-29 17:31:02 · 5767 阅读 · 5 评论 -
最长公共子序列(dp动态规划)
题意:输入:输入n,m,其分别为两个字符串的长度,比如这两个字符串是abcd, becd。输出:3("bcd"是它们的最长子序列)思路:如果当前相同下标的字符相等的话,那么dp[i + 1][j + 1] = dp[i][j] + 1;//下一段就是多了一段 否则dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1]);//下一段最长原创 2017-11-29 21:04:48 · 223 阅读 · 0 评论 -
hdu1505(最大子矩阵)
本题就是要求最大子矩阵--思路: 1.针对于dp数组中代表的每一个点,我们为其设置它的高度h。 当这个点是障碍时,我们把它的高度设置为0,否则它的高度是垂直方向的上一个点加1。2.我们设法求出该点向左和向右能够延伸的最大距离。然后用right - left + 1就等于边的长度。3.我们用高乘以边得到面积,通过判断后找到最大的面积,就可以得到答案了。如何原创 2017-12-04 20:22:09 · 520 阅读 · 0 评论