Problem A: Easy problem
對于ans+=a[i]&a[j], 實(shí)際上是加上sum{2^i}(0<=i<k && c[i] == 1)其中c[i] 是a[i]&a[j]用二進(jìn)制表示時(shí)第i位的值,k代表a[i]&a[j]用二進(jìn)制表示時(shí)共有幾位
所以,我們可以統(tǒng)計(jì)所有輸入的數(shù),當(dāng)它們用二進(jìn)制表示時(shí),第 i位為1時(shí)的次數(shù),咱們用c[i]表示(注意此c[i]跟上面的c[i]意義不一樣),觀察到, 當(dāng)某位出現(xiàn)的次數(shù)為n時(shí),其加到ans上的次數(shù)應(yīng)為n*n,由些可得
ans = sum{2^i*c[i]*c[i]}(0<=i<k) k表示這些數(shù)中用二進(jìn)制表示時(shí)的最大位數(shù).
????????????????????????????????????
偶是華麗的分割線嘎
????????????????????????????????????
Problem B: 圓柱堆問題
假設(shè)取1號做受力分析(只考慮上方對其的作用力),那么有
其實(shí)力l是由3號提供的,r是由2號提供的,其實(shí)l與g,r與g的夾角均為30度,我們假定一個(gè)柱體,受到斜向左的力為l,斜向下右的力為r,重力為w,a[i][j]代表第i行第j個(gè)圓柱體,那么有
a[i][j].l = a[i-1][j].l + a[i-1][j].w * sqrt(3) / 3
a[i][j].r = a[i-1][j-1].r + a[i-1][j-1].w * sqrt(3) / 3
a[i-1][j].w * sqrt(3) / 3為重力在對應(yīng)的l或者r 方向的分力.
接下來考慮最后一行的柱體對左擋板的壓力
對于最后一行的柱體,假設(shè)向左的力是正,向右是負(fù),則其水平方向的合力為F[i]=(a[n][i].l-a[i][i].r)/2
現(xiàn)在我們從左至右考慮每根圓柱.每個(gè)圓柱產(chǎn)生的水平力非正即負(fù)或零,我們累加這個(gè)合力.假設(shè)存儲(chǔ)為sum= ,其中,當(dāng)1<=i<=k時(shí),F[i]>0,現(xiàn)在考慮第k+1個(gè)圓柱.如果F[k+!]>0,那么顯然,第k+!個(gè)圓柱產(chǎn)生的合力也要被左擋板承受,sum+=F[k+!];反之,如果F[k+!]<0,第k+1個(gè)圓柱產(chǎn)生的力是向右的,(我有向本題作者要過測試數(shù)據(jù),測試數(shù)據(jù)就認(rèn)為這時(shí)的sum值就是左擋板的壓力),這里,我們再分兩種情況:一.當(dāng)k+1<=i<=n時(shí),如果F[i]<0,說明第k個(gè)圓柱后面的產(chǎn)生合力都是向右,那么這個(gè)壓力是由右擋板承受的,左擋板所受的壓力就是sum;二,第k+1個(gè)圓柱后面的圓柱存在某個(gè)合力仍然向左的圓柱(假設(shè)這個(gè)圓柱是第m個(gè)圓柱).這種情況下,第k+1個(gè)圓柱到第m-1個(gè)圓柱產(chǎn)生向右的水平力會(huì)被該圓柱產(chǎn)生向左的水平力抵消一部分,甚至可能超過,這樣兩者產(chǎn)生的合力仍然是向左的,所以左擋板所受的壓力要加上該值.分析到這里,我們不難看出,計(jì)算左擋板壓力的方法: 從左至右,累加各個(gè)圓柱的合力,這個(gè)合力的最大值,就是左擋板所受的力.
????????????????????????????????????
又是華麗的分割線
????????????????????????????????????
Problem C: 液晶切割
注意到每次可以把一塊矩形液晶水平或者豎直地切成兩塊,一開始沒看到這個(gè),把問題想復(fù)雜了許多,囧~~~~~
開一個(gè)二維數(shù)組dp[X][Y],dp[i][j]代表長為i寬為j的液晶塊能切割能賣出的最多價(jià)錢,那么由于切割方式是水平或者豎直地切成兩塊,就有轉(zhuǎn)換方程
dp[i][j] = Max{dp[i][j], dp[i-k][j]+dp[k][j]}(1<=k<=i/2)
dp[i][j] = Max{dp[i][j], dp[i][j-k]+dp[i][k]}(1<=k<=j/2)
而dp[i][j]的初始值為如果有長度為x,寬為y的C價(jià)錢的液晶,那么有dp[x][y] = dp[y][x] = C,因?yàn)閿?shù)據(jù)沒有嚴(yán)格按題目的要求給出(題目是說n種尺寸不一,且長大于寬的液晶),故可能出現(xiàn)如下數(shù)據(jù)
3 2 100
2 3 3
那么很明顯我們的dp[3][2]和dp[2][3]必須取100而不是3,即在賦值的時(shí)候要加一個(gè)判斷if(dp[x][y]<C)才進(jìn)行賦值,對于其他情況全部為dp[i][j]=0.
最終答案為dp[X][Y],X,Y為大液晶塊的長和寬
????????????????????????????????????
粉華麗的分割線
????????????????????????????????????
Problem D: 取款
很簡單的一道模擬題。
開辟一個(gè)大小為K的a數(shù)組代表K個(gè)營業(yè)員要工作到的時(shí)間
每讀到一個(gè)客戶,先把該客戶的到達(dá)時(shí)間轉(zhuǎn)換成秒S,然后找到這K個(gè)營業(yè)員工作的時(shí)間最短的a[i],然后a[i] = (Max(a[i],S) + 該客戶業(yè)務(wù)所要辦理的時(shí)間)
當(dāng)wzc到達(dá)時(shí),按上面的方法求得a[i]后,判斷a[i] 是否小于17*3600,即是否未到銀行關(guān)閉時(shí)間,如果小于,則將a[i]轉(zhuǎn)換為相應(yīng)的時(shí)秒分格式,否則就輸出Bad Luck!
由于每次要找到K個(gè)營業(yè)員的最短時(shí)間,可以將這K個(gè)數(shù)構(gòu)造成一個(gè)最小堆,時(shí)時(shí)維護(hù),不過對于此題,K <= 100,沒啥必要-_-…….
????????????????????????????????????
持續(xù)華麗的分割線
????????????????????????????????????
Problem E: 橢圓容器問題
知識準(zhǔn)備:
1. 橢圓面積公式:
S=πab
這個(gè)公式要用到橢圓的參數(shù)方程,具體推導(dǎo)過程可以參閱任何一本<<高等數(shù)學(xué)>>或者<<數(shù)學(xué)分析>>中關(guān)于定積分的應(yīng)用,(高等數(shù)學(xué)同濟(jì)大學(xué)第六版上冊276頁例3)
2.橢圓體體積公式:
V= 4/3πabc=
這個(gè)微積分公式是本題的關(guān)鍵,見下面的推導(dǎo)吧 .^_^.
我們只考慮上半球,假設(shè)有一個(gè)上半橢圓球容器(z>=0),裝有若干水,水面高度為h.對于0<=z<=h,z到z+dz將容器切為一個(gè)小片片,當(dāng)dz很小時(shí),小片片的體積v’=S*dz,S是小片片的截面面積,其方程為
,兩邊除以
,得:
其面積
,得到體元素為
又z的變化范圍是[0,h],有