NC224679. 比那名居的桃子
描述
输入描述
第一行有两个正整数 和 ,分别代表桃子的有效期总天数,以及桃子效果的持续天数。(桃子的有效期是指,无论桃子在何时服用,桃子的特殊效果只在这段时间之内有效)第二行有 个正整数 ,分别代表每天可以获得的快乐值。第三行有 个正整数 ,分别代表每天可以获得的羞耻度。
输出描述
一个正整数,代表小红是第几天吃下桃子的。
示例1
输入:
4 2 3 5 1 7 4 6 5 1
输出:
3
说明:
选择在第三天吃下桃子,可以获得8快乐值和6羞耻度。C 解法, 执行用时: 730ms, 内存消耗: 1876K, 提交时间: 2023-03-10 20:04:05
#include<stdio.h> int main() { long long int n,k,a[100005],b[100005],i,j; long long int day,kl=0,xc=0,x,y; scanf("%lld %lld",&n,&k); for(i=0;i<n;i++) scanf("%lld",&a[i]); for(i=0;i<n;i++) scanf("%lld",&b[i]); for(i=0;i<n;i++) { x=0; y=0; for(j=i;j<i+k&&j<n;j++) { x=x+a[j]; y=y+b[j]; } if(x>kl) { day=i+1; kl=x; xc=y; } else if(x==kl&&y<xc) { day=i+1; xc=y; } } printf("%lld",day); return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 780ms, 内存消耗: 1908K, 提交时间: 2023-03-13 15:07:09
#include<bits/stdc++.h> using namespace std; long long n,k,i,j,a[100010],b[100010]; int main() { long long sum=0,h=1e9,x,y,t=1; cin>>n>>k; for(i=0;i<n;i++)cin>>a[i]; for(i=0;i<n;i++)cin>>b[i]; for(i=0;i<n;i++){ x=0;y=0; for(j=i;j<i+k&&j<n;j++){ x+=a[j]; y+=b[j]; } if(x>sum){ t=i; sum=x; h=y; } else if(x==sum&&h>y){ t=i; h=y; } } cout<<t+1; return 0; }
Python3 解法, 执行用时: 350ms, 内存消耗: 36328K, 提交时间: 2022-10-26 13:27:26
n,k = map(int,input().split()) happy = list(map(int,input().split())) shay = list(map(int,input().split())) res = [] nowhap,nowshy=sum(happy[:k]),sum(shay[:k]) for i in range(len(happy)-k+1): res.append([nowhap,nowshy,i+1]) if i+k ==n:break nowhap=nowhap-happy[i]+happy[i+k] nowshy=nowshy-shay[i]+shay[i+k] res.sort(key=lambda x : -1000000*x[0]+100*x[1]) print(res[0][2])