8-6测试总结

NOIP模拟题day6

清华大学 茹逸中

题目概览


题目名称


抽牌


插旗


挖宝


程序文件名


draw.pas/c/cpp


flag.pas/c/cpp


treasure.pas/c/cpp


输入文件名


draw.in


flag.in


treasure.in


输出文件名


draw.out


flag.out


path.out


运行时间上限


1秒


1秒


1秒


运行内存上限


512M


512M


512M


比较方式


全文比较


全文比较


全文比较


题目类型


传统


传统


传统

抽牌(draw)

【题目描述】

一叠牌中有n张牌,其中m张牌是黑牌,剩余的牌是红牌。现在将所有的牌随机打乱,小R从牌堆里依次抽牌,如果小R抽到的牌是黑牌,则他会继续抽牌(他不会将抽到的黑牌放回去);如果他抽到的牌时红牌,则停止抽牌。

现在小R想知道他抽到黑牌的数量的数学期望是多少。

【输入格式】

至多10组数据,每组数据一行,包含两个正整数,分别表示n ,m。

【输出格式】

对于每组数据,输出一行一个实数,保留四位小数,表示抽牌数量的数学期望。

【输入样例】

5 3

1 0

【输出样例】

1.0000

0.0000

【数据范围与约定】

对于20%的数据1<=N<=12;

对于40%的数据1<=N<=2^12;

对于100%的数据1<=N<=2^31-1,M<=N

插旗(flag)

【题目描述】

在n*m的棋盘中,ryz想在某些位置上插上旗,插上一面旗的代价等于当前棋盘中所有旗与这面旗的曼哈顿距离的最大值。插第一面旗不需要代价。求出最小代价和。

【输入格式】

第一行两个整数n,m

接下来输出n*m的字符矩阵,如果第i行第j个字符是’.’表示第i行第j列这个点不需要插旗,’Y‘表示要插旗。

【输出格式】

输出一行答案

【输入样例1】

3 3

..Y

Y..

.Y.

【输出样例1】

5

【输入样例2】

5 5

.Y..Y

YY..Y

Y.YY.

..YY.

Y.Y.Y

【输出样例2】

52

【数据范围与约定】

对于20%的数据,n,m<=4

对于40%的数据,n,m<=6

对于60%的数据,n,m<=8

对于80%的数据,n,m<=13

对于100%的数据,n,m<=20

挖宝(treasure)

【题目描述】

小R在野外发现了一大片宝藏。这批宝藏被藏在m个地道里,每个地道连接两个洞穴。第i个地道连接编号为和的洞穴(),通过该地道需要花费的时间,地道中藏有价值为的宝藏。由于宝藏中蕴含着某些神奇的魔力,小R只能通过地道从编号较小的洞穴走到编号较大的洞穴,即他只能从走到而不能反着走。由于小R的时间非常宝贵,因此他希望能花最小的时间挖到价值最大的宝藏,即他希望平均每个单位时间挖到的宝藏价值尽量大。

现在小R要从1号洞穴出发去n号洞穴,请问在这个过程中,他平均每个单位时间挖到的宝藏价值最大是多少。

【输入格式】

第一行两个正整数n,m,分别表示洞穴的数量和地道的数量。

接下来m行,第i行包含四个整数,其中,

【输出格式】

一行一个实数,表示平均每个单位时间挖到的宝藏价值的最大值,保留四位小数。

【输入样例】

4 4

1 2 3 9

1 3 30 85

2 4 3 6

3 4 3 3

【输出样例】

2.6667

【数据范围与约定】

对于20%的数据

对于40%的数据

对于100%的数据

T1:暴力推,40分,后来根据打表找规律可知ans=m/(n-m+1)

T2:错误的贪心,40分,后坐标转移后DP

T3:二分答案+DP(线扫?)

T2 code

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
#define inf 100000000

int n,m;
int dp[50][50][50][50];
bool map[50][50];

class EllysChessboard
{

    int count(int x1,int x2,int y1,int y2)
    {
        if (x1==x2 && y1==y2)    return 0;
        if (x1>x2 || y1>y2)    return inf;
        if (dp[x1][x2][y1][y2]>=0)    return    dp[x1][x2][y1][y2];
        int &ans=dp[x1][x2][y1][y2];
        ans=inf;
        int cost;

        cost=count(x1+1,x2,y1,y2);
        for (int i=y1;i<=y2;i++)    if (map[x1][i])
            cost+=max(x2-x1,max(y2-i,i-y1));

        ans=min(ans,cost);

        cost=count(x1,x2-1,y1,y2);
        for (int i=y1;i<=y2;i++)    if (map[x2][i])
            cost+=max(x2-x1,max(y2-i,i-y1));

        ans=min(ans,cost);

        cost=count(x1,x2,y1+1,y2);
        for (int i=x1;i<=x2;i++)    if (map[i][y1])
            cost+=max(y2-y1,max(x2-i,i-x1));

        ans=min(ans,cost);

        cost=count(x1,x2,y1,y2-1);
        for (int i=x1;i<=x2;i++)    if (map[i][y2])
            cost+=max(y2-y1,max(x2-i,i-x1));

        ans=min(ans,cost);

        return ans;
    }
public:
    int minCost(vector<string> board)
    {
        memset(map,0,sizeof map);
        memset(dp,-1,sizeof dp);
        n=board.size();
        m=board[0].size();
        for (int i=0;i<n;i++)
            for (int j=0;j<m;j++)
            if (board[i][j]!=‘.‘)    map[i+j][i-j+m-1]=1;
        return count(0,n+m-2,0,n+m-2);
    }
};

EllysChessboard test;

int main()
{
    freopen("flag.in","r",stdin);
    freopen("flag.out","w",stdout);
    cin>>n>>m;
    string temp;
    vector<string> s;
    for (int i=0;i<n;i++)
    {
        cin>>temp;
        s.push_back(temp);
    }
    cout<<test.minCost(s)<<endl;
    return 0;
}
时间: 2024-10-21 12:16:41

8-6测试总结的相关文章

Extjs下拉树代码测试总结

http://blog.csdn.net/kunoy/article/details/8067801 首先主要代码源自网络,对那些无私的奉献者表示感谢! 笔者对这些代码做了二次修改,并总结如下: Extjs3.x版本下拉树代码: [javascript] view plaincopy Ext.ux.TreeCombo = Ext.extend(Ext.form.ComboBox, { constructor : function(cfg) { cfg = cfg || {}; Ext.ux.Tr

[转]h5页面测试总结

转自http://www.blogjava.net/qileilove/archive/2014/07/24/416154.html?utm_source=tuicool H5页面测试总结 其实经过几次H5页面测试之后,发现存在很多共同的问题,所以在此对H5页面的测试点(以及容易出问题的点),做一个总结,给开发同学自测,以及准备入手H5测试的同学一个参考. 1.业务逻辑相关 除基本的功能测试之外,H5页面的测试,需要关注以下几点: 1.1 登陆 目前H5与native各个客户端都做了互通,所以大

php操作memcache的使用测试总结

php操作memcache的使用测试总结 1.简介 memcache模块是一个高效的守护进程,提供用于内存缓存的过程式程序和面向对象的方便的接口,特别是对于设计动态web程序时减少对数据库的访问. memcache也提供用于通信对话(session_handler)的处理. 更多Memcache 模块相关信息可以到 http://www.danga.com/memcached/查阅. 1.1.memcache在php.ini中的配置项列表 memcache在php.ini中的配置项列表 名称 默

电子商务网站测试总结

从业电子商务网站测试一年多,很久没有进行测试的经验方面的总结了,今天对之前测试的电子商务网站进行了一次总结, 总体按照两种模式进行划分总结:1.按照测试类型    2.按照电子商务网站的系统架构 一.按照测试类型来划分 1. 兼容性 (1)主要是在浏览器兼容 (2)操作系统,主要体现在操作系统兼容 2.UI测试 (1)检查链接是否正确,是否存在空链接(可以使用xenu工具+手工查看)   (2)是否有文字错误信息 (3)产品价格是否有显示错误 (4)各个模块是否正常显示(侧栏.推荐商品.相似商品

某航空项目第三方接口测试总结及接口测试技术的探讨

XX项目第三方接口测试总结及接口测试技术的探讨 1. 了解第三方接口 1.1 第三方接口的概念 XX项目第三方接口也就是电子客票网站扩展接口,主要功能是为了满足用户通过对接口的调用来替代原来用户必须进入网站才能进行相关操作的需求,方便代理人(大客户)提高自有系统流程的自动化程度.常见的第三方接口为商旅网接口包括携程.去哪儿等OTA及一些较大的代理人网站等. 1.2 网站与第三方接口的关系 接口的业务功能与现有网站功能必须一致,用户使用接口生成的订单,也可以通过登录网站来进行处理,如用户可以在第三

DLL接口自动化测试总结

1. DLL接口测试方法介绍 在最近测试的项目中,系统给业务端提供DLL文件,业务端通过DLL文件中的C++接口实现系统功能,这就需要对DLL中的C++接口进行详细功能测试. 本文主要介绍项目测试中使用的DLL接口测试方法及基于AutoIT实现的DLL接口自动化测试方法. 1.1 VS2005 通过VS2005可以直接加载DLL文件中的C++接口,模拟业务端调用,传递一些参数值从而验证接口返回码等功能是否正确接口.这部分代码,类似与白盒测试中编写的驱动模块,需要有一定的C++编程基础. 项目初期

基于http请求的web接口性能测试总结

基于http请求的web接口性能测试总结 压测的目的:对于Web接口压测的目的最终是要在对数据库造成压力的情况下观察压测服务器的cpu是否达到预警值.memory是否发生激变甚至泄露.响应结果的error率以及数据库服务器读写方面的情况是否正常等等情况. 测试环境的准备 我们要准备压测服务器和压力机,并建立二者之间的联系. 压测服务器 用来提供服务的,也就是我们的测试服务器,上面发布的是压测分支,我们首先要基于压测基准分支拉一个压测分支并push到远端,然后把开发的代码合到压测分支上再push到

互联网App应用程序测试流程及测试总结

近年来随着移动互联网发展迅猛,APP也进行了爆发式的增长,相应的APP的测试检测就摆在每家企业眼前,以下是由国内应用安全检测团队-爱内测(www.ineice.com)的CTO为我们介绍App应用程序测试流程及测试总结: 1. APP测试基本流程 1.1流程图 仍然为测试环境 Pass 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先向主管确认项目排期. 1.3测试资源 测试任务开始前

Java 第二次测试总结

Java 第二次测试总结 1. 相关知识点总结 Java测试题循环与递归知识点 补充知识点: for循环语句:for(表达式1:表达式2:表达式3)表达式一负责完成变量的初始化!表达式2是值为boolean型的表达式,称为循环条件,表达式3用来休整变量,改变循环条件. 若switch语句中的表达式的值不与任何case的常量值相等,则执行default后面的若干语句. for(声明循环变量:数组的名字)意思为循环变量一次取数组中的每一个元素的值. Scanner类可创建对象,注意语句中next后的

jmeter性能测试总结

一.性能测试问题记录: Ⅰ.秒杀的失败率了在96.45%,原因 Query对于 活动的秒杀采用的是0.5秒,刷新缓存的策略在活动中优惠券被秒杀一空 下架前,短暂的时间内仍能够查询到 这个活动架构中采用了CQRS模式只保证了最终结果一直想,并不能保证实时一致性. Ⅱ.日志级别为Info,导致CPU很大一部分的是用来处理日志相关的功能, Ⅲ.异步输出日志能比同步输出的方式下,提升了接近100%的吞吐量 Ⅳ.代码中存在大量数据库连接使用未关闭的情况,导致后续事务无法获取数据库连接 Ⅴ.logstach