题解 P1910 【L国的战斗之间谍】
Jason_Yvan · · 题解
这道题是有多㝽(shui)
用深搜10分钟就打完了。。。
看代码不需要解释
C++: /*****
> Author: wzw-cnyali
> Created Time: 2017/2/26 9:48:48
****/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
#define REP(i, a, b) for(register int i = (a), i##_end_ = (b); i <= i##_end_; ++ i)
#define DREP(i, a, b) for(register int i = (a), i##_end_ = (b); i >= i##_end_; -- i)
#define debug(...) fprintf(stderr, __VA_ARGS__)
#define mem(a, b) memset((a), b, sizeof(a))
template<typename T> inline bool chkmin(T &a, const T &b) { return a > b ? a = b, 1 : 0; }
template<typename T> inline bool chkmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; }
typedef long long LL;
const int Size = 100000;
const int inf = 0x3f3f3f3f;
int read()
{
int sum = 0, fg = 1; char c = getchar();
while(c < '0' || c > '9') { if (c == '-') fg = -1; c = getchar(); }
while(c >= '0' && c <= '9') { sum = sum * 10 + c - '0'; c = getchar(); }
return sum * fg;
}
int a[Size], b[Size], c[Size];
int A, B, C;
int N, M, X;
int ans;
void dfs(int x)
{
if(B > M || C > X) return;
ans = max(ans, A);
if(x > N) return;
A += a[x];
B += b[x];
C += c[x];
dfs(x + 1);
A -= a[x];
B -= b[x];
C -= c[x];
dfs(x + 1);
}
int main()
{
N = read(), M = read(), X = read();
REP(i, 1, N)
{
a[i] = read(), b[i] = read(), c[i] = read();
}
dfs(1);
printf("%d\n", ans);
return 0;
}