题目不难,暴力地dp一下就好,但是不知道我WA在哪里了,对拍了好多的数据都没找出错误= =。估计又是哪里小细节写错了QAQ。。思路是用dp[i][j]表示已经选了i个,差值为j的最大和。转移的话暴力枚举当前选那个即可。代码如下(WA的,以后有机会再找找错在哪里吧0.0):

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <set>
using namespace std;
const int N = + ; int n,m;
int a[N],b[N];
struct node
{
int now,pre,val;
int a,b;
}dp[+][+]; set<int> get(int x)
{
set<int> S;
for(int i=m;i>=;i--)
{
S.insert(dp[i][x].now);
x = dp[i][x].pre;
}
return S;
} int main()
{
int kase = ;
while(scanf("%d%d",&n,&m) == )
{
if(n == & m == ) break;
for(int i=;i<=n;i++) scanf("%d%d",a+i,b+i);
for(int i=;i<=;i++) dp[][i] = (node){-,-,,,};
dp[][] = (node){,-,,,};
for(int i=;i<=m;i++)
{
for(int j=;j<=;j++)
{
dp[i][j] = (node){-,-,,,};
for(int k=;k<=n;k++)
{
int add = a[k] - b[k];
if(j-add < || j - add > ) continue;
int pre = j - add;
if(dp[i-][pre].now == -) continue;
int flag = ;
for(int p=i-;p>=;p--)
{
if(dp[p][pre].now == k)
{
flag = ;
break;
}
else pre = dp[p][pre].pre;
}
if(flag == ) continue;
if(dp[i-][j - add].val + a[k]+b[k] > dp[i][j].val)
{
dp[i][j] = (node){k,j-add,dp[i-][j - add].val + a[k]+b[k],
dp[i-][j - add].a + a[k], dp[i-][j - add].b + b[k]};
}
}
}
}
set<int> S;
int aa, bb;
for(int add=;add<=;add++)
{
if(dp[m][-add].now == - && dp[m][+add].now == -) continue;
int temp = ;
if(dp[m][-add].now != -)
{
temp = dp[m][-add].val;
S = get(-add);
aa = dp[m][-add].a, bb = dp[m][-add].b;
}
if(dp[m][+add].now != -)
{
if(dp[m][+add].val > temp)
{
S = get(+add);
aa = dp[m][+add].a, bb = dp[m][+add].b;
}
}
break;
}
printf("Jury #%d\n",kase++);
printf("Best jury has value %d for prosecution and value %d for defence:\n",aa,bb);
for(set<int>::iterator it=S.begin();it!=S.end();it++) printf(" %d",*it);
puts("\n");
}
return ;
}

最新文章

  1. centos6.X使用Apache+Mono搭建asp.net 环境
  2. Android之 -WebView实现离线缓存阅读
  3. $(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法
  4. 配置yii访问远程数据库
  5. Java 并发之共享对象
  6. Android应用开发学习之列表视图
  7. storm supervisor启动报错java.lang.RuntimeException: java.io.EOFException
  8. ORA-00119: invalid specification for system parameter LOCAL_LISTENER
  9. Binary Tree Paths 解答
  10. php工厂设计模式
  11. 简单的javascript抽奖程序
  12. HTML 基本语法速查
  13. jitwatch查看JIT后的汇编码
  14. POJ 3250 Bad Hair Day【单调栈入门】
  15. AngularJS学习之 ngTable 翻页 功能以及利用angular service准备测试数据
  16. z-index的堆叠规则
  17. SQL - 根据天来分组比较
  18. Linux批量更改文件后缀-转载
  19. Django Admin定制
  20. 自学git心得-3

热门文章

  1. 如何把Windows主机中的文件拉到centOS虚拟机中
  2. js的页面交互
  3. MyBatis核心配置文件详析mybatis-cfg.xml
  4. post请求body格式
  5. Linux命令——mkdir、rmdir
  6. PAT Advanced 1008 Elevator (20 分)
  7. ubuntu---记录.简单一句话安装tf
  8. Ubuntu系统---又显示nvidia-smi 未找到命令
  9. mysql运维相关
  10. watch 监控的新旧值一致问题处理