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. ...
随机推荐
- hdu4778 状态压缩
#include <iostream> #include <algorithm> #include <cstdio> #include <vector> ...
- C# WPF Halcon HDevEngine混合编程
1. WPF+Halcon 引用halcondotnet.dll和hdevenginedotnet.dll XAML中导入命名空间xmlns:halcon=”clr-namespace:HalconD ...
- 重装win10系统
一. 1.搜索是最好的老师,这个是非常重要的 2.数据的二备份,和三备份 二. 待完善
- C# foreach 中获取索引index的方法[转]
在C# 开发中往往使用foreach 循环语句 来代替for循环语句.foreach 比 for 更加简洁高效. foreach : foreach ...
- Bodymovin:Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画
转自:https://www.cnblogs.com/zamhown/p/6688369.html 大杀器Bodymovin和Lottie:把AE动画转换成HTML5/Android/iOS原生动画 ...
- C# 设置按钮快捷键
参考自:http://www.csharpwin.com/csharpspace/3932r8132.shtml 一.C# button快捷键之第一种:Alt + *(按钮快捷键) 在Button按钮 ...
- android使用inject需要注意的地方
android使用inject需要注意的地方1.viewmodel里面添加注解@Inject FavoritesDBManager mFavoritesDBManager; 2.Component里面 ...
- JVM参数设置及条调优原理
http://unixboy.iteye.com/blog/174173/ 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟 ...
- oracel中合并报表的sql
select decode(dt.LATN_ID ,290,'西安','910','咸阳',911,'延安',912,'榆林',913,'渭南',914,'商洛',915,'安康', 916,'汉中' ...
- Hybrid App中原生页面 VS H5页面(分享)
本文部分转自 http://www.jianshu.com/p/00ff5664e000 现有3类主流APP,分别为:Web App.Hybrid App(混合模式移动应用,Hybrid有“混合的” ...