Time Limit: 1 second

Memory Limit: 128 MB

【问题描述】

在一个坐标轴上,有M辆坦克,第i辆坦克在时刻0处于pos[i](pos[i]>0),speed[i]个单位,在时刻k就处于pos[i]+speed[i]*k。

原点上有一炮台。炮台有N颗炮弹,在时刻0开始就可以发射炮弹,而且发射的顺序是你来确定的,每次只能发射一颗,一颗炮弹只能

用一次。每个炮弹都有一个休息时间rest[i],如果在某次发射了第i颗炮弹,要间隔rest[i]后才能在发射。一颗炮弹只能消灭

范围D(0到D)内的一辆坦克。

最多能消灭多少辆坦克?

【输入格式】

第一行:N,M,D(N,M≤1000)

接下来N行:rest

接下来M行:pos, speed

全部都是longint内的正整数。

【输出格式】

输出最多能消灭坦克数量。

Sample Input

3 3 3

3

2

1

4 1

1 1

2 1

Sample Output

2

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t042

【题解】



因为每枚炮弹的攻击范围是固定的;而坦克是越来越远的;

则肯定先用休息时间短的炮弹;

确定用哪个炮弹之后;其实第i次发射的炮弹(休息时间从小到大数第i个)能够攻击到的坦克就固定了;

且i越大;那枚炮弹能够攻击到的坦克就越少;(因为坦克越来越远);

这样我们先处理出第i枚炮弹的能够攻击到哪些坦克;

从第n枚炮弹开始,倒序枚举,看看第n枚炮弹能够攻击到哪些坦克;

随便攻击一个就好;

然后是第n-1枚炮弹,看看第n-1枚炮弹能够攻击到哪些坦克(且之前没有被攻击到)那就攻击它;

….

然后计数攻击了多少个坦克就好;

第i个炮弹能够攻击到的坦克,第i-1个炮弹肯定也能攻击到;

因为i越大,能够攻击到的坦克越来越少;

所以才这样,先选那些靠后都能攻击到的坦克,这样才能尽可能地为其他靠后就不能攻击到的坦克腾出炮弹;



【完整代码】

#include <cstdio>
#include <algorithm>
using namespace std;
#define LL long long const int MAXN = 1e3+10; struct abc
{
LL pos,speed;
}; LL rest[MAXN],d;
int n,m,cnt = 0;
abc a[MAXN];
bool bo[MAXN],can[MAXN][MAXN]; int main()
{
//freopen("F:\\rush.txt","r",stdin);
scanf("%d%d%I64d",&n,&m,&d);
for (int i = 1;i <= n;i++)
scanf("%I64d",&rest[i]);
sort(rest+1,rest+1+n);
for (int i = 1;i <= m;i++)
scanf("%I64d%I64d",&a[i].pos,&a[i].speed);
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= m;j++)
if (a[j].pos<=d)
can[i][j] = true;
for (int j = 1;j <= m;j++)
a[j].pos+=rest[i]*a[j].speed;
}
for (int i = n;i>=1;i--)
{
for (int j = 1;j <= m;j++)
if (!bo[j] && can[i][j])
{
bo[j] = true;
cnt++;
break;
}
}
printf("%d\n",cnt);
return 0;
}

【t042】炮击坦克的更多相关文章

  1. H5坦克大战之【建造敌人的坦克】

      公司这几天在准备新版本的上线,今天才忙里偷闲来写这篇博客.接着上一篇的"H5坦克大战之[玩家控制坦克移动2]"(http://www.cnblogs.com/zhouhuan/ ...

  2. H5坦克大战之【玩家控制坦克移动2】

    周一没有看圣诞大战,这几天比较忙也没有看赛后的报道,今天就先不扯NBA,随便扯扯自己.昨天在电脑里找东西的时候翻到以前兼职健身教练时的照片,思绪一下子回到学生时代,脑子久久换不过来.现在深深觉得健身和 ...

  3. H5坦克大战之【玩家控制坦克移动】

    自从威少砍下45+11+11的大号三双之后,网上出现了各种各样的神级段子,有一条是这样的: 威少:Hey,哥们,最近过得咋样! 浓眉:对方开启了好友验证,请先添加对方为好友 威少:...... JRS ...

  4. H5坦克大战之【画出坦克】

    今天是个特殊的日子,圣诞节,也是周末,在这里先祝大家圣诞快乐!喜庆的日子,我们可以稍微放松一下,扯一扯昨天雷霆对战凯尔特人的比赛,这场比赛大威少又双叒叕拿下三双,而且是一个45+11+11的超级三双, ...

  5. 3D坦克大战游戏源码

    3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...

  6. 分享一下Java写的坦克大战游戏,相信很多人小时候玩过

    写在前面 程序是五六年前读书的时候写的,里面会有一些不规范的,我已经将代码传到github上了,有时间会优化修改. 程序运行机制 定义了一个JPanel,然后每隔一小段时间重绘一遍. 重绘的内容如下: ...

  7. java基础 绘图技术.坦克大战 之java绘图坐标体系(二)

    功能:在坐标系上绘制坦克 /* * 功能:坦克游戏的1.0 * 1. 画出坦克 * */ package com.tank; import javax.swing.*; import java.awt ...

  8. [Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起

    [Unity3D]自己动手重制坦克舰队ArmadaTank(2)从碰撞说起 在上一篇里我给出了重制的坦克舰队效果图和试玩程序.本篇介绍一下玩家坦克和敌方坦克碰撞问题. +BIT祝威+悄悄在此留下版了个 ...

  9. [Unity3D]自己动手重制坦克舰队ArmadaTank

    [Unity3D]自己动手重制坦克舰队ArmadaTank 我玩过一款坦克游戏ArmadaTank(坦克舰队),如下图所示 几个月前我尝试用Unity3D重制这款游戏,已经可以玩起来了.下面是在PC上 ...

随机推荐

  1. hdu-3642--Get The Treasury-线段树求面积并

    求空间中叠加3次及3次以上的体积. 由于|z|<=500.所以直接把z轴剥离出来1000层. 然后对于每一层进行线段树求面积并. #include<stdio.h> #include ...

  2. angular反向代理

    第一步:根目录新建 proxy.conf.json target:就是代理的服务器地址. 接口地址必须是http://localhost:8081/api开头 { "/api":{ ...

  3. 洛谷 P1192 台阶问题

    P1192 台阶问题 题目描述 有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式. 输入输出格式 输入格式: 输入文件的仅包含两个正整数N,K. ...

  4. amazeui页面分析之登录页面

    amazeui页面分析之登录页面 一.总结 1.tpl命名空间:tpl命名空间的样式都是从app.css里面来的,app.css用用来移动网站开发的样式 2.表单样式:am-form到am-form- ...

  5. loadrunne-- Analysis 分析器

    本文转自:https://www.cnblogs.com/Chilam007/p/6445165.html Analysis简介 分析器就是对测试结果数据进行分析的组件,它是LR三大组件之一,保存着大 ...

  6. Android原生生成JSON与解析JSON

    JSON数据是一种轻量级的数据交换格式,在Android中通常应用于client与server交互之间的传输数据.像如今在网上有非常多解析JSON数据的jar包,可是归根究竟用的都是Android原生 ...

  7. 读<阿里亿级日活网关通道架构演进>有感

    读<阿里亿级日活网关通道架构演进>时对优化方法有些概念不理解,特意搜索了一下,拓展自己的思路. 其中的优化: 优化方法中1,2比较常见,3,4我知道的比较少,很感兴趣.就继续追踪下去: 于 ...

  8. element ui源码解析 -- button篇

    要看源码就得从最简单的开始,button够简单的了,就从他开始吧. 安装依赖后源码目录在:node_modules/element-ui/packages中,可以看到这里的文件夹命名是不是很熟悉,就是 ...

  9. [Angular2 Form] Reactive Form, FormBuilder

    Import module: import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/comm ...

  10. tensorflow 的 Batch Normalization 实现(tf.nn.moments、tf.nn.batch_normalization)

    tensorflow 在实现 Batch Normalization(各个网络层输出的归一化)时,主要用到以下两个 api: tf.nn.moments(x, axes, name=None, kee ...