请教各位吧友
炉石传说吧
全部回复
仅看楼主
level 11
顶针☔️ 楼主
这题怎么做
2021年05月31日 04点05分 1
level 17
楼上正解,跟我想的一样
2021年05月31日 05点05分 5
level 9
哪个nt写的题面,默认都打过炉石是吧😅
2021年05月31日 05点05分 7
level 9
出题人从题面到数据范围都给我看麻了,题面讲的不清不楚,结果题目本质就是****背包,数据范围放个1秒10^8,真有他的。当然,要是题解是比n^2*max(y)渐进更优我就承认我是sb
2021年05月31日 05点05分 9
题目范围的y是小于1e4的,楼主纯属门锁使用者没拍清楚,另外就是这个题在比赛中没有任何选手因为看不懂题面而提问[汗]
2021年06月02日 00点06分
level 9
//不知道要求什么语言,总之先用js
function kuangluan(cards){
let index = 0;
let total = 0;
let result = 0;
cards.map(([atk]) => total += atk);
for(let [atk, life] of cards){
//if(atk <= 0) continue;
let cost = [];
for(let i = 0, len = cards.length; i < len; i ++){
if(i == index) continue;
let [atk2, life2] = cards[i];
let remain = life;
while(remain > 0 && life2 > 0){
remain -= atk2;
life2 -= atk;
}
cost.push([life2 > 0 ? -1 : life - remain, i]);
}
cost.sort();
function travel(remain, deep, res){
if(remain <= 0 || !cost[deep]) {
if(remain <= 0){
res += atk;
}
result = res < result ? result : res;
return;
}
let [atk2, life2] = cards[cost[deep][1]];
travel(remain, deep + 1, res);
if(cost[deep][0] < 0) return;
remain -= cost[deep][0];
if(remain + atk2 > 0) res += atk2;
travel(remain, deep + 1, res);
}
travel(life, 0, 0);
index ++;
}
return total - result;
}
console.log(kuangluan([[1,1],[1,3],[2,2],[3,5]]));//3
console.log(kuangluan([[1,3],[5,4],[3,5],[1,1],[1,1],[1,1]]));//1
console.log(kuangluan([[6,7],[6,8],[1,1],[1,1],[1,1]]));//2
//经开发者工具验证答案无误
2021年05月31日 11点05分 11
大体思路:先算当前卡打其他每张卡各需要消耗多少血保存在数组中,然后按耗血量从小到大排序,然后将数组扩展成二叉树,第n层二叉树的根节点是数组的第n项,每个根节点的两个分支分别代表跳过这个节点或者与这个节点战斗到死,对二叉树先序遍历求每条路径减少场功的总量,取其中的最大值即可
2021年05月31日 11点05分
@演员羊🐑 好家伙,什么985
2021年05月31日 12点05分
回复 Rx**鱿 :不不,985的看不懂。。。
2021年06月13日 16点06分
level 12
这么糊你们是怎么看清题目的,我都行牌照导师伺候了
2021年05月31日 15点05分 13
level 15
硬核
2021年05月31日 18点05分 14
level 10
炉吧吧友文化素质不错啊
2021年05月31日 23点05分 16
level 9
看不清楚。
如果有运动现象。就用L=kmv计算。
如果看得不是很清楚。就用看不清楚计算。
如果看得不太清楚。就用看得不是很清楚计算。
如果看得比较清楚。就用看得不太清楚计算。
如果看得很清楚。就用看得比较清楚计算。
2021年06月01日 01点06分 17
1