模拟试题 1

第二题

【题目描述】

给你两个日期,问这两个日期差了多少毫秒。

【输入格式】

两行,每行一个日期,日期格式保证为“YYYY-MM-DD hh:mm:ss ”这种形式。第二个日期时间一定比第一个日期时间要大两个日期的年份一定都是 21 世纪的年份。

【输出格式】

一行一个整数代表毫秒数。

【样例输入 1】

2000-01-01 00:00:00

2000-01-01 00:00:01

【样例输出 1】

1000

【样例输入 2】

0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7

2000-01-01 00:00:00

2000-11-11 00:00:00

【样例输出 2】

27216000000

【样例解释】

从前有座山。

天,这道题真是太恶心了!!!!这是我做过最恶心的暴力!!(没有之一!)

唉,做了半天还是没A。。。。(烦气,╭(╯^╰)╮)

气死我了。。。多加了一个零,然后找了1个小时才找出来的。。。。。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rn 31622400LL//一闰年的秒数
#define pn 31536000LL//一平年的秒数
using namespace std;
long long  ans;//一年365*24*60=525600分  525600*60=31536000秒  31536000*1000毫秒  暴不了long long
int n[3],y[3],r[3],h[3],m[3],s[3];//这样方便很多
int d1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//闰年二月29天,平年28天
int d2[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int judge(int x)//判断是否为闰年。判断闰年一般的规律为: 四年一闰,百年不闰,四百年再闰.
{
    if(x%100==0)
    {
        if(x%400==0) return  true;
        return  false;
    }
    else if(x%4==0) return true;
    return false;
}
int run(int x)
{
    long long q=0;
    if(judge(n[x])) for(int i=1;i<y[x];i++) q+=d2[i]*86400;
    else     for(int i=1;i<y[x];i++) q+=d1[i]*86400;
    q+=(r[x]-1)*86400+h[x]*3600+m[x]*60+s[x];
    return q;
}
int main()
{
    freopen("two.in","r",stdin);
    freopen("two.out","w",stdout);
    scanf("%d-%d-%d %d:%d:%d",&n[1],&y[1],&r[1],&h[1],&m[1],&s[1]);
    scanf("%d-%d-%d %d:%d:%d",&n[2],&y[2],&r[2],&h[2],&m[2],&s[2]);
    for(int i=n[1]+1;i<n[2];i++)//  计算他们两中间间隔的年,当年由于月份不全就不直接加一年内的秒数了。。
      if(judge(i)) ans+=rn;// 至于为什么要从n[1]开始,我们这样考虑,我们后面由于方便把它合并到一个函数中了,但是第一年与第二难相差的月份为第二年过去的月份+第一年剩下的月份
      else ans+=pn;//但是在函数中我们都写的是过去的月份,但是这样总月份-过去的月份不就等于剩下的月份吗?!
    if(judge(n[1])) ans+=rn;else ans+=pn;
    ans+=run(2);ans-=run(1);
    if(n[1]==n[2]) if(judge(n[1])) ans-=rn;else ans-=pn;
    if(ans==0) printf("0\n");
    else  printf("%I64d000",ans);
    return 0;
}

死亡(唉,这么简单的暴力当时我竟然没A。。。。。。。╭(╯^╰)╮)
【问题描述】
现在有?个位置可以打 sif,有? +1个人在排队等着打 sif。现在告诉你 个人每个人需要多长的时间打 sif,问你第? +1个人什么时候才能打 sif。 (前?
个人必须按照顺序来)
【输入格式】
第一行两个整数?,?如上所述。
接下来?行每行一个整数代表每个人所需要用的时间。
【输出格式】
一行一个整数表示答案。
【样例输入】
3 2
1
1
1
【样例输出】
1
【样例解释】
山里有座庙。
【数据规模与约定】
对于100%的数据,每个人所需用的时间不超过10 5 。
测试点 ? ? 测试点 ? ?
1 10 10 1 5000 500
2 20 10 2 100000 5000
3 50 10 3 100000 10000
4 1000 500 4 100000 20000
5 2000 500 5 100000 50000

代码:

#include<queue>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 100001
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
int n,m,a[N],mx;
int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘) f=-1; ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘; ch=getchar();}
    return x*f;
}
int main()
{
    freopen("death.in","r",stdin);
    freopen("death.out","w",stdout);
    n=read(),m=read();
    for(int i=1;i<=n;i++)
     a[i]=read();
    for(int i=1;i<=m;i++)
      q.push(0);//最开始时需要等的时间为0
     for(int i=1;i<=n+1;i++)
     {
         mx=q.top(); q.pop();
         q.push(mx+a[i]);//这样我们就一次求出了每个人节水是需要等的时间,为什么需要小根堆取最小?你排队打水的时候,你肯定去排的时间最短的时间的地方去打水啊。除非你吃饱了撑的
         if(i==n+1)
          {
              printf("%d",mx);
            return 0;
          }
     }
}

凝视
【问题描述】
背包是个好东西,希望我也有。
给你一个二维的背包,它的体积是? × ?。现在你有一些大小为1× 2和1×
3的物品,每个物品有自己的价值。你希望往背包里面装一些物品,使得它们的
价值和最大,问最大的价值和是多少。
【输入格式】
第一行一个整数?代表该测试点的数据组数。
对于每组数据,第一行有四个整数?,?,? 1 ,? 2 ,其中? 1 ,? 2 分别代表大小为
1× 2和大小为1 × 3的物品个数。
1 × 2 接下来一行有? 2 个数代表每个1 × 3物品的价值。
【输出格式】
对于每组询问,输出能够达到的价值最大值。
【样例输入】
1
2 3 2 2
1 2
1 2
【样例输出】
4
【样例解释】
庙里有座山。
【数据规模与约定】
2,? 1 ,? 2 ≤ 100。
70%的数据,?,? ≤ 100,? 1 ,? 2 ≤ 2000。
对于100%的数据,1 ≤ ? ≤ 10,1 ≤ ?,? ≤ 500,0 ≤ ? 1 ,? 2 ≤ 10000。

一看到这个题想到的莫过于二维背包了,然后我就屁颠屁颠的敲了个二维背包交了上去(然后。。。。爆零。。。。)

唉,正解是一个基于连通性的状压dp(显然,我不会。。。)

学长博客里有。。http://www.cnblogs.com/yanlifneg/p/6011579.html

那这个题我们就来看一个简单点的做法吧。。。(枚举)

我们可以看出我们只有两种选择,要么是1*3要么是1*2,那这样的话,我们若用若干个1*3的物品填充背包,那么剩下的空间一定使用1*2的物品来填充,那么,我们暴力枚举出需要用多少1*3的物品,这样我们所需的1*2的物品就可以用O(1)来算出来。

但是你有没有想到有一种特殊情况:如果一个背包的体积为4(2*2),这样的话,是不是就不能用1*3的物品来填充这个背包?!

以此类推,,当n=2,m%3=2时,铺到最后都会出现这种情况。。(这也就是背包为什么不对的原因。)

代码:

#include<cstdio>

#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 100010
using namespace std;
int t,n,m,n1,m1,a1[N],a2[N],s1[N],s2[N],ans;
int cmp(int x,int y)
{
    return x>y;
}
int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘) f=-1; ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘; ch=getchar();}
    return x*f;
}
int main()
{
    t=read();
    while(t--)
    {
        memset(s1,0,sizeof(s1));
        memset(s2,0,sizeof(s2));
        n=read(),m=read(),n1=read(),m1=read();
        if(n>m) swap(n,m);
        for(int i=1;i<=n1;i++)
         a1[i]=read();
        for(int i=1;i<=m1;i++)
         a2[i]=read();
        sort(a1+1,a1+1+n1,cmp);
        sort(a2+1,a2+1+m1,cmp);//我们用的时候肯定是先用体积相同但是价值高的的了。。
        for(int i=1;i<=n1;i++) s1[i]=s1[i-1]+a1[i];//其实这两个地方可以不这样写的 ,但是这样比较方便
        for(int i=1;i<=m1;i++) s2[i]=s2[i-1]+a2[i];//我们处理出选取几个当前个数的物品的价值,在后面就可以直接用了。
        ans=0; int j;
        for(int i=0;i<=m1;i++)//枚举放的1*3的物品的个数
        {
            if(i*3>n*m) break;//放不下了。。。
            j=(n*m-i*3)>>1;//能放得1*2物品的个数
            ans=max(ans,s1[j]+s2[i]);//我们一定是让放进去的价值最大
            if(j>n1) ans=max(ans,s2[i]+s1[n1]);//为什么?? 我们总共就有n1个1*2的物品,你还能多生出来几个啊。。。
            if(n==2&&m%3==2&&j==2) break;//这就是我们特殊判断的情况 n=2&&m%2=2&&j==2这种情况是我们恰能弄出2*2的 这种情况,                                         //并且我们当前所出的情况恰又刚好是剩下的体积为2*2的情况,这是我们是一定不能再放1*3的物品了的了。
        }
        printf("%d\n",ans);
    }
    return 0;
}
时间: 2024-10-11 05:48:14

模拟试题 1的相关文章

模拟试题B

模拟试题B 一.单项选择题(2′*8 =16′) 1.灰度等级为256级,分辨率为2048*1024的显示器,至少需要的帧缓存容量为( ) A)512KB B)1MB C)2MB D)3MB 2.在多形边面片的数量非常大的情况下,哪一个消隐算法速度最快? ( ) A)深度缓存算法(Z-Buffer) B)光线跟踪算法 C)画家算法 D)不确定 3.双线性光强插值法(Gouraud Shading)存在哪些问题?( ) A)光照强度在数值上不连续 B)生成多面体真实感图形效果差 C)生成曲面体真实

模拟试题C

模拟试题C 一.单项选择题(2′*14 =28′) 1.双线性法向插值法(Phong Shading)的优点是( ) A)法向计算精确 B)高光域准确 C)对光源和视点没有限制 D)速度较快 2.用编码裁剪法裁剪二维线段时,判断下列直线段采用哪种处理方法.假设直线段两个端点M.N的编码为1000和1001(按TBRL顺序)( ) A)直接舍弃 B)直接保留 C)对MN再分割求交 D)不能判断 3.下面哪个不是齐次坐标的特点( ) A)用n+1维向量表示一个n维向量 B)将图形的变换统一为图形的坐

计算机职称考试题库Internet模块操作练习模拟试题(一)

1.请为当前计算机添加连接到com1口的标准56000 bps调制解调器设备,要求不检测当前连接设备. 当前界面:开始à控制面板 方法一: 打开[电话和调整解调器选项]à[调整解调器]选项卡à[添加]按钮à选中[不要检测我的调制解调器设备……]à下一步à型号:标准 56000 bps 调制解调器à下一步à选定的端口:com1à下一步à完成 方法二: 添加新硬件à下一步à选择[是,我已经连接了此硬件]à下一步à列表拉到最后选择[添加新的硬件设备]à下一步à选择[安装我手动从列表选择的硬件(高级)]

2014年软考-信息技术处理员-模拟试题及答案【第一章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●在计算机内部用来传送.存储.加工处理的数据或指令都是以____(1)_B___形式进行的. A. 十进制码 B.二进制码 C.八进制码 D.十六进制码 ●如果一个存储单元能存放一个字节,那么一个32KB的存储器共有____(2)_B__

2014年软考-信息技术处理员-模拟试题及答案【第二章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●计算机网络的主要目标是实现____(16 )__C__. A.数据处理 B.文献检索 C.资源共享和信息传输 D.信息传输 ●Internet上,访问Web网站时用的工具是浏览器.下列____(17 )_A___就是目前常用的Web浏览

2014年软考-信息技术处理员-模拟试题及答案【第三章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●备注视图中的注释信息在文稿演示时____(31)__B__. A.会显示 B.不会显示 C.显示一部分 D.显示标题 ●Access 2000关系数据库是____(32)_D___的集合. A.数据 B.数据库对象 C.表 D.关系 ●

2014年软考-信息技术处理员-模拟试题及答案【第四章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●Office家族为用户提供了各种不同类型的模板.扩展名为.mdz的模板是____(41)D____中的模板. A.Word B.Excel C.PowerPoint D.Access ●在Excel中,选取一行单元格的方法是____(4

2014年软考-信息技术处理员-模拟试题及答案【第五章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●管理信息系统科学的3要素是系统的观点.数学的方法和____(51)A____. A.计算机的应用 B.计算机科学 C.计算机理论 D.计算机方法 ●知识产权可分为:____(52)___C_两类. A.农业产权和著作权 C.工业产权和著

2014年软考-信息技术处理员-模拟试题及答案【第六章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●Access数据库的类型是____(61)_C___. A.层次数据库 B.网状数据库 C.关系数据库 D.面向对象数据库 ●在Word文档操作中,经常利用____(62)_C___操作过程相互配合,用以将一段文本内容移到另一处. A.

2014年软考-信息技术处理员-模拟试题及答案【第七章】

51CTO学院,在软考备考季特别整理了"2014年软考信息技术处理员模拟试题及答案[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 查看汇总:2014年软考-信息技术处理员-模拟试题及答案[汇总篇]  ●办公自动化(OA)是计算机的一项应用,按计算机应用的分类,它属于____(1)D____. A.科学计算 B.辅助设计 C.实时控制 D.信息处理 ●下列关于软件的叙述中,错误的是____(2)A____. A.计算机软件系统由程序和相