博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs——2651 孔子教学——同桌
阅读量:5897 次
发布时间:2019-06-19

本文共 1674 字,大约阅读时间需要 5 分钟。

2651 孔子教学——同桌

 

 时间限制: 1 s
 空间限制: 8000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述 
Description

孔子是我国古代著名的教育家。他有先见之明,可以判断学生出师以后给他带来的声望。声望共有三种“G”“M”“B”,“G”可以给他带来3点声望,“M”可以给他带来2点声望,“B”可以让他丢失2点声望。每个学生出师后的声望为ai。当然,学生出师的时间不同,第i个的学生需要bi个单位时间。他每次只能教1名学生。他共有x个学生,有y个单位时间,但必须教z名学生。求孔子可获得的最大声望。

输入描述 
Input Description

输入格式:

x z y

a1 b1

……

……

……

ax bx

 

输出描述 
Output Description

输出格式:

ans(为最大声望)

无解输出- 1

 

样例输入 
Sample Input

例一:

2 2 2

G 0

G 2

例二:

4 2 2

B 1

B 1

G 4

M 3

样例输出 
Sample Output

例一:

6

例二:

-4

数据范围及提示 
Data Size & Hint

x<=10,z<=a,y<=200,声望可能为负数,保证时间大于0,但不一定有解。

 

 

 

据说这个题可以爆搜、、、

注意输入!!!

#include
#include
#include
#include
#include
using namespace std;char ch;bool vis[210];int x,y,z,ans;int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='-')f=-1; ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();} return x*f;}struct A{ int s,t;}a[210];void dfs(int now,int s,int renown,int t){ if(s>=z) ans=max(renown,ans); if(s==x||now==x) return ; for(int i=now+1;i<=x;i++) { if(t>=a[i].t&&!vis[i]) { vis[i]=true; dfs(i,s+1,renown+a[i].s,t-a[i].t); vis[i]=false; } }}int main(){ x=read(),z=read(),y=read(); ans=-999999; for(int i=1;i<=x;i++) { cin>>ch; a[i].t=read(); if(ch=='G') a[i].s=3; if(ch=='M') a[i].s=2; if(ch=='B') a[i].s=-2; } dfs(0,0,0,y); if(ans==-999999) ans=-1; printf("%d",ans); return 0;}

 

转载于:https://www.cnblogs.com/z360/p/7506014.html

你可能感兴趣的文章
struts中的xwork源码下载地址
查看>>
我的友情链接
查看>>
PHP 程序员的技术成长规划
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
js replace,正则截取字符串内容
查看>>
javascript继承方式详解
查看>>
lnmp环境搭建
查看>>
自定义session扫描器精确控制session销毁时间--学习笔记
查看>>
仿射变换
查看>>
视频直播点播nginx-rtmp开发手册中文版
查看>>
PHP队列的实现
查看>>
单点登录加验证码例子
查看>>
[T-SQL]从变量与数据类型说起
查看>>
occActiveX - ActiveX with OpenCASCADE
查看>>
BeanUtils\DBUtils
查看>>
python模块--os模块
查看>>
linux下单节点oracle数据库间ogg搭建
查看>>
Java 数组在内存中的结构
查看>>
《关爱码农成长计划》第一期报告
查看>>
学习进度表 04
查看>>