TYZ11/13 解题报告

T1.two

时间计算

【题目描述】
给你两个日期,问这两个日期差了多少毫秒。
【输入格式】
两行,每行一个日期,日期格式保证为“YYYY-MM-DD hh:mm:ss ”这种 形式。第二个日期时间一定比第一个日期时间要大两个日期的年份一定都是 21 世纪的年份。
【输出格式】
一行一个整数代表毫秒数。
【样例输入 1】 2000-01-01 00:00:00 2000-01-01 00:00:01
【样例输出 1】 1000
【样例输入 2】 2000-01-01 00:00:00 2000-11-11 00:00:00
【样例输出 2】 27216000000
【样例解释】
从前有座山。
【数据范围与规定】 对于 10%的数据,两个日期相同。 对于 20%的数据,两个日期只有秒数可能不同。 对于 30%的数据,两个日期只有秒数、分钟数可能不同。对于 40%的数据,两个日期的年月日 一定相同。 对于 60%的数据,两个日期的年月一定相同。对于 80%的数据,两个日期的年份一定相同。 对于 100%的数据,两个日期一定都是 21 世纪的某一天,且第二个日期一定大于等于第一个日 期。

傻X题,不解释

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
ll jizhun;
struct nian{
	ll y,mt,d,h,mn,s;
};
nian a,b;
bool ifleap(ll x)
{
	if(x%100==0)
	{
		return x%400==0;
	}
	else
	return x%4==0;
}
ll mo_day[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
ll to_day(nian x)
{
	ll res=0;
	for(ll i=jizhun;i=3)))
	res++; 
	return res;
}
ll day_second(ll day)
{
	return day*24*60*60;
}
ll hours_second(nian x)
{
	ll res=0;
	res+=x.h*60*60,res+=x.mn*60,res+=x.s;
	return res;
}
ll year_second(nian x)
{
	ll t1=day_second(to_day(x));
	ll t2=hours_second(x);
	return t1+t2;
}
void opt(nian x)
{
	cout<
t2,依旧是傻x题

死亡
【问题描述】
现在有 M 个位置可以打 sif,有 N+ 1 个人在排队等着打 sif。现在告诉你 前 N 个人每个人需要多长的时间打 sif,问你第 N+ 1 个人什么时候才能打 sif。(前 N 个人必须按照顺序来)
【输入格式】 第一行两个整数 N,M 如上所述。 接下来 N行每行一个整数代表每个人所需要用的时间。
【输出格式】
一行一个整数表示答案。
【样例输入】 3 2 1 1 1
【样例输出】 1
【样例解释】
山里有座庙。
【数据规模与约定】 对于 100%的数据,每个人所需用的时间不超过 105。 测试点 N M 测试点 

N M 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

优先队列模拟一下,每次堆顶pop,加上下一个等机子的人的时间在push进去

最后取堆顶

注意是小根堆

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int maxn=100005;
priority_queue q;
int a[maxn];
int n,m;
int main()
{
	freopen("death.in","r",stdin);
	freopen("death.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		scanf("%lld",&a[i]);
		q.push(-a[i]);
	}
	for(int i=m+1;i<=n;i++)
	{
		scanf("%lld",&a[i]);
		ll nw=-q.top();
		q.pop();
		q.push(-(a[i]+nw));
	}
	ll w=q.top();
	cout<<-w<


T3,我是傻x

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

这道题首先容易想到背包

考试的时候前两道傻x题浪费时间太多了

所以敲了一个无效的程序

不按基本法的贪心在多组数据面前简直就是不堪一击的

然而有一组数据10次输出还是撑到了6行

来说正解

基于基本法的贪心

首先保证面积尽可能的被利用

最多只有一个格子不能被利用(1*2)

不被1*3利用的格子最多只有5个

剩下的是1*3或者1*2的都可以利用的

那么枚举到底1*3、1*2各自用了多少个

既然都是1*3的,那么当然是挑贵的先用了,所以说直接sort一下,然后前缀和调用

贪心要按基本法

最后再上代码

这次真是自己写得

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn=10005;
int a[maxn],b[maxn];
int n,m,n1,n2,q;
bool cmp(int xxx,int yyy)
{
	return xxx>yyy;
}
int main()
{
	freopen("eyesight.in","r",stdin);
	freopen("eyesight.out","w",stdout);
   cin>>q;
   while(q--)
   {
   	cin>>n>>m>>n1>>n2;
   	for(int i=1;i<=n1;i++)
   	scanf("%d",&a[i]);
   	for(int i=1;i<=n2;i++)
   	scanf("%d",&b[i]);
   	sort(a+1,a+1+n1,cmp);sort(b+1,b+1+n2,cmp);
   	for(int i=1;i<=n1;i++)
   	a[i]+=a[i-1];
   	for(int i=1;i<=n2;i++)
   	b[i]+=b[i-1];
   	int cha=(n%3==2&&m%3==2&&(n==2||m==2))?4:(n*m%3);
   	int lim=min(n2,(n*m-cha)/3);
   	int ans=0;
   	for(int i=0;i<=lim;i++)
   		ans=max(ans,b[i]+a[min(n1,(n*m-i*3)/2)]);
   	cout<
/*

啊啊啊省赛前停课一周我要死了

耳机里面炸响的只有avicii的demo

和无尽的bug

当然,并不是因为bug才不开心的

不开心也不是非得要人为我干什么

那个以孤独为食的人,已经被埋葬,但是我可以感受到,她的一些基因正在复活

也许这些也是我这个后来者,血脉中的一部分,蓬花的那些东西,又有多少是对的,又有多少是错的

我到底是个继任者,但我还是一个有责任同时也有权利担当的人

有的时候就是不开心了,也别去找别人

说的很过分的话,我原本就没打算活着把这些交给下一位倒霉的继任者

好好等着吧,尽管去好好享受生活吧,现在的这些,放在一年之前,简直就不敢想

你从来不想跌下神坛,所以说不敢想象

你从来不敢褪尽铅华,所以说在鸿沟面前一筹不展

我看到的,只是所有的悲伤的叹息

如果你收起你所有恶心的脾气与情绪,我会心平气地告诉你:

缺少了一些东西,又得到了一些东西
只要方向是正确的,
那些东西终究还是会找到的
也许就在明天,也许就在下一个街角
比起那些将自己的生命寄托于别人的废物(或者说这种废物也只有你一个(will be))
我有权利,去执行我的追寻;同时,为我所拥有的一切感到骄傲
而且,对你的决定,我毫不怀疑
就算出错,在天塌下来之前
只要你听我的
我会比你先发觉这一切

可怜虫啊,你这次算是遇到了一个暴君

这个数典忘祖的家伙,并不打算记得当初你的所有苦难与孤独啊

所以说,每次我都要说

有个JET LEE,不知比你们高到哪里去了,我曾经和他谈笑风生

*/


你可能感兴趣的:(算法)