c++ - 给定代码不适用于给定问题
问题描述
我没有该站点正在检查的案例,它仅提供了下面给出的示例。
输入 输入 的第一行包含一个整数 T,表示测试用例的数量。T 测试用例的描述如下。每个测试用例的第一行包含一个整数 N。第二行包含 N 个空格分隔的整数 a1,a2,...,aN。第三行包含 N 个空格分隔的整数 d1,d2,…,dN。
输出 对于每个测试用例,打印包含一个整数的单行——国王获得的盾牌的最佳防御值,或者如果厨师可以被扔进蛇坑,则为 -1。
约束 1≤T≤100 3≤N≤100 1≤ai,di≤104 对于每个有效 i
示例输入
2
4
1 1 4 1
3 4 2 1
7
5 4 5 4 5 4 5
3 2 4 7 2 5 9
示例输出
3
-1
解释
示例案例1:士兵1可以被士兵2和/或士兵4攻击。如果只有士兵2攻击他,则攻击威力为1。如果只有士兵4攻击他,则攻击威力再次为1。如果他们一起攻击,攻击的力量是 2。在这些情况下,士兵 1 都会活下来。
士兵2可以被士兵3攻击,攻击力为4。他的盾牌防御值为4,这还不够,所以在这种情况下,士兵2会死。最好的安全选择是士兵1,防御值3。
案例 2:没有士兵能保证在战斗中幸存,所以答案是 -1。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
cin>>T;
if(T > 100 || T<1) return 0;
do{
vector<long int> ans;
int N;
cin>>N;
if(N > 100 || N<3) return 0;
vector<int> attackArray(N), defArray(N);
for (int i =0; i<N; i++) {
cin>>attackArray.at(i);
}
for (int i =0; i<N; i++) {
cin>>defArray.at(i);
}
if (defArray.at(0) > attackArray.at(1) &&
defArray.at(0) > attackArray.at(N-1) &&
defArray.at(0)> attackArray.at(1) + attackArray.at(N-1)){
ans.push_back(defArray.at(0));
}
if (defArray.at(N-1) > attackArray.at(0) &&
defArray.at(N-1) > attackArray.at(N-2) &&
defArray.at(N-1)> attackArray.at(0) + attackArray.at(N-2)){
ans.push_back(defArray.at(N-1));
}
for (int i =1; i<N-1; i++) {
int nexti, previ;
nexti = i + 1;
previ = i - 1;
if (defArray.at(i) > attackArray.at(nexti) &&
defArray.at(i) > attackArray.at(previ) &&
defArray.at(i)> attackArray.at(nexti) + attackArray.at(previ)){
ans.push_back(defArray.at(i));
}
else {ans.push_back(-1); break;}
}
sort(ans.begin(), ans.end(), greater<int>());
cout<<ans[0]<<endl;
T--;
}while (T !=0);
return 0;
}
解决方案
推荐阅读
- perl - 这是一种有效的插入排序形式吗?
- python-3.x - H2OConnectionError: 意外的 HTTP 错误: HTTPConnectionPool(host='localhost', port=54321):
- java - 如何在没有任何主类的情况下在 netbeans IDE 中运行 Java 小程序
- php - 通过php将数据保存到postgres
- c++ - cpp项目中.fdf和.h文件的区别
- java - 防止在 webView 中使用键盘
- python - 蟒蛇 | 合并一个文件夹中的多个 csv (100+) 文件,并考虑 csv 标头
- php - 尝试将数据插入数据库表但没有任何反应?
- c# - 如何在 asp.net core 2.0 中上传大文件
- javascript - 谷歌地图地理编码问题