找回密码
 欢迎注册
楼主: mathe

[讨论] 毒酒问题(加强版)

  [复制链接]
 楼主| 发表于 2018-3-23 17:02:47 | 显示全部楼层


没关系,参数s现在不用了,忘了删除了,rsearch就是随机搜索一个不差得离谱的解即可。
开始可以没有任何参数,也可以将我上面的一些结果作为输入,去掉前面的 [数目] 即可
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-3-23 15:22:16 | 显示全部楼层
mathe 发表于 2018-3-23 13:33
29人[1184]11a1009c 908c904 1418d8 5989301 4455561 1001e628 54960c 18160480 10817924 10ea1429 242443e ...

谢谢分享!。经检测,700336个结果都是唯一的,辛苦,期待28的1000的突破

点评

我一直没搞清楚:你能在2小时内“检测700336个结果都是唯一的”,要知道:这道题目是寻找尽量多的集合使得两两之并都不同。不是普通加法,是”or“运算。  发表于 2018-4-17 07:47
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-3-23 15:11:20 | 显示全部楼层
最新的代码
  1. #include <vector>
  2. #include <set>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #include <rdrand.h>
  7. #include <time.h>

  8. typedef unsigned int dtype;
  9. typedef std::vector<dtype> DataState;
  10. typedef std::set<dtype> UnionState;
  11. #ifndef K
  12. #define K 10
  13. #endif
  14. #define COUNT 100000
  15. #if K==10
  16. #define HK 5
  17. #define UPBOUND 30
  18. #define REPLACE_NUMS 5
  19. #define LARGE_REPLACE_NUMS 8
  20. #endif
  21. #if K==11
  22. #define HK 5
  23. #define UPBOUND 60
  24. #define REPLACE_NUMS 5
  25. #define LARGE_REPLACE_NUMS 10
  26. #endif
  27. #if K==12
  28. #define HK 6
  29. #define UPBOUND 70
  30. #define REPLACE_NUMS 5
  31. #define LARGE_REPLACE_NUMS 11
  32. #endif
  33. #if K==13
  34. #define HK 6
  35. #define UPBOUND 100
  36. #define REPLACE_NUMS 4
  37. #define LARGE_REPLACE_NUMS 12
  38. #endif
  39. #if K==14
  40. #define HK 7
  41. #define UPBOUND 200
  42. #define REPLACE_NUMS 6
  43. #define LARGE_REPLACE_NUMS 13
  44. #endif
  45. #if K==15
  46. #define HK 7
  47. #define UPBOUND 350
  48. #define REPLACE_NUMS 7
  49. #define LARGE_REPLACE_NUMS 15
  50. #endif
  51. #if K==16
  52. #define HK 7
  53. #define UPBOUND 400
  54. #define REPLACE_NUMS 7
  55. #define LARGE_REPLACE_NUMS 15
  56. #endif
  57. #if K==17
  58. #define HK 8
  59. #define UPBOUND 400
  60. #define REPLACE_NUMS 7
  61. #define LARGE_REPLACE_NUMS 15
  62. #endif
  63. #if K==28
  64. #define HK 13
  65. #define UPBOUND 2000
  66. #define REPLACE_NUMS 7
  67. #define LARGE_REPLACE_NUMS 9
  68. #endif
  69. #if K==29
  70. #define HK 13
  71. #define UPBOUND 2000
  72. #define REPLACE_NUMS 7
  73. #define LARGE_REPLACE_NUMS 9
  74. #endif
  75. #if K==30
  76. #define HK 13
  77. #define UPBOUND 2000
  78. #define REPLACE_NUMS 8
  79. #define LARGE_REPLACE_NUMS 16
  80. #endif
  81. #if K==31
  82. #define HK 13
  83. #define UPBOUND 2000
  84. #define REPLACE_NUMS 8
  85. #define LARGE_REPLACE_NUMS 16
  86. #endif
  87. #if K==32
  88. #define HK 14
  89. #define UPBOUND 2000
  90. #define REPLACE_NUMS 8
  91. #define LARGE_REPLACE_NUMS 16
  92. #endif
  93. #define UB UPBOUND
  94. #define MIN_EDGES (REPLACE_NUMS+LARGE_REPLACE_NUMS)

  95. unsigned gen_rand_edge()
  96. {
  97.      unsigned d = 0;
  98.      unsigned rd[K];
  99.      int i;
  100.      rdrand_get_n_32(K,rd);
  101.      for(i=0;i<K;i++){
  102.         if(rd[i]<1288490189){
  103.             d|=1<<i;
  104.         }
  105.      }
  106.      return d;
  107. }

  108. long update_bits(long v, long bits)
  109. {
  110.     int i;
  111.     unsigned rd[K];
  112.     rdrand_get_n_32(K,rd);
  113.     for(i=bits+1;i<K;i++){
  114.        if(rd[i]<1288490189){
  115.            v|=1<<i;
  116.        }
  117.     }
  118.     return v;
  119. }

  120. int should_we_change()
  121. {
  122.     unsigned d=0;
  123.     rdrand_get_n_32(1,&d);
  124.     d%=10;
  125.     if(d==0)return 1;
  126.     return 0;
  127. }

  128. UnionState tus;
  129. DataState ds;
  130. DataState best_result;
  131. #define WORD_OF(x)        ((x)>>5)
  132. #define INDEX_IN_WORD(x)  ((x)&31)
  133. #define IS_SET(mask,x)     (mask[WORD_OF(x)]&(1<<INDEX_IN_WORD(x)))
  134. #define SET(mask,x)        (mask[WORD_OF(x)]|=1<<INDEX_IN_WORD(x))
  135. #define CLEAR(mask,x)      (mask[WORD_OF(x)]&=~(1<<INDEX_IN_WORD(x)))

  136. void init()
  137. {
  138.     ds.clear();
  139. }
  140. int bitcount(dtype d);
  141. int test_add(dtype d)
  142. {
  143.     UnionState ls;
  144.     if(bitcount(d)>HK)return -1;
  145. #ifdef STRICT
  146.     if(tus.find(d)!=tus.end()){
  147.          return -1;
  148.     }
  149.     ls.insert(d);
  150. #endif
  151.     int i;
  152.     for(i=0;i<ds.size();++i){
  153.         if(ds[i]==d)return -1;
  154.         dtype u=d|ds[i];
  155.         if(tus.find(u)!=tus.end()){
  156.             return -1;
  157.         }
  158.         if(ls.find(u)!=ls.end()){
  159.            return -1;
  160.         }
  161.         ls.insert(u);
  162.     }
  163.     return 0;
  164. }

  165. int bitcount(dtype d){
  166.     int i,b=0;
  167.     for(i=0;i<K;i++){
  168.        if(d&(1<<i))b++;
  169.     }
  170.     return b;
  171. }

  172. void do_add(dtype d){
  173.     int i;
  174. #ifdef STRICT
  175.     tus.insert(d);
  176. #endif
  177.     for(i=0;i<ds.size();++i){
  178.         dtype u=d|ds[i];
  179.         tus.insert(u);
  180.     }
  181.     ds.push_back(d);
  182. }

  183. void pop()
  184. {
  185.    int i;
  186.    dtype d=ds.back();
  187.    ds.pop_back();
  188. #ifdef STRICT
  189.    tus.erase(d);
  190. #endif
  191.    for(i=0;i<ds.size();++i){
  192.        dtype u=d|ds[i];
  193.        tus.erase(u);
  194.    }
  195. }

  196. int cds;
  197. unsigned long long cdc;
  198. unsigned long long cdi;
  199. void dumpg(const DataState& data)
  200. {
  201.     int i;
  202.     printf("[%d]",(int)data.size());
  203.     for(i=0;i<data.size();i++){
  204.        printf("%x ",data[i]);
  205.     }
  206.     printf("\n");
  207.     fflush(stdout);
  208. }

  209. unsigned getrande(int e)
  210. {
  211.     unsigned d=0;
  212.     rdrand_get_n_32(1,&d);
  213.     d%=e;
  214.     return d;
  215. }

  216. void rsearch(int s)
  217. {
  218.     int i;
  219.     while(1){
  220.        for(i=0;i<100;i++){
  221.            unsigned d = gen_rand_edge();
  222.            if(test_add(d)==0){
  223.                do_add(d);
  224.                break;
  225.            }
  226.        }
  227.        if(i==100){
  228.           return;
  229.        }
  230.     }
  231. }

  232. int search(int c, clock_t quit_time)
  233. {
  234.     int i,j;
  235.     if(ds.size()>best_result.size()){
  236.         best_result = ds;
  237.         dumpg(best_result);
  238.         return 1;
  239.     }
  240.     if(clock()>quit_time)return -1;
  241.    
  242.     for(i=1;i<c;++i){
  243.        unsigned d = gen_rand_edge();
  244.        if(test_add(d)==0){
  245.            do_add(d);
  246.            int r = search(2*c, quit_time);
  247.            if(r!=0){
  248.                pop();
  249.                return r;
  250.            }
  251.            pop();
  252.        }
  253.     }
  254.     return 0;
  255. }

  256. int largest_bit(long v)
  257. {
  258.     int i;
  259.     for(i=31;i>=0;i--){
  260.        if(v&(1<<i))return i;
  261.     }
  262.     return -1;
  263. }

  264. int count = 0;
  265. #if K==28
  266. #define MIN_TIME (5*CLOCKS_PER_SEC)
  267. #else
  268. #define MIN_TIME (30*CLOCKS_PER_SEC)
  269. #endif
  270. int cur_time_interval=MIN_TIME;

  271. int main(int argc, const char *argv[])
  272. {
  273.     int i;
  274.     int orbits[UPBOUND];
  275.     if(argc>1){
  276.         init();
  277.         int bits=0;
  278.         for(i=1;i<argc;i++){
  279.             char *endp=NULL;
  280.             long v=strtol(argv[i],&endp, 16);
  281.             int lbits=largest_bit(v);
  282.             if(lbits>bits)bits=lbits;
  283.         }
  284.         for(i=1;i<argc;i++){
  285.             char *endp=NULL;
  286.             long v=strtol(argv[i],&endp, 16);
  287.             v=update_bits(v,bits);
  288.             if(test_add(v)==0){
  289.                 do_add(v);
  290.             }else{
  291.                 printf("invalid input %s\n",argv[i]);
  292.                 return -1;
  293.             }
  294.         }
  295.     }else{
  296.         do{
  297.             init();
  298.             rsearch(1);
  299.         }while(ds.size()<MIN_EDGES);
  300.     }
  301.     fprintf(stderr,"Init state:\n");
  302.     dumpg(ds);
  303.     for(i=0;i<ds.size();i++){
  304.         best_result.push_back(ds[i]);
  305.     }
  306.     do{
  307.         int replace_num = REPLACE_NUMS;
  308.         for(i=0;i<best_result.size();i++)orbits[i]=0;
  309.         for(i=0;i<replace_num;i++)orbits[i]=1;
  310.         for(i=0;i<replace_num;i++){
  311.               int j=getrande(best_result.size());
  312.               int t=orbits[i];
  313.               orbits[i]=orbits[j];
  314.               orbits[j]=t;
  315.         }
  316.         init();
  317.         for(i=0;i<best_result.size();i++){
  318.               if(orbits[i]==0){
  319.                    do_add(best_result[i]);
  320.               }
  321.         }
  322.         if(search(200, clock()+cur_time_interval)==1){count=0;cur_time_interval = MIN_TIME;}else{cur_time_interval+=MIN_TIME;}
  323.     }while(1);
  324.     return 0;
  325. }
复制代码

点评

运行参数怎么设置?我没有运行参数,进入void rsearch(int s)过程了,但是这个过程没有用到参数s?  发表于 2018-3-23 16:26
谢谢分享!  发表于 2018-3-23 15:30
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-3-23 15:08:38 | 显示全部楼层
其实我现在用的算法很简单。这道题目是寻找尽量多的集合使得两两之并都不同。
考虑到对于好的结果,去掉若干个集合之后,能够随机重新加入的集合数目应该比其它集合多,也就是较优秀的解会有近似性
可以采用随机算法,先随机构造一个尽可能大的解
然后接下去每次从当前最优解中随机去掉少量集合,然后继续穷举(或随机添加)尽可能多的集合,看能否找到更好的解,
反复迭代即可,结果效果很好。
这个方法有点类似生物的单性繁殖,所以可以看成是一种进化过程

现在的程序应该是有些参数设计不够优秀,有时会卡在某些解上,这时可以再启动另外一个程序,用前面搜索的结果作为参数输入即可
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-3-23 14:50:43 | 显示全部楼层
mathe太神勇了,我插不进手,只好歪个楼说点题外话。

分组测试问题:

https://en.wikipedia.org/wiki/Group_testing

可以分成两大类:概率型和组合型。

概率型假设每个个体都有$p$的概率异常且相互独立,目标是用最少的测试次数找出所有的异常个体,而测试次数考虑的是期望值。

这个问题属于概率型:

https://bbs.emath.ac.cn/forum.php?mod=viewthread&tid=2091

而组合型假设有固定数量(或者不超过某个数量)的个体异常,目标也是用最少的测试次数找出所有的异常个体,而测试次数是以最坏情况下的次数为准。

本贴的问题属于组合型。

从另外一个角度看,分组测试问题可以分成【灵活测试】和【非灵活测试】两大类。

在灵活测试中,每次测试都可以根据之前的测试结果灵活地制定测试方案。

这个问题属于灵活测试:

https://bbs.emath.ac.cn/forum.php?mod=viewthread&tid=2091

在非灵活测试中,测试方案必须预先制定好,不能根据测试结果进行调整。

本贴的问题属于非灵活测试。

按照测试结果的可靠性,可分为【可靠测试】和【非可靠测试】。

可靠测试的结果是保证正确无误的,分析起来相对简单。

例如:喝了毒酒必死。

而非可靠测试的结果只能保证以某个概率正确,分析起来比较复杂。

例如:喝了毒酒有$99%$的概率死亡,有$1%$的概率没事。

本贴的【毒酒问题】和链接里【批量测试问题】都属于可靠测试。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-3-23 13:43:30 | 显示全部楼层
本帖最后由 王守恩 于 2018-3-23 13:47 编辑
mathe 发表于 2018-3-23 10:29
现在29人进化到1180瓶酒,28人进化到951人了。看来28人也有希望,不过快到极限了

正面进进攻缓一缓,侧面试试看!
3瓶毒酒的游戏应该是这样。
第1次取第3行+第2行+第1行的和。
第2次取第4行+第2行+第1行的和。
第3次取第4行+第3行+第1行的和。
第4次取第4行+第3行+第2行的和。
第5次取第5行+第2行+第1行的和。
第6次取第5行+第3行+第1行的和。
第7次取第5行+第3行+第2行的和。
第8次取第5行+第4行+第1行的和。
第9次取第5行+第4行+第2行的和。
第10次取第5行+第4行+第3行的和。
第11次取第6行+第2行+第1行的和。
........
说明,每次取三行中不同列的棋子相加,相同列的棋子只算1个。
游戏规则很简单:
后面每次的和,与前面每次的和都不一样。
关键问题:给你10列,你最多可以取到第几行?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-3-23 13:33:21 | 显示全部楼层
29人[1184]11a1009c 908c904 1418d8 5989301 4455561 1001e628 54960c 18160480 10817924 10ea1429 242443e 122601a2 1380096 832248c b03620 1a81a130 44a11f 3024780 8145325 e8d0028 1860a432 4875a2 1d068510 5602880 814407d b4a0611 505040 143c0438 1102a4f ba1045 52ec058 11c83100 ec5002 a86087 d884811 104144ae 1a028683 8e44e20 1024216a 9428465 14136602 1c708082 4c240c7 f154608 185208a2 10c632 e2c90b 4123094 17208712 4020556 d41c022 18780248 14606181 10421b68 12288d02 17031009 681a242 20e0cd0 1944218a 5d12806 b034809 ce50c b0d4130 f020c02 2a4a462 ed132 820019b ce70008 4514908 e78244 10bc2018 9881878 80084db 1900608c f465004 144a803a 1b00c64 6016882 1c2c18a 5161842 4083794 203290b fa60086 8b46150 128c2882 16e04030 a8c04c9 106a690 18b924 66026e0 b0c8861 88e4c0 14d5602 84028d9 12947042 1352c006 c33d201 9109231 81a4823 852d502 a0c6c 1326311 6c23006 1238189 18212985 10d10583 1cd0426 10053631 1418a901 c108d22 101780d4 cc08986 14077005 18912d00 2e1095a 4060a89 1acc6 10448721 1141808d e260460 2a910a 507108c 14630440 e003414 3d0160 10372221 1120803a 8016384 6254212 5d42030 118e2111 8235328 291d11 400ca1c 13304c1 18223303 1c18d400 4681f00 a72108 1c281922 cf00301 3c2910c 1c84800b 1d0055a 1cc2000d d58064c 4213423 4b28a8 12918048 5202724 404e262 181d3880 850181a 4484d02 829259 12a458 2062313 12518101 10c0d022 86304a0 22d9a08 a29511 80b6843 180642c3 1a095800 db81400 8d50310 5e0544 30440a4 2850a35 221668a 4184012 84043c9 49e0048 c9480cc 2080dc6 14085896 14810815 80d6482 2302e42 c822e90 b90283 a2ba01 aa0401c 2443120 c24065e 1824a0d1 1148a02b 8c3122c 1b0002ca 43c140c 3e400a2 447b004 d0c6a08 9500076 5460758 6482056 1388650 11286270 8681423 c0c095 1d1a6000 821aa16 14845a03 354ea00 1c26283 2271018 11020523 e0649a 461426 1c084292 8122420 a282b04 a8522e0 9274098 ca50007 52192a0 9022058 2252885 9204172 2905482 d87013 6141592 18802593 25549 9114140 b526092 470280c 1489414a 860a001 128c3204 b5202d8 1822a868 669d010 102414c4 18b10870 3d08680 10611908 a084a4e cc010a0 16510405 19d118 14a08224 1a404742 c03062a 2325078 1601c221 b221c04 c993208 1aca0803 40994b 10740510 6660102 4b20492 15694004 44264b1 10459b80 16600813 280a5d 160c1090 1849a20 10a10f32 530aca 33003a8 148a4504 924e144 4582511 988d602 1201dd d219018 2245928 9a2022c 11718060 a25830 a042b62 168f0050 3290508 88e0096 9c48e8 8015634 a04c103 20719a1 8c14853 831270 20ac8a0 10e004e8 1c924141 83110e1 8088ac0 1f160001 b601a90 1e42a11 488092b 11bc1024 5056054 1494058 4248593 556021 8c5391 248418 1819c089 840e16 11048a05 14938280 6d02304 1430b10 34c354 1848051c 1f08a404 1500a20a 12041783 9810601 1081b106 3042408 8b98100 11821c14 790025 8e00542 10d0003c 369088 1284d068 8b8571 1904d10 5420c48 11ca0086 2b4808 518c84a 1c01c244 212c0c3 6265424 910a885 250852c 1958801e 40d1a07 12404e3 81ca602 2093305 12885061 c0a9d0 190c52c0 11000916 1d221040 c904aa0 1a313408 11843844 22910a9 18ce3008 25c8314 1160413 c82b82 1e20c40c 180031d0 bcb02 6828890 11a02430 9059294 cac0141 8728140 4843891 1906829 8984070 10491680 1219490a 3405069 140c5c28 130f9000 1b44409 b14d48 c0a05a2 11bc8202 825a530 649330 3158064 450ac88 2c46405 2a802b0 4c68e1 892f002 12b18a80 2158382 c10e134 10160147 1082a6c8 200217c 1d898100 1211254a 101c4320 1218a61 532d060 c882188 a854011 134420e 12810300 6342006 104115b0 1b442403 19d09080 9408d1a 829a08c 10144c26 8038e84 980522b 305904a 10ba4620 11052812 8804d07 11424035 804f0b1 2c241a0 144c9c 1333010 11168620 a08c448 420091a 7800214 4a203a6 3b120b4 2a030c0 60160b9 109a94a 1c544204 1048a689 8882565 894534 6009906 18040f49 2f04350 27a4209 70c883 100ab030 d0c1413 13304c30 9541022 310153 e1828c 5102b28 8706308 121cc080 874305 60941ac 8530124 14894610 1007360c 9a820c2 18846409 18280ba8 ed00821 291e001 d2b0211 11803680 16c300c 6412c2 8434581 90068b2 16288130 11025286 450815e 14482860 10431025 19004119 1312080a 454ca09 11518504 392218 55cb042 486c580 11264851 5148071 407bc40 d8340c2 81c0668 68180f4 1064d5 8c621c0 c0a081e 423b24 95a027 18637002 48b0318 12010c0e 1e911090 180c212c 1402c8d 1a502c8 14421c01 1210822b 73a1088 659401 1018a444 1461b 12080085 442a285 1040d50a 3090195 1081498 d40b012 9048c6 503665 181a1404 1420334a 4470614 110705e 30b6241 1103e10 271ec40 6104849 89e9200 2496690 2610a70 51e0906 10290217 101a2290 1a002619 15029300 90194c9 202036a 12920065 18899480 8283059 1b982010 4326d90 d060a07 226440b 1581a54 98811a2 1029302a 7a20580 1e014440 aaa006a 898aa11 12c13420 914a102 10942a24 49504d0 14a91101 1b10505 805884c 28097c0 1242a541 60c483c 1444d0c0 1886888c 15a92003 10062486 1b080054 2c00da2 322a105 18190c28 12ef 1035480c 8295006 4031664 72045b eaa0c0 40e7422 8807c40 7821a8 125810b9 88c0704 64090a5 842d019 c0c0436 4228091 1a24242 120512a4 1a241049 10228149 24300ab fc4084 178000e4 a40198c 4261781 aa01307 f205140 5190035 184003e 18109116 1a608064 96a0038 1de4840 45040b8 3052701 193a0102 2041d2e 2811404 18880262 18a04322 15832 160a4421 18010c55 12414112 1ec814 10a548a0 4b1a408 4818145 12484921 11406a2a 14442144 120ca848 105c5401 41026a2 10fa06 17014007 2c41a02 408e08b 6908b2 c460023 114412a8 26cca0 40604bc eb00684 8161a68 1124a322 3215024 f240490 14204474 180e8 4094b81 18b020a0 1059c224 14a1161a 10524e30 18300447 5901894 5283212 b0c2243 41480c2 1750084 f408804 83c0808 1a100ce0 18c08845 7cac000 1c284009 114f2020 18226440 1e84481 180644b 14a4620 55005b2 6d440c 1144b818 12864412 1984308 1c850984 10a04198 f211003 4a1c028 14011d6 6581888 5890c41 962700 1030ac81 6cb1401 11d6440 1e00aa c561290 1400652a 12418dc0 1c0055a1 8ca8434 1222e081 e842034 14000379 a284603 2d40228 12120e05 1000000 2f28401 10d8a222 11014589 1a782080 10945805 18ae0440 2e68b b4884a0 468c51 ad0c058 4e01c38 183e084 4040a53 12988854 10020232 d212146 e036023 50708b0 222c194 14404256 17407a00 812c288 c029121 c099241 4d080b c82c0b2 1084e90c 9c98061 5a0da1 e0b454 a42a1b0 1952c14 8454086 12057480 81aa08 8043229 12511851 10b1c450 83819c0 1342198 146a9800 1380c414 1047084c 10e7824 8075640 6258c00 1882a72 da3848 40e6181 4923113 2380921 ca807 2889c00 e22804a 1c442809 15be002 4c41825 15c09014 10511208 8547404 8408607 a1012a3 aa00c28 5c48918 103245c2 1664a200 12f4280 85a2d08 881b468 14009964 182d0e02 1e93 8541541 a440435 2f8e 172052a 110cc124 154000da e02370 d0c8380 786d a01d1a0 10098413 b800570 14188a0c ad63 31812c0 12d82a08 2c28b44 107b6 14a904a2 1433000e a4b2284 1394e 150d7 4914661 1c0284a4 23a5c c682612 1481a8e0 280e824 286e1 a3991 a621262 29574 502030d 17c14680 1a002853 35cc0 36164 422fa 142a870 924004f 1580051a 44931 47348 4874e 4293150 4c89a c401b50 14340861 c12ac11 504300d e598004 59115 104a0150 28882ac 840bd 1e391 13046032 244b880 4c2e4 a185105 c45418 2513182 390a2 56c52 8e269 151024c0 90a5008 84c01e1 12d40084 16105411 789098 52e2182 a251b a8314 a2a40c4 134104b2 1cd018a 28938 83642 e00ad01 128a1980 18a10892 9a3c020 84353 57048e0 ac1609 96129 2140989 b5605 c29d4 1030380b 1181133 c9960 10a23d 2448819 10644207 e0112c8 3090806 1106dc 11291d 1604c14 2e49041 118c0b 8622c5 13122089 18851818 1668301 124b61 1606c022 2daa100 1b0a00e 119402a3 6492108 13a980 31a8032 3d02025 4800bc8 6ee08 150246 161ab4 16521b 17b220 dc60302 4967120 54a6842 1b75 8702b9 1c542 5016d 54f04 9840095 e4a46 1226b0a 21b0622 3470184 8283688 81d0014 3b50402 1c25005 221b204 11c04210 a08b01c 117103 9412941 189051 16801622 190f45 c40021d 6ab4100 700c80f 1ad1a10 7441501 311181c 203932 140b2a2 203ca9 20d8b1 196a041 1c106844 c2109a 22a3cc 5011740 4b0116 10116950 2156a0 23a602 14d68120 246907 10328812 250322 25b142 11d649 1910ca 25e024 84f4001 e744800 286e30 2881e6 28d0c5 2a022b 2a2ca2 2aa841 c1780a1 132408e0 300987 1682a108 37c100 11c202e0 39b080 3c1d02 408a66 420a9c 42218d 85a90a1 c300d1 86c6102 120f0801 c38c08 435342 445b0c 44a4d6 4581a3 45a241 48703c 489c16 884c0d0 8cc0a01 49184d 14807082 c0b1890 18bf08 3a4aa4 4e8980 512c26 34c5840 5147c0 5400af 574012 12471c 507710 580aa3 59807c 5e4303 4c10e82 1a86a04 52c8922 6020a6 614b2c 140c143 62906c 631163 511c95 68004f a828041 68158a 6a1281 6b2500 10cd212 405dd8 e4d0081 6c4119 9821101 14892024 190818a4 52020d5 709a00 81118d 1e02085c 81d05a 11584182 8219aa 844b4a c027401 84a0a0 16106100 85d886 878686 722017 88815f 8a4994 8a902d 8f2222 a54a908 9084c5 a861184 8d2d01 6824444 aaa1410 60085e8 914a95 91d941 92028f 970c0e 16203184 980406 998260 998892 9d5050 4311a90 3aa170 a00063 a0c289 15190288 a428d2 642e8a 3813160 a66822 a91e84 b08ad4 b580b1 15085128 c06a68 c24f20 c54154 c60964 c81ce0 c94862 604a110 a10a00b a61e00 d190b4 d96104 e10a19 e14520 f8c04a 1002507 100486e 720442a 1009657 100c5cc 1011883 10269e8 102e431 1061538 198ac010 1085b41 1b2b0024 10a3215 10c4027 10d3180 14109658 f212a2 1033159 111832a 11206ca 11300e4 1c064948 12542049 11459a2 118c281 11e3481 11f011a 1205479 1241343 1249814 124a829 39a0019 60c1a41 4c43442 1280c1c0 15101824 14322920 14c36008 8482220 a249602 14900189 a30b520 15058442 3c21221 10991a02 17013030 f808142 18401650 91280a6 1c2cb000 21c2d04 1aea0204 14032829 50b8520 6100272 10120c19 c00920e 109642c0 4012410 8921914 b003200 10626800 4b94804 6700441 998b048 61e1064 19600921 420b01b 3402366 12109443 12009490 3461250 e2830a2 7862240 b612120 d004685 a48c812 a266200 1c0028b8 40c2670 1412006b 1c4a0388 32a0110 208138e 13840144 9911c20 83014d2 8c8110b c043064 1941080a ca41488 11216205 a80c296 6230650 a523001 2102cb8 6886481 280224f 9303104 51403c4 628022c 1b131180 7f05004 124e0488 a029808 1404b281 813001f 6d09208 14288a86 5c01258 3864803 2831311 9847010 12302341 13009189 5a12a42 a0a4950 3a17008 c5a4442 5825054 1089c2a 12008c6d 620a123 1c364014 7830820 84aa00e 1b900644 2093a62 50404cd c212668 a026c18 c28e8a0 18412014 19330252 10259250 1230a414 213222c 41804e5
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-3-23 12:55:21 | 显示全部楼层
mathe 发表于 2018-3-22 17:07
29人
[1027]190a0aa4 11a1009c 148812c8 84990c2 d0d0580 606922 908c904 319a02 4c06cc 29310b1 47a4888  ...

29-[1027]的第19行左首开始:b442c07 0 8442c14 ...,这个0很容易被忽略,求29-[1180]方案

点评

凭直觉,最好的答案不应该有0。  发表于 2018-3-23 13:41
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2018-3-23 11:17:48 | 显示全部楼层
本帖最后由 王守恩 于 2018-3-23 12:02 编辑
mathe 发表于 2018-3-23 10:29
现在29人进化到1180瓶酒,28人进化到951人了。看来28人也有希望,不过快到极限了


唠叨几句。
1,目的很明确:用最小的列,算出最大的行。
2,任意两列之间互换位置,答案不变。
     任意两行之间互换位置,答案不变。
我们总可以认定:第1行棋子的二进制数是最小的。
3,如果我们已经找到一个好的答案,则:
去掉其中的若干列,任意行后,仍是一个好的答案。
4,最好的答案,肯定是:
任意两列上棋子数目的和是很接近的。
   
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2018-3-23 10:29:34 | 显示全部楼层
现在29人进化到1180瓶酒,28人进化到951人了。看来28人也有希望,不过快到极限了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-5 23:16 , Processed in 0.046911 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表