测试赛D - The War(有控制范围的贪心)

D - The War

Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld
& %llu

Submit Status

Description

A war had broken out because a sheep from your kingdom ate some grasses which belong to your neighboring kingdom. The counselor of your kingdom had to get prepared for this war. There are N (1 <= N <= 2500) unarmed soldier in your kingdom
and there are M (1 <= M <= 40000) weapons in your arsenal. Each weapon has a weight W (1 <= W <= 1000), and for soldier i, he can only arm the weapon whose weight is between minWi and maxWi (
1 <= minWi <= maxWi <= 1000). More armed soldier means higher success rate of this war, so the counselor wants to know the maximal armed soldier he can get, can you help him to win this war?

Input

There multiple test cases. The first line of each case are two integers N, M. Then the following N lines, each line contain two integers minWi, maxWi for each soldier. Next M lines, each line contain one integer W represents the weight of each weapon.

Output

For each case, output one integer represents the maximal number of armed soldier you can get.

Sample Input

3 3
1 5
3 7
5 10
4
8
9
2 2
5 10
10 20
4
21

Sample Output

2
0

贪心的问题,人可以使用的有一些范围,武器有重量,唯一要解决的问题就是在一个人的控制范围内包含另一个人的,这种情况要让范围小的先找

y有小到大,如果y相同时x由小到大。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct node{
    int x , y ;
} p[2600];
int q[1200] ;
bool cmp(node a,node b)
{
    return a.y < b.y || ( a.y == b.y && a.x < b.x ) ;
}
int main()
{
    int i , j , n , m ;
    while(scanf("%d %d", &n, &m) !=EOF )
    {
        memset(q,0,sizeof(q));
        for(i = 0 ; i < n ; i++)
            scanf("%d %d", &p[i].x, &p[i].y);
        while(m--)
        {
            scanf("%d", &i);
            q[i]++ ;
        }
        m = 0 ;
        sort(p,p+n,cmp);
        for(i = 0 ; i < n ; i++)
        {
            int l = p[i].x , r = p[i].y ;
            for(j = l ; j <= r ; j++)
                if( q[j] )
            {
                q[j]--;
                m++ ;
                break;
            }
        }
        printf("%d\n", m);
    }
    return 0 ;
}

测试赛D - The War(有控制范围的贪心)

时间: 2024-10-03 13:46:23

测试赛D - The War(有控制范围的贪心)的相关文章

【2016北京集训测试赛(八)】 crash的数列

Description 题解 题目说这是一个具有神奇特性的数列!这句话是非常有用的因为我们发现,如果套着这个数列的定义再从原数列引出一个新数列,它居然还是一样的...... 于是我们就想到了能不能用多点数列套着来加速转移呢? 但是发现好像太多数列套起来是可以烦死人的...... 我们就采用嵌套两次吧,记原数列为A,第一层嵌套为B,第二层嵌套为C. 我们其实可以发现一些规律,对于Ci,它对应了B中i的个数:对于Bi,它对应了A中i的个数. 稍加处理即可,我们一边计算一边模拟数列的运算,同时可以计算

SDUT2013级测试赛_D

题目描述 给出一棵含有n个点的树,每个点权值为wi,求从根节点到叶子结点权值和最大的那条路经的权值和是多少. 输入 n(1<= n && n <= 10000). 接下来n+1行,每行两个整数w(w <= 1000). 第i个节点的父节点为w,若 i为根节点.600组数据. 输出 对于每组数据,输出一个数代表答案. 示例输入 3 0 5 1 5 1 6 示例输出 11 提示 来源 解题报告 求从根节点出发到叶子的最长路...很像数塔... 我暴力dfs过了.怒搜所有数枝,

计蒜之道 测试赛 (BCD)

测试赛写写题解不会被吐槽吧... 淘汰赛车 时限:1000ms 内存:262144K 赛车比赛在潘多拉星球变得越来越流行了.但是他们的比赛跟我们平常的不太一样:n 辆赛车在一条长长的直道上展开同台竞技.每辆赛车的速度都为 1m/s,整条赛道在每一米都有坐标标记. 在比赛的赛车中,赛车 i 从 0 秒开始由 ai 向 bi 移动.到达 bi 之后转而返回由 bi 向 ai 移动.循环往复. 又是蒜头菌!原来这是蒜头菌正在玩的一个手机小游戏.蒜头菌可以在某些位置放下 TNT 炸毁某些赛车.因为他有

测试赛A - Colored Sticks(并查集+字典树+欧拉回路)

A - Colored Sticks Time Limit:5000MS     Memory Limit:128000KB     64bit IO Format:%I64d & %I64u Submit Status Description You are given a bunch of wooden sticks. Each endpoint of each stick is colored with some color. Is it possible to align the sti

测试赛B - Balance(天平的dp问题)

B - Balance Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submit Status Description Gigel has a strange "balance" and he wants to poise it. Actually, the device is different from any other ordinary balance. It

测试赛F - Dragon Balls(并查集)

F - Dragon Balls Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description Five hundred years later, the number of dragon balls will increase unexpectedly, so it's too difficult for Monkey King(WuKong) to

测试赛C - Eqs(哈希)

C - Eqs Time Limit:5000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description Consider equations having the following form: a1x1 3+ a2x2 3+ a3x3 3+ a4x4 3+ a5x5 3=0 The coefficients are given integers from the interva

2016集训测试赛(二十五)小结

这场测试赛有必要小结一下. 昨晚 1 点才睡, 今天状态很差, 先睡了 1 个小时, 然后开始打比赛. 第一题不大会做, 写了一个代码后发现是错的, 第二题看不懂题, 第三题简单地分析了一下, 发现是一个树形DP . 然后做 T3 , 大概推了很久, 写了很久, 又写了几个对拍, 搞到 11 点才搞掂. 这时候我发现 T1 有 50 分是我可做的, 然后 T2 的题意仍然不是很明确, 我想尝试着写写 T2 , 这个必须要写出来才能看出题意是不是这样, 写着写着发现 T2 的题意不是我理解的这样,

2018冬令营模拟测试赛(三)

2018冬令营模拟测试赛(三) [Problem A]摧毁图状树 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述" 输出示例 见"试题描述" 数据规模及约定 见"试题描述" 题解 这题没想到贪心 QwQ,那就没戏了-- 贪心就是每次选择一个最深的且没有被覆盖的点向上覆盖 \(k\) 层,因为这个"最深的没有被覆盖的点"不可能再有其它点引出的链覆盖它了,而它又