牛客网NC31、29-20.8.1-贪心
程序员文章站
2024-02-12 22:41:58
...
NC31
链接:牛客网NC31
题意、输入、输出:
分析:无
思路:遇到一个比前个数字小的就从这个数字开始往后的区间都加上他们之差加1,也就是操作他们之差加1次
代码:
import java.util.*;
public class Solution {
/**
*
* @param array int整型一维数组 array
* @return long长整型
*/
public long IncreasingArray (int[] array) {
// write code here
long sum=0;
for(int i=1;i<array.length;i++){
if(array[i]<=array[i-1]){
sum+=array[i-1]-array[i]+1;
}
}
return sum;
}
}
NC29
链接:
牛客网NC29
题意、输入、输出:
分析:无
思路:看人能承受多少下不死,皮卡要承受多少次才死,
第一次能打死皮卡就减去皮卡的次数,否则,皮卡的次数减去人的次数,第二次之后人的次数都是第一次的次数减1,因为回血不能出手,其他同第一次,第一次后,皮卡直接除人的次数,为了不超时
代码:
import java.util.*;
public class Solution {
/**
*
* @param HP long长整型 HP
* @param ACK long长整型 ACK
* @param HP2 long长整型 HP2
* @param ACK2 long长整型 ACK2
* @return long长整型
*/
public long Pokemonfight (long HP, long ACK, long HP2, long ACK2) {
// write code here
long ans=0;
long cnt1=HP/ACK2+(HP%ACK2==0?0:1);
long cnt2=HP2/ACK+(HP2%ACK==0?-1:0);
if(ACK>=HP2||ACK*2>=HP2&&ACK2<HP)return -1;
long dam=Math.min(cnt1,cnt2);
cnt1-=dam;
cnt2-=1;
ans+=dam;
if(cnt1<=0)return ans;
dam=Math.min(cnt1,cnt2);
long cnt=cnt1/dam;
ans+=cnt*(dam+1)+(cnt1%dam==0?0:cnt1%dam+1);
return ans;
}
}