2018湖南 嘉傑杯 ACM省賽

2021-08-27 14:06:13 字數 1449 閱讀 3704

目錄

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次一樣複習模板,不過頹廢倒是很快就困了,比上場湘潭睡得好...