题意大概就是选一些物品,这个物品魔力值的两两之和为合数,物品等级要小于你的等级,求你最小的等级,可以选出这样的一些物品使这些物品能力值之和>=k。
首先可以二分答案,然后就变成最小割的经典模型
魔力值为奇数的向源点连边,偶数向汇点连边,魔力值之和为合数的两个物品之间连边
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <queue>
#define N 110
#define inf 1<<30
using namespace std;
int n,k,cnt,g,S,T;
int p[N],c[N],l[N],a[N],G[N],dis[N],cur[N];
int ip[200010];
struct edge{
int t,nx,f;
}E[N*N*4];
queue<int> Q;
inline void add(int x,int y,int w){
E[++cnt].t=y