hdu3516 --- 四边形不等式优化
来源:互联网 发布:安装战网传输数据失败 编辑:程序博客网 时间:2024/04/27 23:43
其实这一题还是没有完全证明,因为赵爽的了论文里面是w(i , j) 一定要是相同的,而对于这一题,其实转移方程和k的选择不同而w不同,但是运用四边形不等是因该也没错.
四边形不等是的实质就是解的单调性...很多时候都可以这样做.使用解的单调性或者是凸性来优化DP转移.
#include <stdio.h>#include <string>#include <string.h>#include <queue>#include <stack>#include <map>#include <iostream>#include <stdlib.h>#include <math.h>#include <set>#include <algorithm>#define inf 0x3f3f3f3f#define mem0(x , y) memset(x , y , sizeof(x))#define ll long long#define LL long long#define rep(x , y) for(int x=0;x<y;x++)#define per(x , y) for(int x=y-1;x>=0;x--)#define lowbit(x) (x & (-x))#define read(x) scanf("%d",&x)#define readt(i) int i ; scanf("%d" , &i)#define print(x) printf("%d\n" , x) ;#define middle int mid = (l + r)/2#define lson rt<<1 , l , mid#define rson rt<<1|1 , mid+1, r#define CASE int T ; int ca = 0 ; read(T) ; while(T--)#define RT tree[rt]#define FP freopen("1" , "r" , stdin)#define mem0(x , y) memset(x , y , sizeof(x))#define BIN(x) ll bin ; bin = (ll)1 << x ; ///2的x次方#define E Edge[i]#define lowbit(x) (x & (-x))const int MAXN = 500000 ;const int MAXV = 200000 ;const int MAXE = 200000 ;const int mod = 1e8+7 ;using namespace std ;/****************前向星****************struct edge{ int s , e , w , next ; bool operator < (const edge & e) const{ return w < e.w ; }}Edge[MAXE] ;int head[MAXV] , hct = 0 ;void add_edge(int s,int e,int w){ Edge[hct].s = s ; Edge[hct].e =e ;Edge[hct].w = w ; Edge[hct].next = head[s] ; head[s] = hct ++ ;}/*************************************/struct node{ int a, b ; bool operator < (const node & n) const{ return a < n.a ; }}s[2000] ;int sum[2000][2000] ;int dp[2000][2000] ;int main(){ int n ; freopen("1" , "r" ,stdin) ; ///freopen("A" , "w" ,stdout) ; while(read(n)!=EOF){ rep(i , n) { readt(ta) ; readt(tb) ; s[i].a = ta ; s[i].b = tb ; } sort(s , s+n) ; mem0(dp , inf) ; for(int i=0;i<n;i++) dp[i][i] = 0 , sum[i][i] = i ; for(int l=2;l<=n;l++){ for(int i=0;i+l-1<n;i++){ int r = i+l-1; for(int k=sum[i][r-1] ; k<=min(sum[i+1][r],r-1) ; k++){ ///printf("%d %d\n" ,dp[i][k] , dp[k+1][r]) ; ///printf("%d %d %d %d %d\n" , k,s[r].a,s[i].a,s[r].b ,s[i].b) ; int tmp = dp[i][k] + dp[k+1][r] + s[k+1].a - s[i].a + s[k].b - s[r].b ; if(dp[i][r] >= tmp){ dp[i][r] = tmp ; sum[i][r] = k ; } } ///printf("dp[%d][%d] = %d\n" , i, r , dp[i][r]) ; } } printf("%d\n" ,dp[0][n-1]) ; }}
0 0
- hdu3516 --- 四边形不等式优化
- hdu3516(dp四边形优化)
- 四边形不等式优化
- POJ1160-四边形不等式优化
- 四边形不等式优化
- 四边形不等式优化DP
- 四边形不等式优化
- 四边形不等式优化
- ccfcsp201612-四边形不等式优化
- 四边形不等式优化dp
- 四边形不等式dp优化
- 四边形不等式优化dp
- 四边形不等式优化动态规划
- 四边形不等式优化石子合并
- 四边形不等式优化dp-简介
- hdu2829Lawrence DP+四边形不等式优化
- 石子合并 四边形不等式优化
- 四边形不等式优化变态规划
- 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信
- 理解内存泄漏与内存溢出(转载)
- popwindow 被魅族虚拟键挡住
- Android框架开发
- JSP定义错误页面,并在页面中点击按钮显示隐藏错误信息
- hdu3516 --- 四边形不等式优化
- oracle数据库
- Quartz任务调度--集群
- Caused by: java.lang.NoClassDefFoundError: org/apache/commons/pool/BasePoolableObjectFactory
- FTP客户端工具代码
- iOS 开发-利用dispatch_once创建单例
- 台式电脑的硬盘数据丢失怎么办
- [转载]Linux TCP/IP 协议栈源码分析
- SeleniumGrid配置