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

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>
            国产亚洲一区二区三区在线播放 | 欧美 亚欧 日韩视频在线| 一区二区三区.www| 国产精品成人播放| 亚洲伊人一本大道中文字幕| 欧美伊人精品成人久久综合97| 欧美色偷偷大香| 午夜日韩在线| 亚洲激情中文1区| 久久久xxx| 欧美激情第六页| 亚洲一区二区三区精品在线观看| 国产精品日韩欧美一区二区三区| 久久国产精品99国产| 亚洲欧洲三级电影| 亚洲精品久久久久久下一站 | 在线一区亚洲| 裸体丰满少妇做受久久99精品| 亚洲精品老司机| 国产精品视频内| 韩国免费一区| 国产精品毛片大码女人| 蜜臀久久99精品久久久久久9| 亚洲一区视频在线观看视频| 欧美一区二区三区视频免费| 日韩视频永久免费| 男男成人高潮片免费网站| 欧美一区二区精品| 老司机精品导航| 一本色道久久| 日韩视频免费在线观看| 欧美在线视频不卡| 先锋资源久久| 欧美成人激情在线| 久久久久国内| 欧美亚洲三区| 欧美精品导航| 欧美激情aaaa| 欧美日韩的一区二区| 久久久久青草大香线综合精品| 欧美精品 日韩| 国产一级揄自揄精品视频| 99re热这里只有精品视频 | 亚洲午夜激情在线| 亚洲成人在线视频播放| 久久久久久一区二区| 欧美性色视频在线| 欧美华人在线视频| 国产亚洲欧美日韩在线一区| 亚洲美女诱惑| av不卡免费看| 亚洲影视在线| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 亚洲欧美视频在线| 亚洲资源av| 日韩系列在线| 欧美日韩精品一区视频| 亚洲国内精品| 99这里只有久久精品视频| 久久综合久久综合这里只有精品| 久久精品论坛| 欧美.日韩.国产.一区.二区| 午夜在线精品偷拍| 国产精品美女| 午夜精品短视频| 亚洲免费在线视频| 久久久噜噜噜久久久| 国产一在线精品一区在线观看| 狠狠色狠狠色综合| 久久综合一区二区三区| 久久久精品日韩欧美| 黄色一区二区三区四区| 日韩网站在线观看| 亚洲精品网站在线播放gif| 亚洲女同在线| 国产欧美精品在线观看| 好男人免费精品视频| 久久亚洲国产成人| 麻豆freexxxx性91精品| 一本色道久久| 亚洲图片在线| 老妇喷水一区二区三区| 欧美视频官网| 欧美亚洲在线| 亚洲国产一区二区在线| 亚洲一二区在线| 国产九九视频一区二区三区| 亚洲美女中文字幕| 亚洲美女电影在线| 国产毛片一区| 亚洲福利视频二区| 欧美在线日韩| 亚洲欧洲精品成人久久奇米网| 亚洲摸下面视频| 久久亚洲国产成人| 欧美暴力喷水在线| 亚洲欧美日韩中文在线制服| 欧美专区中文字幕| 亚洲美女视频| 亚洲欧美激情视频在线观看一区二区三区| 国产欧美一区视频| 亚洲欧洲一区二区在线观看| 国产精品国色综合久久| 老巨人导航500精品| 亚洲精品视频啊美女在线直播| 国产精品人成在线观看免费| 免费欧美日韩国产三级电影| 亚洲欧美视频一区| 欧美视频日韩视频在线观看| 久久精品欧美日韩精品| 欧美日韩国产小视频| 久久综合色88| 国产欧美欧美| 日韩小视频在线观看专区| 在线观看成人一级片| 欧美一区二区三区久久精品茉莉花| 久久久人成影片一区二区三区| 午夜精品久久久久久99热软件 | 在线亚洲欧美| 亚洲精品四区| 久久久久久久999精品视频| 午夜欧美电影在线观看| 欧美久久久久中文字幕| 亚洲免费av片| 欧美在线一区二区三区| 亚洲特色特黄| 夜夜嗨av一区二区三区网站四季av| 欧美日韩午夜在线视频| 亚洲午夜精品久久| 美女精品在线观看| 久久婷婷蜜乳一本欲蜜臀| 国产精品高清在线| 99精品国产热久久91蜜凸| 亚洲国产日韩一级| 久久频这里精品99香蕉| 亚洲精品国产精品国自产在线| 久久精品亚洲一区二区| 欧美一区91| 国产日韩欧美在线播放不卡| 麻豆成人91精品二区三区| 国产目拍亚洲精品99久久精品| 亚洲一区亚洲| 久久精选视频| 欧美精品手机在线| 亚洲国产毛片完整版| 亚洲精品视频在线| 欧美日韩亚洲一区三区| 亚洲美女av网站| 午夜精品在线| 国产亚洲成av人在线观看导航| 欧美一区二区三区视频| 美女网站在线免费欧美精品| 亚洲国产精品美女| 亚洲综合精品一区二区| 久久精品国产久精国产爱| 国产亚洲a∨片在线观看| 久久成人免费电影| 欧美粗暴jizz性欧美20| 欧美日韩一区综合| 在线视频精品| 欧美专区第一页| 欧美精品v日韩精品v国产精品 | 久久久午夜精品| 一区在线免费| 欧美freesex交免费视频| 亚洲日本欧美| 亚洲欧美另类中文字幕| 久久久久久久一区二区| 欧美国产第一页| 亚洲天堂偷拍| 国一区二区在线观看| 欧美成人免费大片| 亚洲视频每日更新| 欧美aⅴ一区二区三区视频| 99国产精品99久久久久久| 国产精品国产三级国产普通话蜜臀 | 在线一区二区三区四区| 国产精品成人观看视频免费| 午夜伦理片一区| 亚洲国产mv| 亚洲欧美日韩综合| 伊人久久噜噜噜躁狠狠躁| 欧美激情视频在线免费观看 欧美视频免费一 | 久久久久国产精品一区二区| 在线欧美视频| 亚洲在线观看视频网站| 久久精品一级爱片| 一本色道久久综合亚洲精品按摩 | 国产精品国产精品| 麻豆久久久9性大片| 亚洲一区二区黄色| 亚洲福利视频二区| 久久最新视频| 亚洲欧美日韩精品在线| 亚洲精品久久久久久下一站 | 国产一区二区三区的电影 | 国产一区二区三区在线观看网站 | 麻豆av一区二区三区| 午夜在线观看免费一区| 一本大道久久a久久精品综合|