近期学习规划



无干货~

纯粹是个人的学习记录~~


 


 

CDQ  

 

四维偏序 

Rectangle 矩形藏宝地

 HYSBZ - 1790 

 

数据库  http://blog.csdn.net/baolibin528/article/details/43173175

菜鸟教程   http://www.runoob.com/ 

 

 

 

http://blog.csdn.net/tham_/article/details/68555100

http://blog.csdn.net/braketbn/article/details/51187181

 

kd树

hdu5809

hdu4347

 

数据结构https://blog.sengxian.com/

 

 

poj题目分类

计算几何

网络流

 



 排序算法总结

c++精度问题here

同余 ?http://blog.csdn.net/guhaiteng/article/details/52588223

 

后缀数组:链接

 

后缀自动机: 学习链接

 

最短路here

 

Lucas定理&扩展Lucas定理&BSGS算法&扩展BSGS算法 :链接

 

http://www.cnblogs.com/general10/p/7380607.html (忘了这是什么...)

 

lrj142

 

概率: 链接  

线性基:链接

              链接

数学: 链接

  

 http://blog.csdn.net/f_zyj

 

背包:http://love-oriented.com/pack/Index.html

 

 

博弈:http://blog.csdn.net/theprinceofelf/article/details/7225206

http://blog.sina.com.cn/s/blog_83d1d5c70100y9yd.html

http://www.360doc.com/content/15/0616/16/21207324_478544573.shtml

http://www.360doc.com/content/15/0616/17/21207324_478562105.shtml

http://www.360doc.com/content/16/0313/12/21207324_541805330.shtml

 

 状压dp:http://blog.csdn.net/jiangzh7/article/details/8742734

 

矩阵相关:http://blog.csdn.net/wust_zzwh/article/details/52058209

 

 

 

dp:    法官那个题http://www.cnblogs.com/kuangbin/archive/2011/08/04/2126809.html

        http://blog.csdn.net/lyy289065406/article/details/6671105

    游戏那个题http://www.cnblogs.com/tom987690183/p/3647012.html

 

数位dp:https://wenku.baidu.com/view/d2414ffe04a1b0717fd5dda8.html

    https://wenku.baidu.com/view/1e6ed0bbfd0a79563c1e72a8.htmlhttp:/wenku.baidu.com/view/1e6ed0bbfd0a79563c1e72a8.html

 

hdu2062:http://blog.csdn.net/lianqi15571/article/details/8877014

 1 /*
 2 考虑一个集合 An = { 1, 2, ..., n}。比如,A1={1},A3={1,2,3}。我们称一个非空子集元素的排列为一个子集序列。
 3 对所有的子序列按字典顺序排序。你的任务就是给出第m个子序列。
 4 
 5 
 6 详细题解:http://blog.csdn.net/lianqi15571/article/details/8877014
 7 不难发现,An可以按首数字分成n组,而每组里除了第一项,剩下的就是An-1的子集合了。
 8 ∴f(n) = n[f(n-1) + 1]
 9 f(1) = 1
10 
11 本题目的关键是先求的An中每一组的个数g(n)
12 不难得出:g(n) = f(n) / n
13 ∵f(n) = n[f(n-1) + 1]
14 ∴g(n) = n[f(n-1) + 1] / n = f(n-1) + 1
15 ∵f(n-1) = (n-1) * g(n-1)
16 ∴g(n) = (n-1) * g(n-1) + 1
17 
18 */
19 
20 #include<cstdio>
21 #define ll long long
22 
23 int main()
24 {
25     int i,n,t;//n:一共多少元素<=20。t:所求子集位于分组后的第几组
26     ll m;//位于第几个子集
27     ll c[21]={0};//后面将子集分组后平均每组个数,如:c[2]表示n=2时的分组每组中子集数
28     int s[21];//后面将子集按字典序分组后每组的初始首元素,组数<=20
29 
30 
31     for (i=1;i<21;i++)
32         c[i]=c[i-1]*(i-1)+1;//推导出来的c[n]=(n-1)*c[n-1]+1
33     while (scanf("%d%I64d",&n,&m)!=EOF)
34     {
35         for(i=0;i<21;i++)
36             s[i]=i;//每循环一次就重新归位每组首元素
37         while (n>0&&m>0)
38         {
39             t=m/c[n]+(m%c[n]>0?1:0);
40             if(t>0)//得到第m个子集在分组后的第t组,若t>0
41             {
42                 printf("%d",s[t]);
43                 for(i=t;i<=n;i++)
44                     s[i]=s[i+1];//或s[i]+=1,我们发现:第n组中,第2个元素在第n个时变为它的下一个数
45                 m-=((t-1)*c[n]+1);//减去(t-1组总子集数+1),m变为表示在剩余子集中位于第几个
46                 putchar(m==0?'\n':' ');
47             }
48             n--;//依次递减,直到执行上面的if代码或退出
49         }
50 
51 
52     }
53     return 0;
54 }

 

posted @ 2017-03-28 23:30  yijiull  阅读(426)  评论(0编辑  收藏  举报