题目传送门(内部题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++

最新文章

  1. iOS CLLocationManager 定位
  2. memcpy code
  3. CSS居中完全解决方案
  4. FFT(1)
  5. ASP.NET MVC4中用 BundleCollection使用问题手记
  6. 如何过滤 adb logcat 输出
  7. hdoj 2647 Reward【反向拓扑排序】
  8. win7 snmp
  9. 上mongodb创建一些吸取的经验教训指数
  10. git底层原理(二)
  11. Mac系统实现git命令自动补全
  12. lua 操作数据库
  13. css文本样式-css学习之旅(4)
  14. [Codeforces394B]Very Beautiful Number(逆推)
  15. hash 位运算 练习
  16. hdu 6069 Counting Divisors(求因子的个数)
  17. Android控件第7类——对话框
  18. fresco xml配置属性不起作用
  19. 在Vue中关闭Eslint 的方法
  20. 看到的一个关于C++能力分级的描述

热门文章

  1. CentOS/RHEL 安装EPEL第三方软件源
  2. MVC4学习要点记四
  3. springboot-oracle工程win下正常,centos下不能访问数据库
  4. 【异常】Caused by: org.apache.phoenix.coprocessor.HashJoinCacheNotFoundException:
  5. 招商银行网银在Mac上装了插件仍然无法登录
  6. Vivotek 摄像头远程栈溢出漏洞分析及利用
  7. websocket 多聊天室功能
  8. YII2-按需加载并管理静态资源(CSS,JS)
  9. sql 脚本过大
  10. QTP(1)