本文共 579 字,大约阅读时间需要 1 分钟。
原题链接:
突破口:其实每一次能到达城市K的蚂蚁数是由a[i]当中最小的那个决定的。第一批蚂蚁a[min]只,到达K城市的时间为K-1,此后每过一秒就有a[min]只蚂蚁又到达城市K,故总时间为ans=k-1+[ (n-a[min])/a[min] ](向上取整)=k-2+[ n/a[min] ]。代码如下:
#include#include #include #include typedef long long ll;using namespace std;const int inf=0x3f3f3f3f;const int maxn=1e5+5;ll ants[maxn];int main(){ int T,k,i,j; ll ans,mim,n; //n要long long型,就因为这个WA了好几遍唉ε=(´ο`*))) cin>>T; while(T--) { ans=mim=0; cin>>n>>k; for(i=2;i<=k;i++) { cin>>ants[i]; if(i==2) mim=ants[i]; else if(ants[i] =n) { cout< <
转载地址:http://fddci.baihongyu.com/