RCC 2014 Warmup (Div. 1)
2014-04-23 15:42
531 查看
A
暴力
View Code
暴力
#include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> #include<vector> #include<cmath> #include<queue> #include<set> using namespace std; #define N 1010 #define LL long long //#define INF 1e18+1e12 const double eps = 1e-8; const double pi = acos(-1.0); const double inf = ~0u>>2; const LL INF = (1ll<<62); LL dp[1<<20]; struct node { int x,k,m; int a[105]; int s; }p[105]; bool cmp(node a,node b) { return a.k<b.k; } int main() { int i,j,n,m; LL b; cin>>n>>m>>b; for(i = 0 ; i < (1<<m) ; i++) dp[i] = INF; for(i = 1; i <= n ;i++) { p[i].s = 0 ; scanf("%d%d%d",&p[i].x,&p[i].k,&p[i].m); for(j = 0; j < p[i].m ; j++) { scanf("%d",&p[i].a[j]); p[i].s|=(1<<(p[i].a[j]-1)); } } sort(p+1,p+n+1,cmp); dp[0] = 0; LL ans= INF; for(i = 1; i <= n ;i++) { for(j = 0 ;j < (1<<m) ; j++) { if(dp[j]==INF) continue; dp[j|p[i].s] = min(dp[j|p[i].s],dp[j]+p[i].x); } ans = min(ans,dp[(1<<m)-1]+p[i].k*b); } if(ans==INF) puts("-1"); else cout<<ans<<endl; return 0; }
View Code
相关文章推荐
- RCC 2014 Warmup (Div. 2) D. Cunning Gena
- RCC 2014 Warmup (Div. 2) A~C
- RCC 2014 Warmup (Div. 2) 解题报告
- RCC 2014 Warmup (Div. 2)__Cunning Gena
- RCC 2014 Warmup (Div. 2)
- RCC 2014 Warmup (Div. 2)
- 【索引】Codeforces RCC 2014 Warmup (Div. 2)
- RCC 2014 Warmup (Div. 2) D. Cunning Gena(状压DP)
- RCC 2014 Warmup (Div. 2) A~C
- CodeForces 417C(RCC 2014 Warmup (Div. 2) C)(构造)
- RCC 2014 Warmup (Div. 2)
- RCC 2014 Warmup (Div. 2) 蛋疼解题总结
- CF RCC 2014 Warmup (Div. 2) D. Cunning Gena
- RCC 2014 Warmup (Div. 2) ABC
- CF RCC 2014 Warmup (Div. 2) D. Cunning Gena
- RCC 2014 Warmup (Div. 2)
- 【jzoj3824】【codeforces RCC 2014 Warmup (Div. 1) D】【Big Problems for Organizers】【树】
- RCC 2014 Warmup (Div. 2)__Elimination
- Codeforces Rcc 2014 warmup (div.2)
- cf RCC 2014 Warmup (D题 关于搜索和dp的选择的理解)