一起来选课

题目地址:http://192.168.173.163/JudgeOnline/problem.php?cid=1019&pid=7

题目

明泽私立大学有n门课程提供给大一的同学来选课,每门课有两个数值来描述,开心程度Hi,复杂程度Ci。LW小太阳是个有奇怪癖好的人,假设他这学期要选m门课,把这m门课的Hi之和定义为sumH,Ci之和定义为sumC,并自己定义出本学期的课程舒适度为(sumH)2 - sumH * sumC - (sumC)2。

由于明泽私立大学是一所开放前卫的大学,它可以允许LW小太阳选择若干门课,使得他的课程舒适度最高(一门课都不选的时候,舒适度为0)

输入

2
3
10 1
5 1
2 10
2
1 10
2 10

输出

191
0

题解

01背包

因为n是500 c[i]是100,所以总共的sumC = 5e4 因此可以枚举每个sumC的出现情况,求得最大的sumH,然后更新答案。

#include <bits/stdc++.h>
using namespace std; typedef long long ll;
#define Max(a,b) (a>b?a:b) const int N = 505;
int n, h[N], c[N]; // 记录最优答案
ll dp[N*100];
// 记录最优答案下的sumH
ll sumh[N*100]; int main()
{
// freopen("in.txt","r",stdin);
int T; scanf("%d", &T);
while(T--) {
scanf("%d", &n);
int mC =0;
for(int i = 1;i <= n; i++) {
scanf("%d %d", &h[i], &c[i]);
mC += c[i];
}
for(int i=0;i<=mC;i++)
dp[i] = sumh[i] = 0; for(int i=1; i<=n; i++) {
for(int j=mC; j>=c[i]; j--) {
ll pre = j - c[i];
sumh[j] = max(sumh[j], sumh[pre] + h[i]);
}
}
/*
for(int i=1;i<=mC;i++) {
printf("%lld%c",sumh[i], i==mC? '\n':' ');
} for(int i=1;i<=mC;i++) {
printf("%lld%c",dp[i], i==mC? '\n':' ');
}
*/
ll ans = 0;
for(int i=0;i<=mC;i++) {
// if(!dp[i]) continue;
ll mx = 1ll * sumh[i]*sumh[i] - 1ll*sumh[i]*i- i *i;
ans = Max(ans, mx);
}
printf("%lld\n", ans);
}
return 0;
}

cumtoj 一起来选课的更多相关文章

  1. 从零开始学Python06作业思路:学生选课系统

    一,作业要求 选课系统: 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 学生:用户名.密码.性别.年龄.选课列表[].上课记录{课程1:[di,a,]} ...

  2. python之选课系统详解[功能未完善]

    作业需求 思路:1.先写出大体的类,比如学校类,学生类,课程类--   2.写出类里面大概的方法,比如学校类里面有创建讲师.创建班级-- 3.根据下面写出大致的代码,并实现其功能       遇到的困 ...

  3. 第一章-第六题(帮人抢票,帮人选课这些软件是否合法 你怎么看?)--By梁旭晖

    我觉得这些软件是合法的,符合道德规范的. 计算机当初设计的初衷就是简化甚至替代人类的工作.而软件作为计算机硬件的驱动着,其设计就是体现这些原则. 现在互联网上的订票,选课类型的网站还是有很多的,比如: ...

  4. Python开发程序:选课系统-改良版

    程序名称: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...

  5. SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句

    附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...

  6. BFS、DFS与选课问题(拓扑排序)

    1选课问题 Leetcode上有这样一道题:有代号0,1,2……n-1的n门课程.其中选择某些课程需要另一些课程作为前提条件.用一组pair来表示这些条件:[1,0],[1,2],表示如果要选修课程1 ...

  7. Codevs1378选课[树形DP|两种做法(多叉转二叉|树形DP+分组背包)---(▼皿▼#)----^___^]

    题目描述 Description 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修 ...

  8. python实现学生选课系统 面向对象的应用:

    一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...

  9. Python开发程序:选课系统

    本节作业: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...

随机推荐

  1. 内网渗透之如何玩转Meterpreter?(nc.exe)

    十.Meterpreter常用命令 1.基本命令(包含meterpreter和msf终端.ruby接口.目标shell交互的命令) background(进程隐藏至后台) sessions(查看已经成 ...

  2. Spark学习之路 (十九)SparkSQL的自定义函数UDF

    在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF( ...

  3. Java综合高级篇

    1.你用过哪些集合类? 大公司最喜欢问的Java集合类面试题 40个Java集合面试问题和答案 java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法. ja ...

  4. 【JavaScript 6连载】五、继承的概念

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. Shell变量相关

    li@ubuntu:~/test$ vi test.sh li@ubuntu:~/test$ cat test.sh #!/bin/bash #shell变量不加引号;加单引号;加双引号都行 url= ...

  6. GUI界面相应事件

    function varargout = GUI19(varargin) % GUI19 MATLAB code for GUI19.fig % GUI19, by itself, creates a ...

  7. [转载]css3的一个控制背景的属性,background-size可以缩放大小啦

    background-size需要两个值,它的类型可以是像素(px).百分比(%)或是auto,还可以是cover和contain.第一个值为背景图的width,另外一个值用于指定背景图上的heigh ...

  8. ubuntu16.04 无法连接wifi和校园宽带问题的解决办法

    我遇到的问题是在ubuntu16.04系统下无法进行上海大学校园宽带连接或者校园wifi连接,我一个一个来解决这两个问题. 1.无法连接校园宽带的问题:输入校园账号和密码后,宽带始终连接不上.(上海大 ...

  9. 前端框架VUE----cli脚手架(框架)

    一.创建vue项目 npm install vue-cli -g #-g全局 (sudo)npm install vue-cli -g #mac笔记本 vue-init webpack myvue # ...

  10. 怎样从外网访问内网Jupyter Notebook?

    本地安装了一个Jupyter Notebook,只能在局域网内访问,怎样从外网也能访问到本地的Jupyter Notebook呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Jupyter Not ...