[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直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...
随机推荐
- 【weixin】微信支付---Native支付模式二(PC端支付大多采用此模式)
[模式二]:商户后台系统调用微信支付[统一下单API]生成预付交易,将接口返回的链接生成二维码,用户扫码后输入密码完成支付交易.注意:该模式的预付单有效期为2小时,过期后无法支付 模式二与模式一相比, ...
- Js中去除数组中重复元素的6种方法
方法一: Array.prototype.method1 = function(){ var arr=[]; //定义一个临时数组 for(var i = 0; i < this.length; ...
- css and canvas实现圆形进度条
进度条效果: 话不多说,上代码 使用css动画实现,看到一篇博客的启发,稍微修改了下, css实现的原理是用两个半圆一开始隐藏,再分别旋转180度,最后成为一个整圆 半圆效果,一开始右边的半圆在盒 ...
- webpack整合 .vue 文件,集成 vue-loader
webpack集成vue-loader 创建一个文件夹 test_webpack_vue 在 test_webpack_vue 下新建目录 src 在 src 目录下 新建文件 index.html ...
- Fiddler抓取手机APP程序数据包
1.下载并安装Fiddler 下载地址:https://www.telerik.com/download/fiddler 2.设置Fiddler可监听远程通讯 前提条件:需要监听的手机和Fiddler ...
- 获得npm server 上 package 的版本信息
通过这个命令可以获取package 的历史版本信息 npm view packagename versions
- 小白进阶之Scrapy第六篇Scrapy-Redis详解(转)
Scrapy-Redis 详解 通常我们在一个站站点进行采集的时候,如果是小站的话 我们使用scrapy本身就可以满足. 但是如果在面对一些比较大型的站点的时候,单个scrapy就显得力不从心了. 要 ...
- aipai服务架构
概述 业务服务器30+ 1.根据业务不同,有四个主入口,负责负载均衡. 2.主要是业务分离,防止宕机影响所有业务. 3.nginx反向代理,保证每个业务至少有两个服务. redis集群12台 主要使用 ...
- Nginx返回大长度的JSON数据被截断
1 添加Nginx参数,增加缓存字符串大小 head{ proxy_buffers 16 512k; //此处值代表nginx 设置 16个 512k 的块进行缓存,总共大小为16*512k prox ...
- CentOS7.x卸载与安装MySQL5.7的操作过程以及编码格式的修改
一.MySQL5.7的卸载 1.1yum方式查看yum是否安装过mysql cd yum list installed mysql* 如或显示了列表,说明系统中有MySQL 如上显示,我已经安装了my ...