首页 > 小苯的刷怪笼
头像 Sunstreamy
发表于 2026-05-19 10:29:53
设单次攻击次数为s,双击次数为d 则有s+d=k,s+2d=a 即d=a-k 因此对d这个固定值进行分析 如果d>a/2,虚空索敌,-1退出; 如果d<n/2,整个数组每个数至少是1,这种情况下肯定不能把整个数组变成0,-1退出; 构造策略采取控制前两个数,剩余n-2全部赋为1,这 展开全文
头像 AliLexiWalker
发表于 2026-05-19 00:44:28
将总血量分配为前两个怪物负责调节(其余怪物血量设为1),通过计算最少/最多可达攻击次数判断可行性并求出前两者的具体血量使得最优攻击次数为k。 void solve(){ int n,a,k;cin>>n>>a>>k; if(n==1){ 展开全文
头像 小男娘
发表于 2025-11-25 01:18:04
特判。以下均为。首先考虑小红的最优策略:贪心选择最左侧血量为正的怪物,然后攻击其及其右侧的怪物。考虑合法的范围,最小的分配方式是让所有的怪物都可以被双击消灭,最大的分配方式是将血量全部分配给最右侧的一个怪物,计算可得。当满足条件时,可以将血量全部分配给最右侧的两个怪物,具体分配方式见代码。 #inc 展开全文
头像 Starlight_Footprint
发表于 2026-05-19 22:12:47
#include <bits/stdc++.h> #define ll long long #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); using namespace std; const int N=2e5+5 展开全文
头像 飞鸢泛惊鸿
发表于 2026-05-21 12:26:49
import sys input = sys.stdin.readline def solve(): n,a,k=map(int,input().strip().split()) if n==1:#这种情况特判一下 if a==k: print 展开全文
头像 已注销
发表于 2026-05-21 20:27:08
#include <bits/stdc++.h> using namespace std; int main() { int n,a,k; while (cin >> n >> a >> k) { // 注意 while 处理多个 c 展开全文
头像 Drink0318
发表于 2025-12-16 15:07:07
def solve(): import sys # 读取输入:兼容多空格/换行分隔的输入格式,拆分后转为列表 input = sys.stdin.read().split() n = int(input[0]) # 目标构造数组的长度 a = int(inp 展开全文
头像 起名字这么难
发表于 2026-05-19 21:17:27
#include <iostream> using namespace std; int main() { long n, a, k; cin >> n >> a >> k; if (a < n) { 展开全文
头像 Bezime
发表于 2026-05-19 22:45:47
先贪心全填 , 减去 , 减去 ,如果 是奇数,那么 值的上限加 (这个 可以分配给第二个怪物血量)。 接着贪心将剩余血量分配给前两个怪物,第一个怪物血量加 ,其余的给第二个怪物。 最短代码,实现: #include<bits/stdc++.h> using namespace s 展开全文

等你来战

查看全部