记录编号 | 16178 | 评测结果 | AAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 王伯买鱼 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.025 s | ||
提交时间 | 2010-04-21 17:18:06 | 内存使用 | 0.26 MiB | ||
#include <iostream> using namespace std; int mo[31]; int ans,ansm,ansn,t,tn,th,m,n; int s[31]; void print() { printf("%d %d\n",ansn,ansm); int i=0; while (ans!=0) { i++; if (ans&1==1) printf("%d\n",i); ans=ans>>1; } } void abc(int k) { int i,re=t; if (tn>ansn) { ans=t; ansm=th; ansn=tn; } if (tn==ansn&&th>ansm) { ans=t; ansm=th; } for (i=k;i<=n;i++) { if (n-i+1+tn<ansn) return; if ((s[i]&t)==0&&th+mo[i]<=m) { t=t|(1<<(i-1)); tn++; th+=mo[i]; abc(i+1); t=re; tn--; th-=mo[i]; } } } void start() { freopen("fish.in","r",stdin); freopen("fish.out","w",stdout); scanf("%d%d",&m,&n); int p,q,i; for (i=1;i<=n;i++) { scanf("%d%d",&p,&q); mo[p]=q; } for (;;) { scanf("%d%d",&p,&q); if (p==0&&q==0) break; s[p]=s[p]|(1<<(q-1)); s[q]=s[q]|(1<<(p-1)); } } int main() { start(); abc(1); print(); return 0; }