[CSP-S模拟测试]:装饰(数学)
题目传送门(内部题147)
输入格式
每个测试点第一行一个正整数$T$,表示该测试点内的数据组数。
接下来$T$行,每行三个非负整数$a,b,c$,含义如题目中所示。
输出格式
对每组数据输出一行一个非负整数表示答案。
样例
样例输入:
5
1 2 3
5 0 0
9 1 1
5 5 4
0 6 6
样例输出:
2
0
2
4
4
数据范围与提示
样例解释:
第一组数据中,可以装饰出红黄蓝、黄蓝蓝两张桌子;
第二组数据中只有红色的气球,无法装饰任何桌子;
第三组数据中,只能装饰两张桌子,颜色分别为红红黄和红红蓝,而剩下的$5$个红色气球无法使用。
第四组数据中,可以装饰四张颜色为红黄蓝的桌子,剩余的一个红色气球和一个蓝色气球无法使用。
最后一组数据中,可以装饰黄蓝蓝和黄黄蓝的桌子各两张。
数据范围:
对于$30\%$的数据,有$a,b,c\leqslant 5$,
对于$60\%$的数据,有$a,b,c,T\leqslant 500$,
对于$100\%$的数据,有$0\leqslant a,b,c\leqslant 1000000000$(即$1000^3$),$1\leqslant T\leqslant 20,000$。
题解
先说一下$60\%$的暴力吧。
设$dp[i][j][k]$表示红色有$i$个,黄色有$j$个,蓝色有$k$个的情况下最多能装饰几个桌子。
有转移:
$$dp[i][j][k]=\max(dp[i-1][j-1][k-1],dp[i-2][j-1][k],dp[i-1][j-2][k],dp[i-2][j][k-1],dp[i-1][j][k-2],dp[i][j-2][k-1],dp[i][j-1][k-2])$$
注意空间问题(不然会$MLE0$,比方说某同桌),但是因为答案很小,所以用$short$就好啦。
正解其实是找规律找出来的,无意间发现当数量最少的两个球相加乘$2$还比另一个球少的情况下答案就是这两个球的加和;否则答案就是三个球数量加和的$\frac{1}{3}$。
时间复杂度:$\Theta(T)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
long long a[3];
int main()
{
int T;scanf("%d",&T);
while(T--)
{
scanf("%lld%lld%lld",&a[0],&a[1],&a[2]);sort(a,a+3);
printf("%lld\n",(a[0]+a[1])*2<a[2]?a[0]+a[1]:(a[0]+a[1]+a[2])/3);
}
return 0;
}
rp++
[CSP-S模拟测试]:装饰(数学)的更多相关文章
- [CSP-S模拟测试]:装饰(状压DP)
题目传送门(内部题114) 输入格式 第一行一个正整数$n$. 接下来一行$n-1$个正整数,第$i$个数为$f_{i+1}$. 接下来一行$n$个数,若第$i$个数为$0$则表示林先森希望$i$号点 ...
- 利用Python中的mock库对Python代码进行模拟测试
这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下 ...
- Python 的mock模拟测试介绍
如何不靠耐心测试 可能我们正在写一个社交软件并且想测试一下"发布到Facebook的功能",但是我们不希望每次运行测试集的时候都发布到Facebook上. Python的unitt ...
- 【转】利用Python中的mock库对Python代码进行模拟测试
出处 https://www.toptal.com/python/an-introduction-to-mocking-in-python http://www.oschina.net/transla ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- csp-s模拟测试98
csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...
- 0823NOIP模拟测试赛后总结
考了两场感觉虚了... NOIP模拟测试30 分着考的. 就只有T2的美妙的暴力拿分了,60分rank10,挂了. T1是一道sb题,爆零了十分遗憾. 许多人都掉进了输出格式的坑里,C没大写.少个空格 ...
- Android单元测试与模拟测试详解
测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...
- [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)
目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...
随机推荐
- json返回数据多个是数组,单个就不是处理方案
/// <summary> /// 计算方案 当前返回的对象 /// </summary> [JsonConverter(ty ...
- luogu题解P2312解方程--暴力模+秦九韶
题目链接 https://www.luogu.org/problemnew/show/P2312 分析 这道题很毒啊,这么大的数. 但是如果多项式\(\sum_{i=0}^N a[i]*X^i=0\) ...
- [转载]from __future__ import的用法
一句话概况:这是为了在低版本python中使用高版本特性而引入的,最常用的就是print_function来实现在2.x中使用3.x中的print()命令,从而避免在切换版本时修改代码. https: ...
- O042、Live Migrate 操作
参考https://www.cnblogs.com/CloudMan6/p/5554549.html Migrate 操作会先将Instance停掉,也就是所谓的 冷迁移 .而 Live Migr ...
- 如何将webstrom本地的代码上传到github上
首先注册一个github账户,然后下载一个git软件. 文件夹的任意处点击右键,找到gitbash here,打开终端命令窗口. 因为我们本地 Git 仓库和 GitHub 仓库之间的传输是通过 S ...
- 给没有连接因特网的centos使用yum安装其他软件(转)
https://blog.csdn.net/bbg221/article/details/78360618 在centos上,使用yum安装软件很方便,比如安装gcc,java等, 但是在没有网络的情 ...
- javascript中的所有内容都是一个对象:字符串、值、数组、函数…
javascript中的所有内容都是一个对象:字符串.值.数组.函数…此外,javascript允许自定义对象.javascript对象JavaScript提供多个内置对象,如字符串.日期.数组等.对 ...
- oracle解锁
--以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT * FROM v$proce ...
- 【转】全志A10/A20 Bootloader加载过程分析
原文 : http://blog.csdn.net/allen6268198/article/details/12905425 从这里开始:http://linux-sunxi.org/Bootabl ...
- PHP的八种数据类型
PHP 支持8种基本的数据类型. 四种标量类型: boolean (布尔型) integer (整型) float (浮点型, 也称作 double) string (字符串) 两种复合类型: arr ...