AcWing 3767. 最小的值
题目:
给定两个长度为 n 的 01 数组 a1,a2,…,an 和 b1,b2,…,bn。
请你构造一个长度为 n 的正整数数组 p1,p2,…,pn。
要求 ∑i=1nai×pi>∑i=1nbi×pi 成立。
此外,maxi=1npi 需要尽可能小。
输出最小可能值。
输入格式
第一行包含整数 n。
第二行包含 n 个整数 a1,a2,…,an。
第三行包含 n 个整数 b1,b2,…,bn。
输出格式
输出 maxi=1npi 的最小可能值。
如果不存在满足条件的数组 p,则输出 −1。
数据范围
1≤n≤100,
0≤ai,bi≤1
输入样例1:
5
1 1 1 0 0
0 1 1 1 1
输出样例1:
3
输入样例2:
3
0 0 0
0 0 0
输出样例2:
-1
输入样例3:
4
1 1 1 1
1 1 1 1
输出样例3:
-1
输入样例4:
9
1 0 0 0 0 0 0 0 1
0 1 1 0 1 1 1 1 0
输出样例4:
4
代码:
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[105] = {0}, b[105] = {0};
int i;
for (i = 0; i < n; i++)
scanf("%d",&a[i]);
for (i = 0; i < n; i++)
scanf("%d", &b[i]);
int x = 0, y = 0;
for (i = 0; i < n; i++)
if (a[i] == 0 && b[i] == 1)
x++;
else if (a[i] == 1 && b[i] == 0)//标记一定有答案
y++;
if (y==0)
cout<<-1<<endl;
else
cout<<x/y+1<<endl;
return 0;
}
2766

被折叠的 条评论
为什么被折叠?



