這次訓練的題目,兩道水題(卡資料型別,有好多人不能1a,我也在內),還有3道題,不是很容易。
a. boj0416丁神去谷歌
一道很水的題,因為我剛開始用了sort,t了一次,後來又忘了是什麼原因re了2次
下面簡單分析一下吧,由於是要求b/a的最大值,所以只需要把當前的b/a與之前最大的b/a比較就行,如果相同的話(在這了需要主語,如果你用的是交叉相乘來比較,記得用long long,如果你用的是b/a來比較,在判斷是否相等的時候記得浮點型的精度問題,可以用abs(max-(double)b/a)<=1e-9 之類的式子來判斷,不要直接用等號),再去比較a的大小,由於本身序號就是從小到大的,所以也不用擔心這個了(只要a相等的時候別更新答案就行),說的有點多了,附**吧
#include #include #include #include #include #include #include #define n 100005
using namespace std;
int main()
return 0;
}
c.
boj426 goblin
這個題呀,昨天比賽時有思路(ps:今天想了一上午,發現我的思路是在是太難實現了),最終還是選擇了lyz大神的思路。
題意大概是求n以內(1--n)的數的全排列中,符合交叉排列的情況(即<><><><><>,大於號小於號交叉出現的情況)總共有多少種,結果對p取餘。
我就來說說lyz大神的思路吧,用到了排列組合的思想。
首先,為了方便敘述,我先來給交叉排列的兩種情況命一下名,
假設:第乙個數大於第二個數的情況叫做d情況,第乙個數小於第二個數的情況叫做p情況,對於k個數的排列,我們記d情況共有d[k]種,p情況共有p[k]種,(記 p[0]=p[1]=p[2]=1 那麼,就有d[k]=p[k](至於怎麼來證明,其實很簡單,我們來看兩個圖
所有d情況都可以抽象成左圖圖(w型),所有的p情況都可以抽象成右圖(m型),
對於d情況,可以抽出n個數中的最大數,分別放到各個凸起點(途中紅圈標出),經過一些排列組合的運算,可以得到乙個乙個結果。
同理,對於p情況,可以抽出n個數中的最小數,分別放到各個凹陷點(圖中紅圈標出),根據對稱的特性,就可以得到跟d情況相同的結果。
所以,我們只需考慮一種情況了,我選取的d情況,經過排列組合的運算,很容易得到如下的關係(sigma代表求和符號
d[k]=sigma(d[i[*d[k-1-i]*c[k-1][k-1-i]) (可能看這個式子看不懂,自己推導一下吧,分別把最大的數放到凸起點就可以了,很容易的)
好了,下面附**(ps:被memset坑了好久,也學到了一點,在程式中,你如果開了陣列但是沒有用到,提交時記憶體是不算的,如果你用了memset(a,0,sizeof(a))來初始化陣列,那麼這個陣列就算是全部被使用了。這題中,如果用memset來初始化組合數的儲存陣列,就會超出記憶體限制。算是學到了一點吧!還有就是,如果用動態陣列來做的話,是擦邊過得,我是第一次交1000ms, t了,第二次993ms過了。最後,注意d陣列要用long long,即便不用,運算時也記得轉化一下,否則會wa的)。
#include #include #include #define n 4205
int c[n][n]=;
long long g[n]=;
int n,p;
void init()
;//判斷子節點出現的sg值
int father[n]=;//記錄某個節電的父親節點
int depth[n]=;//記錄「高度」(懶得改了)
int sg[n]=;//對於單個遊戲來說的每個節點的sg值。
int n,m;
void init()//初始化
void solvesg(int now)//now代表當前節點,dfs
//搜到葉子節點,葉子節點對應的高度為0,sg值為0;
for (int i=0;idepth[son])
min=depth[son];//記錄所有子節點中的最小高度(如果當前節點是必敗節點的話用得到)
if (sg[son]==0)//子節點為必敗態
if (max>t;
while (t--)
//動態陣列建樹(單向的)
solvesg(1);//dfs
for (int i=1;i<=m;i++)
if (maxwin>maxfail)//必勝的遊戲時間長,學姐贏
printf("mengmengda!\n");
else
printf("so sad...\n");
}return 0;
}
e題,好吧,我承認,還沒做,先放放吧!
2014 BUPT 新生排位賽01
a 學姐的桌面 鏈結 思路 水題,有乙個坑就是怎麼輸出 這個字元,當時沒注意到自己的程式沒打這個字元直接交了上去wa了一次。code include include include include include define inf 10000 using namespace std const ...
2014 BUPT 新生排位賽05
a 平方的平均值 思路 超級大水題了,我都無語了,要注意到xi可能取負數,然後就沒什麼問題了,比賽的時候沒有注意到乙個int轉long long 先上wa的 include include include include include include define inf 10000000000 ...
2014 BUPT 新生排位賽04
a 大家一起點外賣 思路 水題,注意負數的情況,注意long long 就能過了。code include include include include include include define inf 100000005 define eps 1e 9 using namespace std...