T1:Apple
每次取(n-1)/3+1个苹果,不断去用n减掉就可以了。当第一次n%3==1时,就是第n个苹果被拿掉的时候。(第n个苹果不管怎么拿,都在最后,所以不用担心)。代码就不放了,太水了。
T2:Road
贪心。而在本题中,因为油箱无限,所以我在第i个站点时,我会在1-i所有站点中最便宜的站点买油。然后用前缀和求一下路程。
注意事项:
1.十年OI一场空,不开long long见祖宗
2.会有剩余的油
然后是代码:
#include <bits/stdc++.h>
using namespace std;
int v[500005],a[500005];
int main(){
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
long long n,d;
cin>>n>>d;
for(int i=1;i<n;i++)
cin>>v[i];
for(int i=1;i<=n;i++)
cin>>a[i];
long long ans=ceil(1.0*v[1]/d)*a[1];//价格
long long temp=a[1];//单价
long long fuel=ans/temp;//油量