博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018.10.18- oj3969 pd
阅读量:6530 次
发布时间:2019-06-24

本文共 640 字,大约阅读时间需要 2 分钟。

题目描述:

小q 的女朋友送给小q n个整数。但是这些数太大了,小q 的女朋友拿不动,于是拜托小q把这些数减少一些。小q 每次可以选择其中的两个x,y (不能同时选择同一个数) 变成x−P,y−Q现在他希望能知道最多能帮女朋友减掉多少P,Q。

输入:

第一行一个数表示n。

第二行由空格隔开的n个数。

第三行两个数,表示p,q。

输出:

一行一个数,表示能减掉的PP和QQ的总和。

数据范围:

对于前20%20%的数据,n≤5;

对于100%100%的数据,1≤n≤50,ci≤2000,50≤P,Q≤2000。

(看到这个数据范围!!内心激动!其实测试快结束有想对方向,但T1写太久了+  T3以为会写...以为唉TT)

算法标签:DP

思路:考虑到只要有能配对的等个数p,q,且不和自己匹配,我们可以由此想到dp,仔细一算,如果存剩余的p,q发现p,q的个数最多才2000个,数组滚动就存的下了,测试就想到这..连转移都没想..菜啊..空间ok了,掐指一算时间,发现事情不太对劲,这时候听讲评得出一个绝妙的continue!!i,j表示未匹配p,q的个数,于是有(i&&j>40)continue;break;因为单个a[i]至多只能匹配四十个p||q,一旦j>40,表示在之前一定存在更大的匹配对数。

代码:

View Code

一开始写continue效率倒一....拇指

转载于:https://www.cnblogs.com/Jessie-/p/9830339.html

你可能感兴趣的文章
五个优秀的硬盘检测工具
查看>>
用js实现table内容从下到上连续滚动
查看>>
基于ffmpeg的流媒体服务器
查看>>
项目积累——Blockingqueue,ConcurrentLinkedQueue,Executors
查看>>
JVM学习笔记(一)------基本结构
查看>>
活动目录之备份与恢复
查看>>
删除 Eclipse 的 configuration 目录
查看>>
MOXA的智能通信产品也大力支持WinCE.net了
查看>>
ActiveX开发知多少?
查看>>
你不得不知道的Visual Studio 2012(3)- 创建Windows应用程序
查看>>
Android操作系统2.0制作备份
查看>>
To XSS or not ? 杂谈
查看>>
TFTP服务器在Cisco设备上的应用(上传、下载IOS)
查看>>
获得文件和文件夹的所有权
查看>>
烂泥:学习mysql数据库主从同步复制原理
查看>>
Java相对路径读取文件
查看>>
PostgreSQL 商用版本EPAS(阿里云ppas) 自动(postgresql.conf)参数计算与适配功能
查看>>
烂泥:学习ssh之ssh隧道应用
查看>>
Android TableLayout 常用的属性介绍及演示
查看>>
Ajax跨域访问XML数据的另一种方式——使用YQL查询语句
查看>>