P2392 AC题解
查看原帖
P2392 AC题解
859107
whd20210923楼主2024/3/30 20:36

方法在题中

#include<bits/stdc++.h>
using namespace std;
long long a[105],b[105],s,h,t;
void f(long long x,long long j,long long n){//x是一只脑子的时间 j是题目号码 n是题目总数 
  if(j>n){//当题都分配完时 
    t=max(x,a[n+1]-x);//t是两只脑子求最大耗时 
    h=min(t,h);//求各个t的最小量 
    return;
  }
  f(x+a[j],j+1,n);//选择用这只脑子做 
  f(x,j+1,n);//不选择用这只脑子做
}
int main()
{
  long long i,j;
  cin>>b[1]>>b[2]>>b[3]>>b[4];//分别为四科题量 
  for(j=1;j<=4;j++){
  	for(i=1;i<=b[j];i++) cin>>a[i],a[ b[j]+1 ]+=a[i];//存储,a[ b[i]+1 ]为总和; 
	h=1e9;//方便第7行 求最小时间 
	f(0,1,b[j]);
	s+=h;//单科总时间 
	for(i=1;i<=b[j]+1;i++) a[i]=0;//清空a[] 
  } 
  cout<<s;
  return 0;
}
2024/3/30 20:36
加载中...