C-TT的奖励

C-TT的奖励

一、题目描述

在大家不辞辛劳的帮助下,TT 顺利地完成了所有的神秘任务。

神秘人很高兴,决定给 TT 一个奖励,即白日做梦之捡猫咪游戏。

捡猫咪游戏是这样的,猫咪从天上往下掉,且只会掉在 [0, 10] 范围内,具体的坐标范围如下图所示。

TT 初始站在位置五上,且每秒只能在移动不超过一米的范围内接住掉落的猫咪,如果没有接住,猫咪就会跑掉。例如,在刚开始的一秒内,TT 只能接到四、五、六这三个位置其中一个位置的猫咪。

喜爱猫咪的 TT 想要接住尽可能多的猫咪,你能帮帮他吗?

Input

多组样例。每组样例输入一个 m (0 < m < 100000),表示有 m 只猫咪。

在接下来的 m 行中,每行有两个整数 a b (0 < b < 100000),表示在第 b 秒的时候有一只猫咪掉落在 a 点上。

注意,同一个点上同一秒可能掉落多只猫咪。m = 0 时输入结束。 

Output

输出一个整数 x,表示 TT 可能接住的最多的猫咪数。

Sample Input

6
5 1
4 1
6 1
7 2
7 2
8 3
0

Sample Output

4

二、思路与算法

本题核心思路为DP,二维数组dp用来存储在这个时刻,这个位置上可以获得的猫咪数目。
在读入数据的同时,把对应位置上的数据加一,同时用一个变量记录最晚的时间。(在读入每组数据之前都要把数组初始化为0)
之后,从最晚的时间从后往前推,位置上每次都要遍历,记录在此刻每个位置能得到的最大猫咪数。
一直推到第0秒,即开始时间,在所有位置中选出能获得最大猫咪数的位置,这就是最终答案。

三、代码实现

#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;

int m=0;
int dp[100100][12]={0};

int main(){
	scanf("%d",&m);
	while(m!=0){
		int max_b=0;
		
		memset(dp,0,sizeof(dp));
		for(int i=1;i<=m;i++){
			int a=0,b=0;
			scanf("%d %d",&a,&b);
			dp[b][a]++;
			if(b>max_b){max_b=b;	}
		}   //输入完成 
		for(int j=max_b-1;j>=0;j--){
			for(int k=0;k<=10;k++){
				dp[j][k]+=max(dp[j+1][k-1],max(dp[j+1][k],dp[j+1][k+1]));
			}
		} 
		printf("%d\n",dp[0][5]);
		scanf("%d",&m);	
	}
	
	return 0;
}
import requests url = "https://go.mie.gamecenter.qq.com/ams3.0.php?actid=10294419&game=lhlr&serverList=&checkInstall=false&autosvr=false&prizeImg=&useWx=false&card_id_2024=0&code_2024=&code=&attach=&acttk=rta8vx&sid=&platid=1&area=2&roleid=1&plat=2&tt=1&report_data=%7B%22is_commercial%22%3A0%2C%22business_type%22%3A%2211%22%2C%22business%22%3A%22%22%2C%22page%22%3A%22%22%7D&_c=page&g_tk=885455536&p_tk=1b96eab153bc9a6604e92a6139af580f&pvsrc=ark2024_2000000484_103958&s_p=1%7Chttp%7C&s_v=9.1.60.24370&ozid=&vipid=&callback=json17427634255512&mieActInfo=%257B%2522adtag%2522%253A%2522ark2024_2000000484_103958%2522%257D&cache=0" cookies = { "eas_sid": "M1j7v4I2y7g1O8o3T1J3N6C7m6", "idt": "1742718314", "pgv_pvid": "7179903328", "fqm_pvqid": "54bd076d-809b-4a1a-a282-896043268060", "fqm_sessionid": "b1870541-35f2-4c12-84b5-2d434f73a76c", "p_uin": "o2506668047", "p_uid": "u_4vrQ-nGioB1eQz0o0aH1UQ", "pt4_token": "LMpDzQO8reAx39vmkrTwhWlC4ApY-Rxz-TQGcq5y0to_", "uin": "o2506668047", "skey": "e0ScJC9fJJ", "p_skey": "FRDt9BRLrJmwaL-pLgC40LlX-d1uM7W*idhcmecv08E_", } headers = { "Host": "go.mie.gamecenter.qq.com", "Connection": "keep-alive", "sec-ch-ua": "\"Not A(Brand\";v=\"99\", \"Android WebView\";v=\"121\", \"Chromium\";v=\"121\"", "sec-ch-ua-mobile": "?1", "User-Agent": "Mozilla/5.0 (Linux; Android 15; V2408A Build/AP3A.240905.015.A2_V0101L11; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/121.0.6167.71 MQQBrowser/6.2 TBS/047501 Mobile Safari/537.36 V1_AND_SQ_9.1.60_9388_YYB_D QQ/9.1.60.24370 NetType/WIFI WebP/0.3.0 AppId/537275637 Pixel/1440 StatusBarHeight/133 SimpleUISwitch/0 QQTheme/1000 StudyMode/0 CurrentMode/0 CurrentFontScale/1.0 GlobalDensityScale/0.9257143 AllowLandscape/false InMagicWin/0", "sec-ch-ua-platform": "\"Android\"", "Accept": "*/*", "Sec-Fetch-Site": "same-site", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Dest": "script", "Referer": "https://youxi.gamecenter.qq.com/", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7" } res = requests.get(url, headers=headers, cookies=cookies) print(res.text)
最新发布
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值