2016 NJUST ACM社第一次新生賽 題解

2021-07-24 09:41:39 字數 2951 閱讀 7838

summary:本次比賽共6題,a題為簽到題 ,ce為中等題,bd為偏難題 ,f為防ak題。總體對於新生來說偏難了,過題人數與出題人預期有一定差距。

a.uncle bird』s greetings

直接暴力判斷hello即可

#include 

#include

#include

using

namespace

std;

int main()

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

}return

0;}

b.uncle bird』s maths problem

排序不等式:順序乘積和最大,逆序乘積和最小。

將bi取倒數得1/bi後,其實就把除法換成了乘法,逆序乘積和最小,所以分別排序後倒序相乘就行了。

#include 

#include

#include

using

namespace

std;

double a[10005];

double b[10005];

int n;

int main()

sort(a+1, a+1+n);

sort(b+1, b+1+n);

double ans=0;

for(int i=1;i<=n;i++)

printf("%.3f\n", ans);

}return

0;}

c.uncle bird』s first contest

這題其實如題面所說是出題人第一次打hdu新生賽做到的題,乙個簡單的dp。

記dp[i]為i個人分組的方案數。顯然dp[1]=1,dp[2]=2,dp[3]=5。i>=4時,考慮最後乙個人,他可以一人一隊,對方案數的貢獻是dp[i-1];也可以和另外i-1人中的一人組隊,貢獻是c(i-1,1)xdp[i-2];還可以和另外i-1人中的兩人組隊,貢獻是c(i-1,2)xdp[i-3],所以dp[i]=dp[i-1]+c(i-1,1)xdp[i-2]+c(i-1,2)xdp[i-3]。注意資料量會爆int,要用long long。

#include 

#include

#include

using

namespace

std;

long

long a[30];

int main()

}

d.uncle bird』s manhattan distance

這題是關於manhattan distance的乙個性質。考慮取乙個在所有點左下角的點為基準a(x0,y0),那麼對於滿足x1<=x2和y1<=y2的點對b(x1,y1)和c(x2,y2),bc(曼哈頓距離,下同)=ac-ab。同理取右下角基準點,可以處理x1<=x2和y1>=y2的的點對的距離。這樣,將兩兩點之間曼哈頓距離轉換為到基準點的距離之差。那我們只需要用到基準點距離最大值減去最小值,就得到了兩點之間距離最大值。對兩個基準分別做這個操作然後取較大的就可以了。複雜度o(n)。

#include 

#include

#include

using

namespace

std;

const

int xl=-10000;

const

int yl=-10000;

const

int xr=10000;

const

int yr=-10000;

int main()

int ans=max(max1-min1, max2-min2);

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

}}

e.uncle bird』s idol

簡單的素數篩,但是由於只有一組資料,在本機跑nsqrt(n)的素數判別也能a。由於所有的ac**都是直接輸出答案的,出題人也不知道誰寫了篩法。標程是寫的埃氏篩法,有興趣的同學可以自行研究尤拉篩法。

#include 

#include

using

namespace

std;

bool vis[10500000];

int prime[1050000];

int tot;

void init()}}

}int main()

f.the last problem

本來琢磨了很久用什麼防ak的,後來發現多慮了。。。

這個題原來是挑戰上的,改了一下資料,作為套路題還是顯得不夠真誠,不過出題人最近事務繁多,還請各位諒解一下。

考慮到(3+

7√)n

的共軛數(3

−7√)

n 。由二項式展開定理可知,(3

+7√)

n=a+

b7√ ,(3

−7√)

n=a−

b7√ 。兩式相加可得(3

+7√)

n+(3

−7√)

n=2a

。顯然(3

−7√)

n<

1 那麼題目就相當於求(2a-1)%1000。然後用矩陣快速冪解決即可。

#include 

#include

using namespace std;

struct mat;

mat operator*(const mat& a, const mat& b)

}return ans;

}mat power(int x)

x>>=1;

base=base*base;

}return ans;

}int main()

}

2016第一次參加noi

2016年11月19日是我第一次參加noi比賽,我的內心十分緊張並且激動。我是今年暑假剛學習程式設計,這次競賽我的老師說能做出第一道就已經很不錯了,並且告訴我們這次去參加這個競賽主要是要積累經驗,於是我的內心沒有先前那麼緊張了。考試前一周,我認認真真的複習並背記了關於程式設計的一些內容,這也使我有了...

寫在2023年上班第一天

新年第一天上班,開工大吉,希望2016年收穫滿滿,當然希望所有的朋友們都在新的一年中事業愛情家庭三豐收,猴年心想事成!春節休息了半個月,和家人朋友開心地過了個春節,也花些時間學習知識等。上班的第一天,突然想胡亂寫點東西。想把這幾年的工作簡單記錄下。現在寫的東西很少,越來越不知道寫啥了,一年的時間過得...

2016暑假第一次測驗(7 14)

這道題要求求x1 2x2 nxn m n,m為輸入資料 的解集的個數 一開始我想用dp,f i,j,m sum,但樣例都過不了。後來想到了揹包,但一時沒有轉過彎,以前做的揹包都把物品價值給出了的,但這次卻讓我求價值 聳肩 std就是用的完全揹包,把1 n當作每個物品的價值,然後求個數使得剛好裝滿揹包...