GRYZ娱乐时刻
【题目描述】
hyxzc是一个高傲的人,他想把自己的宠物都升到100级(没办法,强迫症),今天是洛克王国4周年纪念日,所以奖励非常多,正当小洛克们欢快的庆祝周年的时候,坏坏的恩佐又出来捣乱了,(众所周知,恩佐是一个超级大坏蛋,总想一些办法去损害洛克王国,而守护洛克王国是每位小洛克的责任)。这次,恩佐无意在黑魔法中发现了召唤远古恶龙的方法。并且召唤了n条恶龙,而你的任务则是消灭这n条恶龙, 本次任务奖励有大量经验,能够让宠物更快的升级,所以hyxzc便心动了。
hyxzc一共有m个宠物可以召唤,而每个宠物的等级各不相同,等级为x的宠物只能干掉小于等于x的恶龙,且每只宠物只能干掉一只恶龙,因为宠物还要去找自己的小伙伴去玩耍呢,并且你需要花费x个洛克贝为宠物恢复活力。hyxzc可不是一个大方的家伙,他希望花最少的洛克贝来完成这个任务。而洛克王国的防沉迷告诉hyxzc,他只有1秒钟的时间去思考如何召唤宠物,于是hyxzc便向你求助,你只需要输出他的最少花费即可,若无法完全杀掉恶龙,则输出“Loowater is doomed!”。
【输入格式】
输入包含T组数据,每组数据的第一行为正整数n和m;以下n行每行为一个整数,即恶龙的等级,以下m行为一个整数,即每个宠物的等级,输入结束标记为n=m=0;
【输出格式】
对于每组数据,输出最少花费。
【样例输入】
2 3
5
4
7
8
4
2 1
5
5
10
0 0
【样例输出】
11
Loowater is doomed!
【数据范围】
0
对于20%的数据:0<=20;0<=100000;
对于40%的数据:0<=200;0<=100000;
对于60%的数据:0<=2000;0<=100000;
对于100%的数据:0<=20000;0<=100000;
自己的答案(贪心算法);
#include
#include
using namespace std;
#include
#include
int n,m;
int el[20001],cw[20001];
void px(int n,int m)
{
}
int main()
{
}
GRYZ追击时刻
XYD过完年后高高兴兴的回到了GRYZ,然后他发现可爱的Robot已经在这里等待了3天,由于Robot跑的很慢,所以她正在准备施展魔法,逮住 XYD。
所以,XYD一定要尽快赶回男生宿舍。
求XYD回到男生宿舍的最短时间,如果XYD回不到男生宿舍,就有可能被迫以身相许,那么他就会高兴的大喊一声“I Love xxx!!!”。(这就是很可怕的事情)
【输入格式】
第一行为正整数n和m;以下n行m列为地图。
【输出格式】
如果能成功回到男生宿舍输出最短时间,否则输出“I Love xxx!!!”(不包括双引号)
【样例输入】
3 3
D.*
…
.S.
【样例输出】
3
【样例输入】
3 3
D.*
…
..S
【样例输出】
I Love xxx!!!
自己的答案(正确):
#include
using namespace std;
#include
#include
#define M 55
int map[M][M],head=0,tail=0,q[M*M][2];
int xx[4]={0,0,1,-1};
int yy[4]={1,-1,0,0};
int tim[M][M],bu[M][M];
int n,m,xk,yk,xz,yz;
void input()
{
}
void search_time()
{
}
void search_bu()
{
}
int main()
{
}
GRYZ就餐时刻
【题目描述】
寒假,大家都回家过年去了,只有GRYZ苦逼的竞赛生们还在学校上课。众所周知,有人的地方就需要有饭,但是食堂的大爷们都回家了,我们只能依靠外卖。已知那是一个非常大的外卖店,有专业的盒饭生产设备,为了保证GRYZ的孩子们每顿饭能吃好吃的饭菜,它们总会将a点生产出的盒饭运往加热处加热后再运往b点装车。这些部门非常的高能,它们有时可以生产盒饭,有时又能变身成装车点(不要问我为什么)。
有些部门之间有专门的传送带连接,店长是个非常珍惜时间的人,他希望盒饭从生产出来到运走所花费的时间尽可能的短,但是店长又是一个超级懒人,所以他把计算的工作交给了你
【输入格式】
第一行两个整数n、m,n表示部门数量,m表示传送带数量。出于方便,1号部门是加热处。
接下来m行,每行三个整数u、v、w,表示有一条从u部门到v部门的传送带,传送过去需要w个单位时间。注意传送带是单向的。
接下来一个整数q,表示有q次运送。
接下来q行,每行两个数a、b,表示这一次要将产品从a部门运送到b部门。
【输出格式】
输出q行,每行一个整数,表示这次运送最少需要的时间。若没有传送方案,输出-1。
【样例输入】
5 5
1 2 3
1 3 5
4 1 7
5 4 1
5 3 1
3
4 2
5 3
2 3
【样例输出】
10
13
-1
【数据规模与约定】
30%的数据,n≤100,m≤500,w=1
60%的数据,n≤100,m≤5000
另20%的数据,q=1
100%的数据,2≤n≤3000,m≤100000,2≤a,b≤n,
q≤100000,1≤u,v≤n,1≤w≤10000
有些部门之间可能有多条传送带。
边表:一条边里储存着指向同一起点的上一条边,是边指向边
邻接表:点指向点,1—>3à5,表示1-3,和1—5这两条边,
由点指向点,好理解些
答案:
#include
using namespace std;
#include
#include
#define M 100001
#define N 3001
#define maxx 999999
struct Edge{
};
Edge edge1[M],edge2[M];
int dis1[N],dis2[N];
int n,m,head1[N],head2[N];
int visit1[N]={0},visit2[N]={0};
void add1(int,int,int,int);
void add2(int,int,int,int);
void djk();
void input();
void sc();
int main()
{
}
void input()
{
}
void sc()
{
}
void add1(int u1,int v1,int w1,int i)
{
}
void add2(int u1,int v1,int w1,int i)
{
}
void djk()
{
}