死亡

【问题描述】

现在有个位置可以打sif,有个人在排队等着打sif。现在告诉你前个人每个人需要多长的时间打sif,问你第个人什么时候才能打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<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#define N 100100
using namespace std; int n,m;
int t[N];
long long ans;
priority_queue<long long> q;
int main()
{
freopen("death.in","r",stdin);
freopen("death.out","w",stdout); scanf("%d%d",&n,&m);
for (int i=;i<=n;i++) scanf("%d",&t[i]);
for (int i=;i<=m;i++)
q.push();
for (int i=;i<=n;i++)
{
long long k=q.top();
q.pop();
k=-k;
k+=t[i];
k=-k;
q.push(k);//取相反数压入栈中
}
ans=-q.top();
cout<<ans<<endl; fclose(stdin);
fclose(stdout); return ;
}

优先队列

                                     凝视

【问题描述】

背包是个好东西,希望我也有。

给你一个二维的背包,它的体积是。现在你有一些大小为和的物品,每个物品有自己的价值。你希望往背包里面装一些物品,使得它们的价值和最大,问最大的价值和是多少。

【输入格式】

第一行一个整数代表该测试点的数据组数。

对于每组数据,第一行有四个整数,其中分别代表大小为和大小为的物品个数。

接下来一行有个数代表每个物品的价值。

接下来一行有个数代表每个物品的价值。

【输出格式】

对于每组询问,输出能够达到的价值最大值。

【样例输入】

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.n1,n2<=10000.

题解:由于能装上1*3的物品,那么一定能装上1*2的物品。因此可以枚举1*3的物品,然后根据它剩下的体积装1*2的物品。找到最大价值。如果全部装1*3的物品,那么剩下的体积为1或者2,但有一种特殊情况需要考虑。注意当n==2或m==2是,若此时n%3==2&&m%3==2,那么剩下的4体积无法装入1*3的物品。

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<ctime>
#include<queue>
#define N 10100
using namespace std;
int t,n,m,n1,n2,k,ans();
int a1[N]={},a2[N]={};
bool cmp(int x,int y)
{
return (x>y);
}
int main()
{
freopen("eyesight.in","r",stdin);
freopen("eyesight.out","w",stdout);
scanf("%d",&t);
while (t--)
{ scanf("%d%d%d%d",&n,&m,&n1,&n2);
a1[]=a2[]=;
for (int i=;i<=n1;i++) scanf("%d",&a1[i]);
for (int i=;i<=n2;i++) scanf("%d",&a2[i]);
sort(a1+,a1++n1,cmp);
sort(a2+,a2++n2,cmp);
for (int i=;i<=n1;i++) a1[i]+=a1[i-];
for (int i=;i<=n2;i++) a2[i]+=a2[i-];
if ((n%==)&&(m%==)&&(n==||m==)) k=;
else k=n*m%;
ans=;
n2=min(n2,(n*m-k)/);
for (int i=;i<=n2;i++)
ans=max(ans,a2[i]+a1[min(n1,(n*m-i*)/)]);
cout<<ans<<endl;
} fclose(stdin);
fclose(stdout); return ;
}

贪心

清北第一套题(zhx)的更多相关文章

  1. 【清北学堂2018-刷题冲刺】Contest 6

    Task 1:子集 [问题描述]  若一个集合S中任意两个元素x和y,都满足x⊕y<min⁡(x, y) ,则称集合S是"好的".其中⊕为按位异或运算符.现在给定一个大小为n ...

  2. 【清北学堂2018-刷题冲刺】Contest 5

     这三个题写了一天半,第一个题写了大概一整天.出题人劝我从后往前写,我不听,结果T1想了+调了一天QWQWQ Task 1:序列 [问题描述]  定义一个"好的序列"为一个长度为M ...

  3. 【清北学堂2018-刷题冲刺】Contest 4

    Task 1:序列 [问题描述]  小H原本有一个由连续的正整数组成的序列,如{4,5,6}或{10,11,12,13,14,15,16},但是她最近睡眠不足,只能记得其中的一些数字.她想知道,她最少 ...

  4. 【清北学堂2018-刷题冲刺】Contest 2

     这场比赛的T1相当智熄.由于至今无法理解题意,我只能解出前20分.诸位dalao谁能比较好地理解题意(独立性)的,请联系我,不胜感激.  在此本蒟蒻只能贴上题面: Task 1:选举 [问题描述] ...

  5. 【清北学堂2018-刷题冲刺】Contest 1

    Task 1:最小公倍数  输入n,求n与246913578的最小公倍数.  结果对1234567890取模. [样例输入] 3 [样例输出] 246913578 [数据规模和约定] 对于30%的数据 ...

  6. 清北考前刷题day1下午好

    水题(water) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每张牌长和宽 ...

  7. 【清北学堂2018-刷题冲刺】Contest 7

    Task 1:小奇采药 [问题描述]  小奇是只天资聪颖的喵,他的梦想是成为世界上最伟⼤的医师.  为此,他想拜喵星球最有威望的医师为师.  医师为了判断他的资质,给他出了⼀个难题.  医师把他带到⼀ ...

  8. 【清北学堂2018-刷题冲刺】Contest 8

    Task 1:关联点 [问题描述]  ⼆叉树是⼀种常用的数据结构,⼀个⼆叉树或者为空,或者由根节点.左⼦树.右⼦树构成,其中左⼦树和右⼦树都是⼆叉树. 每个节点a 可以存储⼀个值val.  显然,如果 ...

  9. 10.24afternoon清北学堂刷题班

    /* 这是什么题... */ #include<iostream> #include<cstdio> #include<cstring> #include<q ...

随机推荐

  1. 获取windows系统信息

    在应用程序中,有时需要在界面中显示计算机的硬件信息和进程信息.在.Net中提供了可以查询信息的类.Management类,在程序中添加应用后进行使用. 1 属性 类似的属性介绍可见下面: 属性介绍 根 ...

  2. 【设计模式 - 17】之中介者模式(Mediator)

    1      模式简介 中介者模式的定义: 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显式地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 中介者模式中的组成部分: 1. ...

  3. UIButton图文上下对齐

    - (void)centerImageAndTitle:(float)spacing { // get the size of the elements here for readability CG ...

  4. 坚持c++,真正掌握c++(2)

    在c++中对c中的输入输出进行了扩展,採用了面向对象的设计方法设计了c++中的输入输出(IO).输入输出依照操作的对象分类可分为:1. 标准IO(对计算机的键盘或者显示器进行读写操作).2. 文件IO ...

  5. HTTP协议 状态码详解

    http://www.cnblogs.com/TankXiao/archive/2013/01/08/2818542.html

  6. PHP中的循环while、do...while、for、foreach四种循环。

    php中的while循环,循环执行代码块制定的次数,或者当指定的条件为真时循环执行代码块. 在我们编写代码是时候,我们经常需要一块代码块重复执行多次.我们就可以使用while循环语句来完成这个任务. ...

  7. AS插件开发 RemoveButterKnife从构思到实现

    ReomveButterKnife插件 这是一个用于移除代码中对ButterKnife使用的AS插件,接下来我们将从头开始讲讲这个插件的开发过程 地址是 https://github.com/u3sh ...

  8. ASP.NET 动态属性筛选和分页绑定

    分页控件为:AspNetPager.dll 我们先建立一个产品属性名称表 CREATE TABLE ProductAttr ( ,) NOT NULL primary key, [ParentID] ...

  9. 使用strut2要注意的问题

  10. 学习java随笔第一篇:搭建java平台(java se)

    电脑系统:windows8 在这里介绍一下java平台的3个版本: Java SE--Java Standard Edition,Java的标准版,主要用于桌面级的应用和数据库开发. Java EE- ...