两题都是题目看起来贼复杂但是,看明白了很简单的那种。但是第二题死活有个用例没过思路很明显就是一个二分查找。不知道哪里没考虑清楚
题目:小明是一名魔法师,有一天他在和一个怪物战斗,小明会n种法术,释放第i种法术需要法力为si,且在整场战斗中只能释放一次,在第一个回合他可以释放0、1或者2种法术,释放2种法术总共消耗的法力值为这两种法术各自消耗的法力值之和,一回合消耗的法力值不能超过法力值的上限,且每回合刚开始他剩余的法力值会恢复到法力值上限。为了打出更高的伤害,他需要在最多k回合以内将每种法术释放一次,请问他法力上限至少是多少(即k个回合内每个回合需要使用的法力最大值最大值的最小理论值)。输入描述:第一行包含两个正整数n和k,分别表示法术数量和回合数。接下来一行包含n个正整数s1,s2,……sn为了释放n种法术所需要的对应法力值。彼此用空格隔开。其中 1<=n <=2k <=100000,1<=si<=100000.数据保证si按照从小到大的顺序给出,即s1<s2<=…….sn。输出描述:输出他需要的法力上限做少为多少
顺便贴一下第一题,相对简单不少
某银行将客户分为若干优先级,1级最高,5级最低,当你需要在银行办理业务时,优先级高的人可以随时插到优先级低的人前面。现在给出一个人员来和银行办理业务的时间序列,请你在每次办理银行业务时输出客户的编号。如果同时有多个优先级相同的用户,则按照先来后到的顺序办理。输入第一行是一个正整数,表示输入序列中的事件数量。其中n最大500,最小是1的整数。接下来一共n行输入,每一行的第一个字母为a或者p。当输入为a时,后面会有两个正整数num和x,表示到来的客户编号为num,优先级为x;当字符为p时,表示当前优先级最高的客户去办理业务。输出包含若干行,对于每一个p,输出一行,仅仅包含一个正整数num,表示对应客户编号。
思路:维护一个优先级队列,按顺序和等级添加,头一名出队就行。
#23届找工作求助阵地#