hihocoder编程练习赛75
题目1 : 工作城市分配
描述
H公司在北京和上海两个城市各有一间办公室。该公司最近新招募了2N名员工,小Hi负责把这2N名员工分配到北京和上海各N名。
于是小Hi调查了新员工对于北京和上海的意愿,我们用Bi和Si表示。Bi代表如果分配第i名员工去北京,他的满意指数;Si代表如果分配去上海,他的满意指数。
小Hi想知道如何分配才能使2N名员工的满意指数之和最高。
输入
第一行包含一个整数N。
以下2N行每行包含两个整数Bi和Si。
1 ≤ N ≤ 1000
0 ≤ Bi, Si ≤ 100000
输出
一个整数代表最高可能的满意指数之和。
- 样例输入
-
2
100 50
80 80
50 100
10 30 - 样例输出
-
310
#include <bits/stdc++.h>
using namespace std;
const int N = ;
struct Node{
int b, s;
}node[N];
bool cmp(const Node a, const Node b){
return (a.b-a.s) > (b.b-b.s);
}
int main()
{
int n;
cin>>n;
for(int i = ; i < *n; i++){
cin>>node[i].b>>node[i].s;
}
sort(node, node+*n, cmp);
int ans = ;
for(int i = ; i < *n; i++){
if(i < n)ans += node[i].b;
else ans += node[i].s;
}
cout<<ans<<endl;
return ;
}
题目2 : 工作城市分配2
描述
H公司在北京、上海和纽约三个城市各有一间办公室。该公司最近新招募了3N名员工,小Hi负责把这3N名员工分配到北京、上海和纽约各N名。
于是小Hi调查了新员工对于北京、上海和纽约的意愿,我们用Bi、Si和Ni表示。Bi代表如果分配第i名员工去北京,他的满意指数;Si代表如果分配去上海的满意指数;Ni代表如果分配去纽约的满意指数。
小Hi想知道如何分配才能使3N名员工的满意指数之和最高。
输入
第一行包含一个整数N。
以下3N行每行包含两个整数Bi、Si和Ni。
1 ≤ N ≤ 100
0 ≤ Bi, Si, Ni ≤ 100000
输出
一个整数代表最高可能的满意指数之和。
- 样例输入
-
2
100 50 100
80 80 100
50 100 100
10 30 100
80 40 30
20 70 50 - 样例输出
-
550
#include <bits/stdc++.h>
using namespace std;
const int N = ;
struct Node{
int b, s, n;
}node[N];
// dp[i][j][k] 表示前i个人,j个分配到北京,k个分配到上海,i-j-k个分配到纽约的最大满意度
int dp[][][];
int main()
{
int n;
cin>>n;
for(int i = ; i <= *n; i++){
cin>>node[i].b>>node[i].s>>node[i].n;
}
memset(dp, , sizeof(dp));
dp[][][] = node[].b;
dp[][][] = node[].s;
dp[][][] = node[].n;
for(int i = ; i <= *n; i++){
for(int j = ; j <= n; j++){
for(int k = ; k <= n; k++){
if(i-j-k>n || i-j-k<)continue;
if(j+<=n)dp[i+][j+][k] = max(dp[i+][j+][k], dp[i][j][k]+node[i+].b);
if(k+<=n)dp[i+][j][k+] = max(dp[i+][j][k+], dp[i][j][k]+node[i+].s);
if(i-j-k+<=n)dp[i+][j][k] = max(dp[i+][j][k], dp[i][j][k]+node[i+].n);
}
}
}
cout<<dp[*n][n][n]<<endl;
return ;
}
题目3 : 顺子组合
描述
你有一个包含N个整数的数组:A1, A2, ... AN。我们将3个或3个以上数值连续的整数序列称作顺子,例如[1, 2, 3]、[5, 6, 7, 8]和[10, 11, 12, 13, 14, 15, 16]都是顺子。
请你判断A数组是否能拆分成若干个顺子的组合。要求每个整数Ai恰好只属于其中一个顺子。
输入
第一行包含一个整数T代表测试数据的组数。
每组数据第一行包含一个整数N。
每组数据第二行包含N个整数A1, A2, ... AN。
1 ≤ T ≤ 10
1 ≤ N ≤ 10000
0 ≤ Ai ≤ 100000
输出
对于每组数据输出YES或者NO代表是否能拆分成顺子组合。
- 样例输入
-
2
7
4 1 3 2 5 4 6
8
4 1 3 2 5 4 6 6 - 样例输出
-
YES
NO
#include <bits/stdc++.h>
using namespace std;
int book[];
bool check(int n){
for(int i = ; i <= n; i++){
while(book[i]){
int len = ;
for(int j = i; j <= n; j++){
len++;
book[j]--;
if(book[j+] <= book[j])break;
}
if(len < )return false;
}
}
return true;
}
int main()
{
int T, n, a;
cin>>T;
while(T--){
cin>>n;
int len = -;
memset(book, , sizeof(book));
for(int i = ; i < n; i++){
cin>>a;
book[a]++;
len = max(len, a);
}
if(check(len))cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return ;
}
题目4 : 栈的加强版
描述
请你实现一个加强版的栈,支持以下操作:
push x: 向栈顶加入一个整数x
pop: 从栈顶弹出一个整数,并且输出该整数
inc k x: 将处于栈底的前k个整数加x。
输入
第一行包含一个整数N,代表操作的数量。
以下N行每行一条操作。
1 ≤ N ≤ 200000, 0 ≤ x ≤ 100000, 1 ≤ k ≤ 当前栈的大小
输出
对于每一个pop操作,输出弹出的整数数值。
- 样例输入
-
6
push 1
inc 1 2
push 2
inc 2 2
pop
pop - 样例输出
-
4
5
#include <bits/stdc++.h> using namespace std; int sk[], top, fg[]; int main()
{
int n, a, b;
cin>>n;
string op;
top = -;
memset(fg, , sizeof(fg));
while(n--){
cin>>op;
if(op=="push"){
cin>>a;
sk[++top] = a;
}else if(op=="inc"){
cin>>a>>b;
fg[a-] += b;
}else if(op=="pop"){
cout<<sk[top]+fg[top]<<endl;
fg[top-] += fg[top];
fg[top] = ;
top--;
}
} return ;
}
hihocoder编程练习赛75的更多相关文章
- hihocoder 编程练习赛23
第一题:H国的身份证号码I 题意:一个N位的正整数(首位不能是0).每位数字都小于等于K,并且任意相邻两位数字的乘积也小于等于K.按从小到大的顺序输出所有合法的N位号码,每个号码占一行. 思路:dfs ...
- hihoCoder编程练习赛72
题目1 : 玩具设计师 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho作为Z国知名玩具品牌AKIRE的首席设计师,对玩具零件的挑剔程度已经到了叹为观止的地步.所有 ...
- hihoCoder编程练习赛70
题目1 : 数位翻转 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 n,你可以进行若干次操作,每次操作可以翻转 n 的二进制表示下的某一位,即将 0 变成 ...
- hihoCoder编程练习赛69
题目1 : 偶数长度回文子串 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个小写字母字符串,请判断它是否有长度为偶数的非空连续回文子串 输入 输入包含多组数据. ...
- hihoCoder编程练习赛67
题目1 : 序列 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个正整数 n, P,求满足以下两个条件的长度为 n 的序列 ai 个数: 1. 1 ≤ ai ≤ ...
- hihoCoder编程练习赛52
题目1 : 字符串排序 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 一般我们在对字符串排序时,都会按照字典序排序.当字符串只包含小写字母时,相当于按字母表" ...
- hihoCoder编程练习赛49
题目1 : 相似颜色 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在CSS中我们可以用井号(#)加6位十六进制数表示一种颜色,例如#000000是黑色,#ff0000 ...
- hihocoder编程练习赛91:相邻字符串
题目链接 给定一个长度小于1e5的字符串s,s中字符全是大写英语字母.现在要寻找s中有多少组邻近的"hio"字符串,邻近的定义如下:hi距离+io距离+ho距离小于k.输入k和s, ...
- 【hihocoder编程练习赛9】闰秒
题目链接 #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h&g ...
随机推荐
- JavaScript原生实现观察者模式
观察者模式又叫做发布订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有观察着对象. 它是由两类对象组成,主题和观察者,主题负责发布事件 ...
- 吴恩达机器学习笔记35-诊断偏差和方差(Diagnosing Bias vs. Variance)
当你运行一个学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大.换句话说,出现的情况要么是欠拟合,要么是过拟合问题.那么这两种情况,哪个和偏差有关,哪个和 ...
- ubuntu在终端下复制粘贴的2种方法
最近因为项目需要在ubuntu环境下开发(我是用的unbantu虚拟环境),经常要在终端下手动输入很长的文件路径,觉得很麻烦,就谷歌了2种方法如下 你可能会问,什么是ubuntu? 简单来说就是一个基 ...
- Oracle SQL优化器简介
目录 一.Oracle的优化器 1.1 优化器简介 1.2 SQL执行过程 二.优化器优化方式 2.1 优化器的优化方式 2.2 基于规则的优化器 2.3 基于成本的优化器 三.优化器优化模式 3.1 ...
- 一条SQL语句在MySQL中如何执行的
本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会先带着你看看 MySQL 的基础架构, ...
- 使用C语言实现一个自动刷弹幕的程序
本文使用两种方式来进行刷弹幕操作 1 模拟键盘输入,自动输入文字,然后点击回车. 2 操作剪切板,直接将剪切板的文字粘贴到输入框,然后回车. 模拟键盘输入 如果要输入"弹幕"这两个 ...
- mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)
1 .获取innodb行锁争用情况 1.1 通过检查innodb_row_lock状态变量来分析系统上的行锁的争夺情况 SHOW STATUS LIKE 'innodb_row_lock%' 通过in ...
- [疑难杂症]__当你的Cortana搜索无法使用,显示纯白界面(ps:已解决).
前言 这个问题是在前不久解决关于我电脑点击屏幕上方快捷方式不久后出现的问题,之前并没有出现过这样的错误,但因为使用到的情况比较少,就一直没有去解决,但在一点时间后,发现没有Cortana搜索栏还是十分 ...
- SVN用户切换
Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能.但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号.密码保存之后 ...
- 手写spring(简易版)
本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作,如有错误之处忘不吝批评指正! 理解Spring本质: 相信之前在使用spring的时候大家都配置web.x ...