1. django制作first app(1)

    django中的migrate有三种: 1、makemigrate 2、sqlmigrate 3、migrate

    makemigrate,基于当前的model,根据对models的修改,创建新的迁移文件 sqlmigrate,用于显示迁移的SQL语句 migrate,是真正用于执行迁移操作的命令

    一般用法是修改models之后,以如下命令顺序执行

    python manage.py makemigrate
    python manage.py sqlmigrate appname 0001
    python manage.py migrate
    

    一些简单的查询语句都可以通过对python的对象的操作来实现,比如

    Question.objects.filter(id=1)
    Question.objects.all()
    Question.objects.get(pk=1)
    
    # Question是Choice的外键
    q = Question.objects ...
    Tagged as : develop django migrate
  2. 字符串最小表示

    字符串最小表示

    这个是求字符串循环之后的最小串:把字符串先复制一份放到原串末尾,然后对两个串相互比较,这里先比较i=0和j=1这两个串,如果出现了字符不相等的情况,需要选择i和j其中一个改变其值,改多少呢?

    如果a[i+k] > a[j+k],那么把i变成i+k+1即可,为什么呢?为什么i不可能是i到i+k中的值呢?因为无论i取i到i+k中的任何值(假设为i+m),那么我们都可以找到另一个串a[j+m]比a[i+m]要小(因为a[j+k] < a[i+k]),因此i如果变成i+m的话,其实不是最优的。

    贴下关键部分的代码

    int go(){
        int i = 0, j = 1 ...
    Tagged as : 字符串
  3. SRM 208

    SRM 208 DIV1 的level 3,题意是给一个张网,每个给子里有一定量的苹果,求然后有三个人从左上角走到右下角,每个人走过一个格子的时候就会把当前格子里的苹果都带走,问三个人能拿到的最多的苹果是多少。

    很显然的一个解法dp,dp[step][i][j][k],意义是走完step步,第一个人在(i,step-i),第二个人在(j,step-j),第三人在(k,step-k)的时候能拿到的最多苹果是多少。

    这题还有另一种解法,是要观察出一个性质,就是三条路径除了第一行和最后一行,路径不会相交,就是说可以理解成从第一行连到最后一行的三条路,路径不相交,相交肯定不是最优的,这个比较容易证明。然后是dp的时候怎么能体现出这个三条路径不相交的性质来。dp[row][i][j][k]为第row行,当前三条路径终点在(row,i),(row,j),(row,k)三个点时能拿到的最多苹果 ...

    Tagged as : DP
  4. DP专辑

    写一些关于DP的知识

    1、任何的01背包,都可以把价值V和容量W互换,就是说有两种方法可以解背包,比如将n个物品放入容量为W的背包,问能获得的最大价值。可以转化为,将n个物品放入容量为V(V为所有物品的价值总和)的背包,能获得的最小价值(对应于原问题中的最小重量)是多少。所以,当某个方向的问题不可解时(比如状态太多,或者状态下标要用浮点数表示什么的)就可以将其用另一个方向做,典型的问题是hdu2955抢银行。

    2、有的时候我习惯用dp值为-1代表某个状态不可达,因为有些时候怕如果赋值为正负无穷的话会运算越界,但是如果设置不合法dp值为-1的话,一定要确保正常的dp值不能为-1。

    3、打印解路径。可以用两个一维数组打印(一个数组是dp数组,另一个是决策数组s,s[i]记录dp[j]是怎么转移来的),这个时候需要背包是恰好装满时候的背包,如果是可以不装满的背包,无法用两个一维数组来打印解路径,需要至少用一个二维数组,但是其实任何不装满的背包都可以按照装满背包的方法解,最后再检查一遍所有的合法值就行了。

    Tagged as : DP
  5. eclipse的C++索引index

    eclipse中经常碰到一些头文件找不到的问题,就是程序能编译通过,但是编辑器上就是显式unresolved include files,这个时候,可以对工程进行配置,右键工程的property,找到C/C++ General,里面有个Paths and Symbols,在include的GNU C和GNU C++中都添加相应的头文件,如果只配置C++,那么以.c为后缀的文件就不能找到相应的头文件了,所以把两个都配上。配置好之后如果还不行,那就右键工程,点index,Rebuild就可以了。

    Tagged as : develop eclipse
  6. 看电影

    从今天起把看过的电影记录一下

    1、砰然心动(flipped)

    感觉这个电影挺好的,以两个人的内心世界同时反映一件事情,看的时候感慨挺多的

    A、比如开始的部分,女孩在男孩上学的时候大胆地抱住他,男孩想的是这女孩怎么这么烦,我作为一个旁观者也感觉确实是挺头疼的,但是换到了女孩的内心时,她想的确实想让男孩摆脱害羞,这倒着实让我吃了一惊,每个人有自己的表达情感的方式和处理事情的方式,有些可能外表上看起来不大好,但是背后很有可能也是一颗火热的心。

    B、还有印象比较深的就是,面对一件事情的时候,最好的解决办法可能是直接说出来,不要扭扭捏捏,有些事情上需要委婉,但是有些事情上可能需要坚决果断。

    C、看到两家一起吃饭的时候感觉挺好的,虽然饭桌上有些讽刺的话,但是感觉这样的生活才是生活,以后要和邻居多多来往,偶尔请来家里一起吃个饭,让孩子一起玩玩还是很不错的。

    D、同样是饭桌上的感受,关于那个男孩的父亲为什么后来沉默,电影里没点明,但是大概能才出来,可能他年轻的时候比较懦弱,没有继续把事情做下去,其实很多人人生都有缺憾,我现在也慢慢意识到这个问题,我想应该现在想做什么就努力去做,不要到以后后悔。

    我觉得看电影的很大的好处就是,可以以旁观者的角度思考问题,偶尔可以把自己放到情境里想想如果我是其中的一个角色,我会怎么做,很多时候真的自己也不知道该怎么做,这个时候就会有很多的感受呢!

    2 ...

    Tagged as : movie
  7. 数据结构汇总

    总结一下接触过的常用数据结构(FIFO队列和栈就不说了,SPLAY、Treap、红黑树什么的看情况再写)

    先说下STL,STL迭代器分为五种,input,output,正向,双向,随机存取。支持后面特性的迭代器一定支持前面的。

    STL中,vector和deque都支持随机访问;set,map和list都只支持到双向迭代器,不支持随机存取,也就是说不能对这三个的迭代器进行+-运算(但是可以进行++,--运算,因为支持双向迭代);stack,queue,priority_queue不支持迭代器,它们都是容器适配器。

    1、单调队列

    队列内的元素是单调排列的,和普通队列的区别在于队列尾部可以弹出元素。常用于优化DP什么的,一般可以把复杂度相对高的东西优化不少。

    2、树状数组

    问题是:给定一个数组,支持两种操作:A.修改某个元素的值,B.查询某个区间[L,R]的所有元素的和

    树状数组也叫Fenwick Tree,本质是用数的二进制进行快速计算,设置一个C数组,C ...

  8. 素数筛的复杂度分析

    典型的求素数用的是筛子的方法,最简单的程序是这样的

    void getPrime(int n){
        int mk[100005] = {0};
        vector<int> prime;
    
        for(int i=2; i<=n; i++){
            if(!mk[i])prime.push_back(i);
            for(int j=i+i; j<=n; j+=i)
                mk[j] = 1;
        }
    }
    

    那如果要筛出<=n的质数,大概的复杂度是多少呢?
    其实需要的次数为n x (1 + 1/2 + 1/3 + 1/4 ...

    Tagged as : 数论 素数
  9. 折腾博客

    博客出问题好久了,一直没有注意搞,今天终于好好弄了一遍,记录一些问题。

    记得在git shell中加入git remote add origin https://github.com/heifrank/heifrank.github.io.git,查看的时候可以用git remote -v来查。之前出的问题是git的submodule相关的,不太了解git具体怎么用,好像说是要用gitmodule这个文件,还有一些命令什么的,没搞清楚,其实说白了就是pelican-themes和pelican-plugins是两个子模块,之前不用指定gitmodule就能用,现在不行了,必须用gitmodule。我于是把主题和插件的位置都换成了本机的绝对路径,就没问题了,具体可以见pelicanconf.py的设置即可。

    开始配置的时候好像还需要git user什么的
    git config --global user.name "your name"
    git config --global user.email "your email"

    还有一些命令比如git ...

    Tagged as : blog
  10. 设计模式学习笔记

    按照最近学习的顺序记录设计模式的一些知识

    我觉得设计模式要注意的主要方面有几个
    a)面向接口编程!!!
    b)开闭原则!!!(对修改封闭,对扩展开放)
    c)设计模式很相通,有些设计模式非常相似,不需要太纠结细节,只要能设计出合适的类就OK,不用在乎具体是哪个模式

    写在前面

    所有的设计模式的最终目的都是:让代码结构更加清晰(方便看你代码的人一眼就懂),当发生变动的时候,改动代码的代价最小。站在开发者的角度想,比如你用了个别人开发的库,你想在他开发的这个库基础上进行开发,那么你就得使用这个库,怎么用就是个大问题。
    a)如果你用他的库,却要做一大堆的初始化,还有先后顺序要考虑,那你就很头疼;如果很简单就能用多好
    b)如果你用他的库,却需要修改他的源代码,那就是个痛苦的决定:如果能直接继承或者包含个他的类多好
    c)如果你用他的库,但是他的库中各个模块的耦合度太高,牵一发而动全身,那就是个不良的设计:如果代码清晰耦合度低多棒

    先做个哈希表

    单例模式 1
    简单工厂模式 9
    工厂方法模式 10
    抽象工厂模式 ...

    Tagged as : learning design

Pages

Categories

Tags

Page 1 / 2