序言:博客是為了別人寫?還是自己寫,在我看來,博客可以幫助我記錄自己的知識的歡愉,以別人的角度去審視自己的想法,博客幫助我記錄自己的成長,也等待著一位位有緣人,
好了,不多說了,進入正題,回去做了做coderbeginner166的題,看到了一串非常有感覺的代碼,還是一樣的簡潔明了,此處,原題鏈接
https://atcoder.jp/contests/abc166/tasks/abc166_e
原題決議在此

決議:滿足題目要求的可能性就是這樣,數理化分析后,Li(較小數的對應運算式)為i+h[i],較大數的運算式Ri為i-h[i],找到相等的就可以了,
代碼如下:
#include<stdio.h> int main(){ int i,n,a[200002],b[200002]={0}; long long c=0; scanf("%d",&n); for(i=0;i<n;i++)scanf("%d",&a[i]); for(i=0;i<n;i++){ if(i+a[i]<=n)b[i+a[i]]++; //較小數的算式為i+h[i] if(i-a[i]>=0)c+=b[i-a[i]];//較大數算式與較小數算式相等時,加上這些可能,由于較大數在較小數后面出現,
//不會出現漏記的情況,同時 //極大的節省了計算時間和記錄空間,完美,這是我給出的圖解(ps:不要計較美術,問就是靈魂畫師) }printf("%lld",c); }
今天也要加油噢(? •_•)?!CRY
今日贈言:習慣細節決定成敗(對于我這種太過潦草的人來說,制約非常大)


感謝一路有你相伴
滿意的話給我點個贊b( ̄▽ ̄)d把,(瘋狂暗示)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/30372.html
標籤:C#

printf(