上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 69 下一页
摘要: 简单细节题。输出的时候%.2lf C++能过,G++过不了。改成%.2f G++才能过......#include#include#include#include#include#include#include#includeusing namespace std;struct J{ int ... 阅读全文
posted @ 2016-01-22 09:28 Fighting_Heart 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 感觉此题略难。。。。。。背包问题。据说有一种二维DP的写法是错的。亲测,背包做法无误。dp[i][j][k]表示前i个物品,选择j个,差值为k的情况下获得的最大总和dp[i][j][k]=max(dp[i-1][j][k],dp[i-1][j-1][k-差]+和)即第i个物品用或者不用。DP完成之后... 阅读全文
posted @ 2016-01-21 17:42 Fighting_Heart 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 好难。。。想了半天,用了类似于POJ 3186那样的DP写了一发,结果WA(其实写的时候也觉得过不了的。。。。)结果看了别人的题解报告,发现真的有点难想到。。。。。。首先要知道一个结论:构造好之后最优解的数组中的每一个数字肯定在原数组中能找到dp[i][j] 以第i个数字结尾,第i个数字用第j小的数... 阅读全文
posted @ 2016-01-21 09:45 Fighting_Heart 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 简单二维dp。o(n^3)效率过的。不知道有没有o(n^2)的解法。为了方便点,先左右交换一下。dp[i][j]表示以[i,j]为左上角的最大对称矩阵长度那么dp[i][j]=min(Max,dp[i+1][j+1])+1;其中Max是以[i,j]为起点,i这一行和j这一列最长公共前缀的长度#inc... 阅读全文
posted @ 2016-01-20 13:51 Fighting_Heart 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 简单DP因为一定是小的数字推到大的数字,所以排序,转化成线性的DP#include#include#include#include#include#include#include#includeusing namespace std;const int maxn=100+10;int a[maxn]... 阅读全文
posted @ 2016-01-20 10:37 Fighting_Heart 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 简单DP,每一条线段记录两个值,到左端点最少时间与到又端点最少时间。按照这个往后推导。#include#include#include#include#include#include#include#includeusing namespace std;const int maxn=1000+10;... 阅读全文
posted @ 2016-01-20 08:55 Fighting_Heart 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 简单DPdp[i][j]表示的是i到j这段区间获得的a[i]*(j-i)+... ...+a[j-1]*(n-1)+a[j]*n最大值那么[i,j]这个区间的最大值肯定是由[i+1,j]与[i,j-1]区间加上端点的较大值推过来的。#include#include#include#include#i... 阅读全文
posted @ 2016-01-19 21:28 Fighting_Heart 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 排序+枚举+二分最大的那些变成A,小的那部分提高最小值#include#include#include#includeusing namespace std;const int maxn=100000+10;int n;long long A,cf,cm,m;struct X{ long lo... 阅读全文
posted @ 2016-01-19 12:33 Fighting_Heart 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 简单计算几何,只要算出圆心到多边形上的最短距离和最长距离即可#include#include#include#includeusing namespace std;const int maxn=100000+10;struct Point{ double x,y;} p[maxn];doubl... 阅读全文
posted @ 2016-01-19 12:31 Fighting_Heart 阅读(369) 评论(0) 推荐(0) 编辑
摘要: #include#include#include#include#include#include#include#includeusing namespace std;long long L,R,K;long long POW(long long m,long long n){ long lo... 阅读全文
posted @ 2016-01-19 12:30 Fighting_Heart 阅读(206) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include #include using namespace std;int flag;char s[100000+10];int zero;char q[100000+10];bool Perfect(){ int len=strl... 阅读全文
posted @ 2016-01-19 12:30 Fighting_Heart 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 简单DP,感觉就是最长上升子序列的变形#include#include#include#include#include#include#include#includeusing namespace std;const int maxn=1000+10;struct X{ int St,En,E... 阅读全文
posted @ 2016-01-18 20:40 Fighting_Heart 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 好难想到... ... 状态压缩DP,写的较搓#include#include#include#include#include#include#include#includeusing namespace std;const int maxn=15;string CMP[40000];struct ... 阅读全文
posted @ 2016-01-18 18:39 Fighting_Heart 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 简单DP,最长上升子序列。先对W排序,然后对S做做LIS#include#include#include#include#include#includeusing namespace std;const int maxn=10000+10;struct X{ int w,s; int i... 阅读全文
posted @ 2016-01-18 13:25 Fighting_Heart 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 最长上升子序列#include#include#include#includeusing namespace std;const int maxn=1000+10;int a[maxn];int dp[maxn];int n;int main(){ while(~scanf("%d",&n))... 阅读全文
posted @ 2016-01-17 21:15 Fighting_Heart 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 最长公共子序列#include#include#include#includeusing namespace std;const int maxn=1000+10;int a[maxn],b[maxn];int dp[maxn][maxn];char s[maxn];int main(){ w... 阅读全文
posted @ 2016-01-17 21:09 Fighting_Heart 阅读(200) 评论(0) 推荐(0) 编辑
摘要: dp[i]表示到i这个人所用的最少时间状态转移方程dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i-1]);最后转换一下时间就可以了,当小时大于等于12的时候显示pm,其余显示am#include#include#include#includeusing namespace st... 阅读全文
posted @ 2016-01-17 20:53 Fighting_Heart 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 可以说想了好多时间。。。但是最终还是想出来了。。。感觉是DAG上的DP,dp[i][j]表示到第i分钟,第j个位置最多能接的数量。dp[i][j]有三个来源:状态转移方程:dp[i][j]=dp[i][j]+max(dp[i-1][j-1],dp[i-1][j],dp[i-1][j+1]) ;#in... 阅读全文
posted @ 2016-01-17 19:55 Fighting_Heart 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 好难。。看了kuangbin大神的博客讲解才会。。自己写的时候又写了好久。。。#include#include#include#includeusing namespace std;const int maxn=1000000+10;int a[maxn],b[maxn];int c[maxn];i... 阅读全文
posted @ 2016-01-17 16:47 Fighting_Heart 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 简单DP,最长上升子序列变形#include#include#include#includeusing namespace std;const int maxn=1000+10;int a[maxn];int dp[maxn];int n;int main(){ while(~scanf("%... 阅读全文
posted @ 2016-01-17 13:07 Fighting_Heart 阅读(188) 评论(0) 推荐(0) 编辑
上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 69 下一页