青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

A Za, A Za, Fighting...

堅信:勤能補拙

PKU 2244 Eeny Meeny Moo

問題:
http://acm.pku.edu.cn/JudgeOnline/problem?id=2244

參考:
http://baike.baidu.com/view/213217.html?fromTaglist

思路:
從這題認識了經典的約瑟夫問題:

無論是用鏈表實現還是用數組實現都有一個共同點:要模擬整個游戲過程,不僅程序寫起來比較煩,而且時間復雜度高達O(nm),當n,m非常大(例如上百萬,上千萬)的時候,幾乎是沒有辦法在短時間內出結果的。我們注意到原問題僅僅是要求出最后的勝利者的序號,而不是要讀者模擬整個過程。因此如果要追求效率,就要打破常規,實施一點數學策略。
為了討論方便,先把問題稍微改變一下,并不影響原意:

問題描述:n個人(編號0~(n-1)),從0開始報數,報到(m-1)的退出,剩下的人繼續從0開始報數。求勝利者的編號。

我們知道第一個人(編號一定是m%n-1) 出列之后,剩下的n-1個人組成了一個新的約瑟夫環(以編號為k=m%n的人開始):
  k  k+1  k+2  ... n-2, n-1, 0, 1, 2, ... k-2
并且從k開始報0。

現在我們把他們的編號做一下轉換:
k     --> 0
k+1   --> 1
k+2   --> 2
...
...
k-2   --> n-2
k-1   --> n-1

變換后就完完全全成為了(n-1)個人報數的子問題,假如我們知道這個子問題的解:例如x是最終的勝利者,那么根據上面這個表把這個x變回去不剛好就是n個人情況的解嗎???!變回去的公式很簡單,相信大家都可以推出來:x'=(x+k)%n

如何知道(n-1)個人報數的問題的解?對,只要知道(n-2)個人的解就行了。(n-2)個人的解呢?當然是先求(n-3)的情況 ---- 這顯然就是一個倒推問題!好了,思路出來了,下面寫遞推公式:

令f[i]表示i個人玩游戲報m退出最后勝利者的編號,最后的結果自然是f[n]

遞推公式
f[1]=0;
f[i]=(f[i-1]+m)%i;  (i>1)

有了這個公式,我們要做的就是從1-n順序算出f[i]的數值,最后結果是f[n]。因為實際生活中編號總是從1開始,我們輸出f[n]+1

由于是逐級遞推,不需要保存每個f[i],程序也是異常簡單:

#include <stdio.h>
int main()
{
  int n, m, i, s=0;
  printf ("N M = "); scanf("%d%d", &n, &m);
  for (i=2; i<=n; i++) s=(s+m)%i;
  printf ("The winner is %d\n", s+1);
}

這個算法的時間復雜度為O(n),相對于模擬算法已經有了很大的提高。算n,m等于一百萬,一千萬的情況不是問題了。可見,適當地運用數學策略,不僅可以讓編程變得簡單,而且往往會成倍地提高算法執行效率。

代碼:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 
 5 /*
 6  * f[1] = 0
 7  * f[i] = (f[i-1]+m)%i
 8  */
 9 int
10 josephus(int n, int m)
11 {
12     int i, s = 0;
13     for(i=2; i<=n; i++
14         s = (s+m)%i;
15     return s+1;
16 }
17 
18 int
19 main(int argc, char **argv)
20 {
21     int n, m;
22     while(scanf("%d"&n)!=EOF && n!=0) {
23         m = 2;
24         /* because first cut off city 1 and then begins every mth */
25         while(josephus(n-1, m) != 1)
26             ++m;
27         printf("%d\n", m);
28     }
29 }

posted on 2010-08-18 21:02 simplyzhao 閱讀(249) 評論(0)  編輯 收藏 引用 所屬分類: G_其他

導航

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統計

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美中文字幕在线| 国产精品视频大全| 久久婷婷国产综合精品青草| 亚洲精品美女91| 国产一区二区三区久久 | 久久久久国产精品人| 亚洲电影免费观看高清完整版在线观看 | 蜜桃久久精品乱码一区二区| 久久激情视频久久| 黄色日韩精品| 一区免费视频| 在线综合欧美| 久久精品久久99精品久久| 欧美亚洲一区在线| 欧美成人小视频| 日韩视频中文字幕| 亚洲一区日本| 久久成人免费日本黄色| 久久综合久久久久88| 欧美日韩日本网| 国内一区二区在线视频观看| 在线观看日韩国产| 亚洲自拍电影| 久久久欧美精品sm网站| 亚洲人午夜精品免费| 一区二区三区免费网站| 欧美一区亚洲一区| 欧美日韩一区二区三| 亚洲第一在线综合网站| 性欧美xxxx大乳国产app| 老司机午夜精品视频| 99v久久综合狠狠综合久久| 先锋亚洲精品| 国产精品视频| 久久av最新网址| 亚洲在线免费| 欧美极品aⅴ影院| 欧美尤物巨大精品爽| 亚洲欧美激情精品一区二区| 欧美大片免费久久精品三p | 一区二区免费看| 亚洲成人直播| 欧美精品一区二| 日韩视频精品在线| 欧美aaa级| 欧美诱惑福利视频| 一区二区欧美在线| 国产精品av免费在线观看| 99国产精品99久久久久久粉嫩| 欧美国产日韩在线| 欧美黑人在线播放| 亚洲欧美日韩精品久久久| 在线视频亚洲一区| 国产视频亚洲精品| 亚洲二区视频在线| 欧美日韩免费观看中文| 午夜精品久久久久久久白皮肤 | 久久精品国产精品| 久久深夜福利| 亚洲欧美日韩在线观看a三区| 午夜一区二区三区不卡视频| 亚洲第一中文字幕| 一本一道久久综合狠狠老精东影业 | 国产亚洲欧美在线| 亚洲国产视频一区二区| 国产精品一区毛片| 日韩视频在线一区| 亚洲精品国产精品久久清纯直播| 亚洲一区二区免费| 最新日韩av| 久久亚洲国产成人| 久久亚洲春色中文字幕| 国产精品亚洲片夜色在线| 欧美国产日韩xxxxx| 国产一区二区中文字幕免费看| 亚洲免费播放| 亚洲一区区二区| 欧美日韩在线高清| 一区二区三区波多野结衣在线观看| 久久亚裔精品欧美| 一区二区在线观看av| 久久久福利视频| 免费在线观看精品| 亚洲国产日韩欧美一区二区三区| 欧美专区在线播放| 亚洲国产专区校园欧美| 亚洲精品日韩欧美| 欧美日韩专区| 亚洲欧美日韩国产综合| 久久综合久久美利坚合众国| 尤物在线精品| 欧美午夜视频网站| 久久av最新网址| 亚洲欧洲在线播放| 欧美一区不卡| 久久久无码精品亚洲日韩按摩| 美女黄毛**国产精品啪啪| 99成人精品| 亚洲二区在线观看| 国产精品福利影院| 久久综合狠狠综合久久综合88 | 欧美日韩在线精品| 亚洲午夜激情网页| 亚洲国产色一区| 久久一二三区| 久久av在线看| 香蕉国产精品偷在线观看不卡| 伊人久久大香线| 国产精品一区免费观看| 国产精品激情偷乱一区二区∴| 女主播福利一区| 亚洲一区二区精品在线| 老司机精品视频网站| 欧美一区视频| 久久av一区二区三区漫画| 亚洲欧美日韩专区| 亚洲一区二区三区影院| 一本到12不卡视频在线dvd| 亚洲国产精品久久久久久女王| 国产在线国偷精品产拍免费yy| 国产精品自拍小视频| 国产区精品在线观看| 午夜精品剧场| av不卡在线| 亚洲无吗在线| 久久国产一区| 欧美成年网站| 最新日韩在线视频| 中国成人亚色综合网站| 亚洲一区二区三区四区五区午夜 | 亚洲欧美日韩高清| aa成人免费视频| 亚洲一区二区伦理| 欧美综合国产精品久久丁香| 久久成人精品一区二区三区| 欧美1区2区| 一区二区不卡在线视频 午夜欧美不卡'| 一区二区三区色| 久久久精品日韩| 国产精品乱码一区二区三区| 激情久久影院| 午夜欧美精品久久久久久久| 欧美韩国日本综合| 亚洲欧美视频在线观看视频| 麻豆精品一区二区av白丝在线| 欧美日韩亚洲一区二区| 亚洲第一成人在线| 久久国产66| 亚洲免费影视第一页| 欧美精品国产精品日韩精品| 在线观看视频日韩| 久久久久久久波多野高潮日日| 日韩亚洲精品在线| 欧美日本一区二区三区| 亚洲美女精品一区| 亚洲国产国产亚洲一二三| 久久激情五月丁香伊人| 国产一区二区三区久久久| 亚洲欧美日本伦理| 一区二区三区av| 国产精品久久久一区二区| 亚洲综合999| 午夜视频久久久| 韩国一区电影| 欧美激情精品久久久久久变态| 久久午夜电影| 亚洲国产毛片完整版| 亚洲另类黄色| 亚洲精品日韩在线| 亚洲国产精品尤物yw在线观看| 老司机亚洲精品| 欧美日本国产视频| 欧美一区视频| 欧美久久久久久| 久久久久久夜| 欧美大片免费观看| 国产精品v日韩精品| 久久综合电影一区| 欧美日韩国产综合网 | 国产欧美视频一区二区| 久久婷婷久久| 国产精品日韩高清| 欧美成人在线影院| 国产乱码精品一区二区三区五月婷| 久久深夜福利免费观看| 国产精品你懂的在线| 亚洲区第一页| 亚洲高清免费视频| 欧美在线亚洲一区| 欧美伊人影院| 国产酒店精品激情| 亚洲一区在线免费| 亚洲欧美日韩视频二区| 欧美日韩综合在线免费观看| 91久久久久| 亚洲私人影院在线观看| 欧美日韩综合另类| 一本色道久久综合精品竹菊| 亚洲桃花岛网站| 国产精品美女xx|