hrbust oj 2287 Bridge(最大上升子序列变形)
来源:互联网 发布:js字符串拼接 编辑:程序博客网 时间:2024/06/08 18:36
水题
题意:给你每座桥的坐标和权值,问每座桥不能相交,但端点可以重复,问最多有多少座桥和在这种情况下最小花费。
思路:对x,y排个序,就是求最大不递减子序列(端点可以取),稍微变形一下,在数量相同的桥里选择,费用最小的。
详细看代码。
#include <fstream>#include <iostream>#include <string>#include <complex>#include <math.h>#include <set>#include <vector>#include <map>#include <queue>#include <stdio.h>#include <stack>#include <algorithm>#include <list>#include <ctime>#include <memory.h>#include <ctime>#include <assert.h>#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define pb push_back#define mp make_pair#define all(x) (x).begin(),(x).end()#define fi first#define se second#define eps 1e-8#define M_PI 3.141592653589793typedef long long ll;const ll mod=1000000007;const int inf=99999999;ll powmod(ll a,ll b) {ll res=1;a%=mod;for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}using namespace std;ll dp[110000],dpcost[110000];struct Node{ ll x,y,v;}node[110000];bool cmp(Node a,Node b){ return a.x==b.x ? a.y<b.y : a.x<b.x;}int main(){ int T,cnt=0;cin>>T; while(T--){ int n;cin>>n; for(int i=0;i<n;i++) cin>>node[i].x>>node[i].y>>node[i].v; sort(node,node+n,cmp); for(int i=0;i<n;i++){ dpcost[i]=node[i].v; dp[i]=1; } for(int i=1;i<n;i++){ for(int j=0;j<i;j++){ if(node[i].y>=node[j].y){ if(dp[i]==dp[j]+1) dpcost[i]=min(dpcost[i],dpcost[j]+node[i].v); else if(dp[i]<dp[j]+1){//开始这里 直接else w了好几次 写搓了,因为除了这两种,还有可能dp[i]> dp[j] dp[i]=dp[j]+1; dpcost[i]=dpcost[j]+node[i].v; } } } } ll t=*max_element(dp,dp+n); ll res=inf; for(int i=0;i<n;i++){ if(dp[i]==t) res=min(res,dpcost[i]); } printf("Case #%d: %lld %lld\n",++cnt,t,res); }}
0 0
- hrbust oj 2287 Bridge(最大上升子序列变形)
- hrbust 2287 Bridge【最长上升子序列变形+dp最小花费】好题
- 最大上升子序列
- 最大上升子序列
- 最大上升子序列
- 最大上升子序列
- 九度 oj 题目1480:最大上升子序列和
- 九度OJ-1480:最大上升子序列和
- 东大OJ-最大子序列问题的变形
- 1087 最大上升子序列
- 最大上升子序列和
- 最大上升子序列和
- 最大上升子序列和
- hdu1950 最大上升子序列
- 最大上升子序列(LIS)
- 最大上升子序列和
- 最大上升子序列和
- 全部最大上升子序列
- OC-043.数组与文件、URL
- 第十三周-Dijkstra算法
- 用python在hadoop上运行wordcount
- 第十六周--验证算法(插入排序)
- target="_blank" 表示在新窗口中打开页面
- hrbust oj 2287 Bridge(最大上升子序列变形)
- 12.13总结
- 第十六周项目1(1)-直接插入排序
- 简单解释SSH框架中Action、Service、Dao、struts、Spring之间的关系
- Leetcode日记(7)---Reverse Integer
- C# 读取Access出现“System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常。
- 用hibernate连接mysql插入数据出错ConstraintViolationException
- 插入排序之直接插入排序
- 安卓手机APK屏幕适配总结