B. School Marks(典型贪心)】的更多相关文章

链接 [https://codeforces.com/contest/540/problem/B] 题意 某个人有n门成绩,k门已知,剩下的他可以个瞎改,但有个要求,最后分数和不超过x,且每门成绩不超过p,中位数不小于y 分析 直接统计小于y的门数,总和最小就是y为中位数, 只需判断小于y的门数,若大于n/2,中位数就小于y了不可行, 还有就是总和超过x也不行,否则就可以构造,前n/2补1,后n/2补y 但须注意一个数据 9 7 2 14 1 2 2 2 1 1 2 2 代码 #include<…
Input示例 3 1 5 2 3 3 6 Output示例 2 题意:给出n条一维线段,求不重合的最多线段数. 解析:这个是典型的贪心算法的区间问题. 贪心策略:每次取尽可能短的区间,而且保证相互之间不重合.那么我们将区间的右边界进行升序排序(左边界要从右往左考虑),然后开循环扫描,维护一个右边界,进行判断.以下是我的代码   #include "bits/stdc++.h" using namespace std; #define rep(i, s, n) for(int i=s;…
B. School Marks Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/540/problem/B Description Little Vova studies programming in an elite school. Vova and his classmates are supposed to write n progress tests, for each test the…
题意:先给定5个数,n,  k, p, x, y.分别表示 一共有 n 个成绩,并且已经给定了 k 个,每门成绩 大于0 小于等于p,成绩总和小于等于x, 但中位数大于等于y.让你找出另外的n-k个成绩. 析:利用贪心算法,首先是只能小于等于 p,也就是成绩越小越好, 然后中位数还得大于等于y,所以我们放的成绩只有两个,一个是1,另一个是y,那么是最优的, 所以每次只要判定这个就好,在判定的时候,要先排序,再找中位数,再就是每次放两个,如果n-k不是偶数,那么就放一个数,再进行. 代码如下: #…
题目链接 给一堆电视节目的起止时间,问最多能完整收看几个节目 --------------------------------------------------------------------------- 用dp写的交的: 先按终止时间排序,然后dp[i]代表以i结尾最多能看几个节目,方程为:dp[i] = max{1,(dp[j]+1) [0<=j<i,i,j无冲突] } int main(){ int n,a,b; while(scanf("%d",&n…
题意:一共n个数,给出其中k个数,要求这n个数的中位数为y,这n个数的和不超过x,补全剩下的n-k个数 先统计给出的k个数里面比中位数小的数, 如果cnt<=n/2,说明中位数还没有出现,把这n/2-cnt个数都补上1,剩下的都补上y 如果cnt>n/2,说明中位数不存在 #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack…
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5190 解决:1747 题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆.每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和.当然经过 n‐1 次合并之后,就变成一堆了.小明在合并水果时总共消耗的体力等于每次合并所耗体力之和. 假定每个水果重量都为 1,并且已知水果的种类数和每种水果的数目,你的任务是设计出合并的次序方案,使小明耗费的体力最少,并…
Cleaning Shifts Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some cleaning chores around the barn. He always wants to have one cow working on cleaning things up and has divided the day into T shifts (1 <= T <= 1,000,000…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救…
出自附中练习场[难度C]————————————————————————————————————————————————————————————— [试题描述]有 N 个任务, 每个任务最多只能完成一次.另外,每个任务都有两个属性 c[i]. d[i]. c[i]的意思是第 i 个任务必须要在第 c[i]个单位时间或之前完成.完成第 i 个任务所需要的时间为 d[i]. 初始时 0 时刻. 求最多能完成几个任务. [输入]第一行: N           接下来 N 行, d[i], c[i]…