第 i个人的得分分别记为 a[i] 和 b[i]
m个人必须满足:辩方总分S(a) 和控方总分 S(b) 的差的绝对值最小
如果选择方法不唯一,那么再从中选择辨控双方总分之和最大的方案。
求最终的陪审团获得的辩方总分 D 控方总分 P, 以及陪审团人选的编号
吧这个绝对值的差的和作为状态
f[ i ] [j ] [ c] =min(f[i-1][j][c], f[i-1][j-1][ c-a[i]+b[i] ] +a[i]+b[i]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include <iostream> #include <cstring> #include <algorithm> #include <vector> using namespace std; #define D 400 int n,m,a[202],b[202]; int f[202][25][802],pre[202][25][900]; int S1,S2; vector< int > vec; void print( int i, int j, int k){ if (j==0) return ; int p=pre[i][j][k]; print(p-1,j-1,k-a[p]+b[p]); vec.push_back(p); S1+=a[p],S2+=b[p]; } void solve( int cas){ memset(f,-0x3f, sizeof f);f[0][0][0+D]=0; int i,j; for (i=1;i<=n;i++) cin>>b[i]>>a[i]; for (i=1;i<=n;i++) for (j=m;j>=0;j--){ for ( int k=-400;k<=400;k++){ f[i][j][D+k]=f[i-1][j][D+k]; pre[i][j][k+D]=pre[i-1][j][D+k]; if (k-a[i]+b[i]>=-400&&k-a[i]+b[i]<=400&&j>0){ if (f[i][j][k+D]<f[i-1][j-1][D+k-a[i]+b[i]]+a[i]+b[i]) f[i][j][D+k]=f[i-1][j-1][D+k-a[i]+b[i]]+a[i]+b[i], pre[i][j][k+D]=i; } } } j=0; for (i=0;i<=400;i++) if (f[n][m][i+400]>=0&&f[n][m][i+400]>f[n][m][400-i]){ j=i+400; break ; } else if (f[n][m][400-i]>=0){ j=400-i; break ;} vec.clear(); S1=S2=0; print(n,m,j); printf( "Jury #%d\n" ,cas); printf( "Best jury has value %d for prosecution and value %d for defence:" , S2,S1); cout<<endl; for (i=0;i<vec.size();i++) cout<<vec[i]<< ' ' ; cout<< "\n\n" ; } main(){ int cas=0; while (cin>>n>>m,n&&m) solve(++cas); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!