摘要:
题意:有n批人,m艘船,每艘船的容量为K, 让第i 批人上船可获利bi,但是会占据ai+1个船位,而且,整批人都在必须在同一艘船上,而且,优先级别高的那批人必须在优先级别低的人前面(包括船的所在编号,hint里面有提示)分析:参照大牛的思路,太牛逼了,dp[i]表示获得价值i需要最少的代价(占据的船位,同时保证同一批人在同一艘船上)就是一个类似01背包的过程了(同时也保证了优先级别),不过每一批人花费的代价要重新计算(根据前一个状态下剩余的船位)View Code #include<iostream>#include<algorithm>#include<stri 阅读全文
摘要:
分析:当N为奇数时奇偶同性可互达,N为偶数时,逆序数之和sum加上空格所在行距目标空格行的距离dis之和要和终点状态逆序数同奇偶View Code #include<iostream>#include<algorithm>#include<string>using namespace std;const int N = 300+10;int s[N*N],g[N*N];#define _cp(a,b) ((a)<=(b))int _tmp[N*N];int inv(int n,int* a){ int l=n>>1,r=n-l,i,j; i 阅读全文
摘要:
二分距离,求最大团,看是否>=KView Code #include<iostream>#include<algorithm>#include<string>#include<math.h>using namespace std;const int N = 50+10;int dis[N][N],dd[N*N];int dp[N];bool inset[N],g[N][N];int n,best,ord[N],deg[N];bool found;inline void Memcpy(bool *d,bool *s){ for(int i=0 阅读全文