目錄
i、買一送一
h、千萬別用樹套樹
f、use fft
theme:n個商店,標號1~n,每個商店賣標號為ai的商品(不同店可能賣相同商品),給出這些商店間的單向連線關係,求從商店1走到商店i(2<=i<=n),在兩不同的店各買乙個商品的二元組的不同(x,y)個數f(i)。
solution:首先要清楚這是乙個圖論題。先用臨街表存點和邊。由題意可知發f(i)=f(i-1)+curcnt-precnt;即將f(i)分解為第二個商品在商店i買和不在商店i買兩種情況,不在則為f(i-1),在則為以1到n的某條路徑中不相同商品作為第乙個購買商品,即curcnt,又在該條路徑上可能已存在商品ai了,這時就要相應減去以上乙個ai作為第二個商品的個數,即precnt。
模型其實是以結點1為根節點的一棵樹,所以編號i可能在樹上不止乙個結點,出現次數取決於從1到i的路徑條數。所以結果加起來即可
#includeusing namespace std;
typedef long long ll;
#define far(i,t,n) for(int i=t;iv[100010];
int a[100010];
ll ans[100010];
int vis[100010];
int h[100010];
int tot;
void dfs(int t)
if(bj[root])updata(root,l,r);
int mid=(l+r)>>1;
if(s<=mid)
add(root<<1,s,e,delta,l,mid);
if(e>mid)
add((root<<1)+1,s,e,delta,mid+1,r);
t[root]=t[root<<1]+t[(root<<1)+1];
//cout<<"t"<=r)
return t[root];
//cout<>1;
ll m1=0,m2=0;
if(i<=mid)
m1=query(root<<1,i,j,l,mid);
if(j>mid)
m2=query((root<<1)+1,i,j,mid+1,r);
return m1+m2;
}int main()
else if(a[i][j]=='>')
return cnt;
}int main()
{ while(~scanf("%d%d",&n,&m))
{for(int i=0;ivv<
2 4vvvv
>^^<
4 2v>
<>
<>
^>
3 4^>^>
v>>>>
2 9^<^<^<^<^
223*/
2018湖南省賽總結
2018湖南省賽總結 省賽銅牌,有點可惜,被乙個打表題卡了三個小時。其實這題完全可以早點出的。寫一下省賽比賽的心路歷程吧。這個對以後的比賽有用。9點比賽,8.55發的題面。發完題面之後,立馬發現a題是簽到題,立馬丟給zqg寫,很快一發a了a題,之後的題都沒有那麼明顯的簽到,讀完b題之後,和隊友說題意...
ACM2016湖南省賽2016
time limit 5 sec memory limit 128 mb submit 339 solved 206 submit status web board 給出正整數 n 和 m,統計滿足以下條件的正整數對 a,b 的數量 1.1 a n,1 b m 2.a b 是 2016 的倍數。輸入...
2018HNCPC湖南省賽遊記
蒟蒻划水記 acm生涯第3場比賽,賽前吹水 哇我銀銅都拿過了,今天可能要打鐵了,然後ljn 別水了快看題,說不定拿金了 還是十分歡樂,然而並沒有想到某究極大腿在暗示 是時候展示真正的技術了。前一天晚上看szh打osu!然後一起拳皇,並沒有像前2次一樣複習模板,不過頹廢倒是很快就困了,比上場湘潭睡得好...