2015浙江省賽

2021-07-02 12:08:17 字數 2461 閱讀 2358

zoj 3872 :beauty of array 

對於每個數,計算這個數被累加的次數。找到這個數左邊這個數出現的地方,在這之間的所有數的數量*這個數後面的數的數量,即為這個數被計算的次數

#include

#include

typedef

long

long ll;

int a[1000005],post[1000005];

int main()

printf("%lld\n",ans);

}}

zoj 3869 ace of aces 

水題:

#include

#include

#include

using

namespace

std;

int hash[1005];

int main()

int ans=0;

for(int i=0;i<=1000;i++)

int flag=0;

for(int i=0;i<=1000;i++)

if(flag==1) printf("%d\n",ans);

else

}}

zoj 3878 convert qwerty to dvorak 

用陣列對應轉換一下

#include

char s[1000005];

int main()asdfghjkl:\"zxcvbnm<>?";

char b[200]="\',.pyfgcrl/=aoeuidhtns-;qjkxbmwvz{}\"<>pyfgcrl?+aoeuidhtns_:qjkxbmwvz";

while(scanf("%c",&s[l++])!=eof)

int k=0;

while(b[k]!='\0')

for(int i=0;ifor(int j=0;jif(s[i]==a[j]) }}

printf("%s",s);

}

zoj 3870 team formation 

剛開始看錯題了,每組只有兩個人,看成任意多個了 

對每個數,轉化為二進位製看, 其最高位右邊的0位置上,對應的最高位在這個位置上的數的個數,即為這一位上的個數,累加起來就可以了

#include

#include

#include

using

namespace

std;

int a[100005],b[50];

int cmp(int a,int b)

//b[j]:最高位為j的數量

int main()}}

int ans=0;

for(int i=0;iint j;

for(j=30;j>=0;j--)

}for(int k=j;k>=0;k--)

}printf("%d\n",ans);

}}

zoj 3871 convex hull 

這套題目出現了兩次這種型別的題,都是求乙個子集的累加和,像這種直接計算會導致複雜度很高,也沒辦法列舉,我們可以對於每個元素,求其參與運算的次數,這樣累加起來就可以縮小複雜度了。 

這道題中,列舉每一條邊,其有向面積即其參與運算的次數,參與運算的次數可以看出來,設該邊一側的點的個數為n,則總次數為c(n,1)+c(n,2)+…+c(n,n)=(1+1)^n-1=2^n-1,在計算n的時候,可以運用類似於旋轉卡殼的思想,以列舉的點為中心進行極角排序,不斷旋轉求n。

#include

#include

#include

const

double eps=1e-8;

const

double pi=acos(-1.0);

const

int mod=998244353;

typedef

long

long ll;

using

namespace

std;

struct point

point(int xx,int yy)

}p[1005],ang[2005];

int n;

ll b[1005];

ll cal(point a,point b)

int cmp(point a,point b)

int main()

for(int j=0;j2*pi;

}sort(ang,ang+2*cnt,cmp);

int k=0;

for(int j=0;jwhile(ang[k+1].angle-ang[j].angle1)%mod) % mod; }}

printf("%lld\n",ans%mod);

}}

2019浙江省賽

題意 n個點的二叉樹 無向邊 的單向邊,構造一條到達且只到達每個點一次的路徑。題解 兩次dfs。第一次dfs為向i 1優先,2i次之。然而,發現某些點有兩條出路,這是由於該點在最底層 有些點沒有達到,這是因為這些點在最後一層或倒數第二層的右下角 第二次dfs時先判斷該點的右子節點是否達到過,如果沒到...

浙江省賽 A B L M 題解

我們教練說5題省賽拿牌有希望,然後acm校隊乙個大佬說至少要到6 7題才能拿銅。t t 我a了四題,我隊友a了五題,他把j題a了,我沒在機房打比賽,所以我們隊就不小心分成倆號交了,我j題沒看懂,後來就沒再寫了。相當於我們隊還是a了五道題,我隊友可是大佬 賊強 哈哈哈 j題抽空補上,那就放一下我ac的...

浙江省賽 E題

題意 給你乙個長度為n的陣列每一次只能選陣列中的乙個元素放在第乙個位置。問你至少你移動多少次才能使陣列內的元素不遞減。思路 a陣列為原來的陣列b陣列為排序之後的陣列,從b陣列的最後乙個開始一直往前去匹配a陣列的最後乙個一直往前,匹配上的就是不用移動的 include define maxn 1000...