cumtoj 一起来选课
一起来选课
题目地址: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 一起来选课的更多相关文章
- 从零开始学Python06作业思路:学生选课系统
一,作业要求 选课系统: 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 学生:用户名.密码.性别.年龄.选课列表[].上课记录{课程1:[di,a,]} ...
- python之选课系统详解[功能未完善]
作业需求 思路:1.先写出大体的类,比如学校类,学生类,课程类-- 2.写出类里面大概的方法,比如学校类里面有创建讲师.创建班级-- 3.根据下面写出大致的代码,并实现其功能 遇到的困 ...
- 第一章-第六题(帮人抢票,帮人选课这些软件是否合法 你怎么看?)--By梁旭晖
我觉得这些软件是合法的,符合道德规范的. 计算机当初设计的初衷就是简化甚至替代人类的工作.而软件作为计算机硬件的驱动着,其设计就是体现这些原则. 现在互联网上的订票,选课类型的网站还是有很多的,比如: ...
- Python开发程序:选课系统-改良版
程序名称: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
- SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句
附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...
- BFS、DFS与选课问题(拓扑排序)
1选课问题 Leetcode上有这样一道题:有代号0,1,2……n-1的n门课程.其中选择某些课程需要另一些课程作为前提条件.用一组pair来表示这些条件:[1,0],[1,2],表示如果要选修课程1 ...
- Codevs1378选课[树形DP|两种做法(多叉转二叉|树形DP+分组背包)---(▼皿▼#)----^___^]
题目描述 Description 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修 ...
- python实现学生选课系统 面向对象的应用:
一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...
- Python开发程序:选课系统
本节作业: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
随机推荐
- 内网渗透之如何玩转Meterpreter?(nc.exe)
十.Meterpreter常用命令 1.基本命令(包含meterpreter和msf终端.ruby接口.目标shell交互的命令) background(进程隐藏至后台) sessions(查看已经成 ...
- Spark学习之路 (十九)SparkSQL的自定义函数UDF
在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF( ...
- Java综合高级篇
1.你用过哪些集合类? 大公司最喜欢问的Java集合类面试题 40个Java集合面试问题和答案 java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法. ja ...
- 【JavaScript 6连载】五、继承的概念
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Shell变量相关
li@ubuntu:~/test$ vi test.sh li@ubuntu:~/test$ cat test.sh #!/bin/bash #shell变量不加引号;加单引号;加双引号都行 url= ...
- GUI界面相应事件
function varargout = GUI19(varargin) % GUI19 MATLAB code for GUI19.fig % GUI19, by itself, creates a ...
- [转载]css3的一个控制背景的属性,background-size可以缩放大小啦
background-size需要两个值,它的类型可以是像素(px).百分比(%)或是auto,还可以是cover和contain.第一个值为背景图的width,另外一个值用于指定背景图上的heigh ...
- ubuntu16.04 无法连接wifi和校园宽带问题的解决办法
我遇到的问题是在ubuntu16.04系统下无法进行上海大学校园宽带连接或者校园wifi连接,我一个一个来解决这两个问题. 1.无法连接校园宽带的问题:输入校园账号和密码后,宽带始终连接不上.(上海大 ...
- 前端框架VUE----cli脚手架(框架)
一.创建vue项目 npm install vue-cli -g #-g全局 (sudo)npm install vue-cli -g #mac笔记本 vue-init webpack myvue # ...
- 怎样从外网访问内网Jupyter Notebook?
本地安装了一个Jupyter Notebook,只能在局域网内访问,怎样从外网也能访问到本地的Jupyter Notebook呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Jupyter Not ...