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. [Python] Object spread operator in Python

    In JS, we have object spread opreator: const x = { a: '1', b: '2' } const y = { c: '3', d: '4' } con ...

  2. eclipse- log 打印跟输出到文件

    1.在eclipse中打印log,经常使用的就是log.e(string,string) 代码中如下 @Override public boolean onTouchEvent(MotionEvent ...

  3. bootstrap课程9 bootstrap如何实现动画加载进度条的效果

    bootstrap课程9 bootstrap如何实现动画加载进度条的效果 一.总结 一句话总结:在bootstrap进度条的基础上添加js(定时器),动态的改变进度条即可.很简单的. 1.路径导航是什 ...

  4. ua识别(浏览器标识识别)

    ua识别(浏览器标识识别) 一.总结 1.浏览器标识(UA):可以使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件,从而判断用户是使用电脑 ...

  5. 解决Cookie乱码

    在Asp.net的HttpCookie中写入汉字,读取值为什么全是乱码?其实这是因 为文字编码而造成的,汉字是两个编码,所以才会搞出这么个乱码出来!其实解决的方法很简单:只要在写入Cookie时,先将 ...

  6. Java Web学习总结(15)——JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  7. common daemon

    http://zdsyouxiang.iteye.com/blog/1940202 http://commons.apache.org/proper/commons-daemon/procrun.ht ...

  8. UvaLive 6663 Count the Regions 离散化+DFS

    链接:http://vjudge.net/problem/viewProblem.action?id=49408 题意:在平面内给出若干个矩形,求出它们能将整个平面分成多少份. 思路:刚開始一眼看到认 ...

  9. [React] Create a Virtualized List with Auto Sizing Cells using react-virtualized and CellMeasurer

    In this lesson we'll use CellMeasurer and CellMeasurerCache to automatically calculate and cache the ...

  10. [Ramda] Declaratively Map Predicates to Object Properties Using Ramda where

    Sometimes you need to filter an array of objects or perform other conditional logic based on a combi ...