NC26158. I. 大吉大利
描述
输入描述
第一行一个正整数 ,第二行 n 个正整数 ,第三行,n-1 个正整数,第 i 个表示 。
输出描述
输入自己需要弃置的最少金币,如果无解输出 -1。
示例1
输入:
3 3 2 1 1 1
输出:
0
示例2
输入:
3 3 3 3 3 3
输出:
2
示例3
输入:
2 3 10 5
输出:
2
C++ 解法, 执行用时: 55ms, 内存消耗: 1964K, 提交时间: 2021-10-22 15:10:10
#include<iostream> #define ll long long using namespace std; const ll N=5e5+5; ll a[N],b[N]; ll n,k=0; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=2;i<=n;i++) cin>>b[i]; for(int i=2;i<=n;i++){ if(a[i]>=a[1]&&a[1]) { a[i]-=a[1]; int m=a[i]/b[i]+1; k+=m; a[1]-=m; } } if(a[1]<=0) cout<<-1<<endl; else cout<<k<<endl; }
Python3 解法, 执行用时: 151ms, 内存消耗: 21680K, 提交时间: 2021-07-25 18:29:50
n=int(input()) a=list(map(int,input().split())) b=list(map(int,input().split())) ans=0 if a[0]<0: print(-1) else: for i in range(1,len(a)): if a[i]>=a[0] and a[0]>0: a[i]-=a[0] m=int(a[i]/b[i-1]+1) ans+=m a[0]-=m if a[0]>0: print(ans) else: print(-1)