小P的故事——神奇的Dota

本文描述了一位玩家在游戏中购买道具的场景,通过算法计算出如何让玩家在有限的资金内获得最大利益的同时,尽量减少额外支付的小费金额。该问题通过编程解决,并给出了具体的示例输入输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

小P非常喜欢玩dota,不分昼夜的玩
,结果他连做梦也都是里面的画面,一天晚上小P刚躺下就做了一个神奇的梦。。。
不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前.
死亡骑士:"我要买道具!"
地精商人:"我们这里有三种道具,血瓶150块一个,魔法药200块一个,无敌药水350块一个."
死亡骑士:"好的,给我一个血瓶."
说完他掏出那张N元的大钞递给地精商人.
地精商人:"我忘了提醒你了,我们这里没有找客人钱的习惯的,多的钱我们都当小费收了的,嘿嘿."
死亡骑士:"......"
死亡骑士想,与其把钱当小费送个他还不如自己多买一点道具,反正以后都要买的,早点买了放在家里也好,但是要尽量少让他赚小费.
现在死亡骑士感觉自己的智商不够用所以希望小P帮他计算一下,最少他要给地精商人多少小费.但是小P的智商可是出了名的“不忍直视”啊,聪明非凡的你所以你能帮帮他吗?

输入

输入数据的第一行是一个整数T(1<=T<=100),代表测试数据的数量.然后是T行测试数据,每个测试数据只包含一个正整数N(1<=N<=10000),N代表死亡骑士手中钞票的面值.
 
注意:地精商店只有题中描述的三种道具.

输出

 对于每组测试数据,请你输出死亡骑士最少要浪费多少钱给地精商人作为小费.
 

示例输入

2 
380 
200

示例输出

30 
0

提示

 

来源

xfl

示例程序

 
  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4.     int n,i,sum;  
  5.     scanf("%d",&n);  
  6.     for(i=1;i<=n;i++)  
  7.     {  
  8.         scanf("%d",&sum);  
  9.         if(sum>=150)  
  10.         {  
  11.             if(sum>200 && sum<300)  
  12.             {  
  13.                 printf("%d\n",sum-200);  
  14.             }  
  15.             else  
  16.             printf("%d\n",sum%50);  
  17.         }  
  18.         else  
  19.         {  
  20.             printf("%d\n",sum);  
  21.         }  
  22.     }  
  23.     return 0;   
  24. }  
### 将COCO数据集转换为DOTA格式 为了将COCO格式的数据集转换为DOTA格式,可以采用编写Python脚本来完成这一过程。此方法涉及解析原始的JSON文件,并按照目标格式重新构建标签文件。 #### 解析COCO JSON 文件 COCO 数据集中每个实例由边界框(bounding box)、分割掩码(segmentation mask)和其他元数据组成。对于向 DOT A格式的转换而言,主要关注的是多边形坐标以及类别信息[^1]。 ```python import json from pathlib import Path def load_coco_annotations(coco_json_path): with open(coco_json_path, 'r') as f: coco_data = json.load(f) images_info = {img['id']: img for img in coco_data['images']} annotations_by_image_id = {} for ann in coco_data['annotations']: image_id = ann['image_id'] if image_id not in annotations_by_image_id: annotations_by_image_id[image_id] = [] # Convert segmentation to polygon points (if available) segs = ann.get('segmentation', []) bbox = ann.get('bbox') category_id = ann['category_id'] annotation_entry = { "segs": segs, "bbox": bbox, "category_id": category_id } annotations_by_image_id[image_id].append(annotation_entry) return images_info, annotations_by_image_id ``` #### 构建DOTA格式标签 在创建新的标签文件时,需遵循 DOTA 的特定结构——每行代表一个对象,包含八个浮点数表示旋转矩形的四个顶点坐标(x1,y1,x2,y2,x3,y3,x4,y4),后面跟着类别名称和置信度得分(通常设为1)。 ```python def save_as_dota_format(output_dir, filename, polygons, categories_map): output_file = Path(output_dir) / f"{filename}.txt" lines = [] for poly in polygons: coords_str = ",".join([str(coord) for coord in poly["points"]]) class_name = categories_map[poly["category_id"]] line = f"{coords_str},{class_name},1\n" lines.append(line) with open(str(output_file), 'w') as file: file.writelines(lines) ``` #### 完整流程整合 最后一步是遍历所有图片及其关联的对象注解,调用上述函数处理每一个案例,并保存到指定目录下。 ```python categories_mapping = ... # Define mapping from COCO category IDs to names used in DOTA. for image_id, polys in annotations_by_image_id.items(): image_filename = images_info[image_id]['file_name'].split('.')[0] converted_polys = [{ "points": sum(segs[0], []), # Flatten list of lists into single flat list. "category_id": cat_id } for segs, _, cat_id in [(p["segs"], p["bbox"], p["category_id"]) for p in polys]] save_as_dota_format(dota_output_folder, image_filename, converted_polys, categories_mapping) ``` 通过这种方式能够有效地把现有的 COCO 格式的标注资料转变为适用于面向方向的目标检测模型所需的 DOTA 形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶孤心丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值