csp预习day1

张开发
2026/4/19 5:42:22 15 分钟阅读

分享文章

csp预习day1
balance#includebits/stdc.h using namespace std; int main(){ int n; scanf(%d,n); int a[n]; for(int i0;in;i){ scanf(%d,a[i]); } int res0; //平衡数个数 for(int i0;in;i){ int num0,sum0; //总位数和1的个数 while(a[i]){ sum; int tempa[i]%2; if(temp1) num; a[i]a[i]1; } if(num*2sum) res; } printf(%d,res); return 0; }crashing#includebits/stdc.h using namespace std; //结构体整合多个属性 typedef struct crashing{ int type; double time; int coffee; int consume; }Task; int main(){ int n,m; //任务数量、咖啡数量 scanf(%d%d,n,m); double res0.0; //原本总时长 double dp[201]; //存放最优消耗时长 memset(dp,0,sizeof(dp)); //初始化数组均为0边界 Task task[201]; for(int i0;in;i){ scanf(%d%lf%d%d,task[i].type,task[i].time,task[i].coffee,task[i].consume); restask[i].time; //边存边加 //变量有点多这里都为task[i]别弄混 if(task[i].type1){ for(int jm;jtask[i].coffee;j--){ dp[j]max(dp[j],dp[j-task[i].coffee]task[i].consume); } } else if(task[i].type0){ //最前面别忘乘上1.0不然精度丢失 double temp1.0*task[i].consume/task[i].coffee; for(int km;k0;k--){ for(int j1;jtask[i].coffeejk;j){ dp[k]max(dp[k],dp[k-j]j*temp); } } } } printf(%.6f,res-dp[m]); return 0; }

更多文章