显示下一条  |  关闭

@Boleyn Su's

信息学,随笔,日记

 
 
 
 
 
 
 
 

重庆市 江北区 双鱼座

 发消息  写留言

 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

自定义模块

 
 
模块内容加载中...
 
 
 
 
 
 
 
日志评论
评论列表加载中...
 
 
 
 
 
 
 
模块内容加载中...
 
 
 
 
 
 
 
 

字典树。

CODE:

#include <iostream>

#include <algorithm>

#include <string>

#include <cstring>

#include <cassert>

#include <sstream>

#include <map>

#include <vector>

#include <set>

using namespace std;

 

struct Trie

{

    Trie* f;

    Trie* c[26];

    int d;

};

Trie pool[4*1024*1024];

Trie* top=pool;

Trie* root;

#define f(x) ((x)-'a')

 

void calc(Trie* p,char* s,int d,set<Trie*>& get)

{

    if (p)

    {

       if (*s)

       {

           calc(p->c[f(*s)],s+1,d,get);

           if (d)

           {

              for (int i=0;i<26;i++)

                  calc(p->c[i],s,d-1,get);

              for (int i=0;i<26;i++)

                  calc(p,s+1,d-1,get);

              for (int i=0;i<26;i++)

                  calc(p->c[i],s+1,d-1,get);

           }

       }

       else get.insert(p);

    }

}

 

 

int main()

{

    root=top++;

    int n,m;

    cin>>n;

    for (int i=0;i<n;i++)

    {

       char db[16];

       cin>>db;

       Trie* p=root;

       char* s=db;

       while (*s)

       {

           if (!p->c[f(*s)]) top->f=p,p->c[f(*s)]=top++;

           p=p->c[f(*s)];

           p->d++;

           s++;

       }

    }

    cin>>m;

    for (int i=0;i<m;i++)

    {

       char s[1024];

       int d;

       cin>>s>>d;

       set<Trie*> get;

       calc(root,s,d,get);

       int answer=0;

       for (set<Trie*>::reverse_iterator it=get.rbegin();it!=get.rend();it++)

       {

           Trie* p=*it;

           int delta=p->d;

           while (p!=root)

           {

              p=p->f;

              set<Trie*>::iterator t=get.find(p);

              if (t!=get.end()) delta=0;

           }

           answer+=delta;

       }

       cout<<answer<<endl;

    }

}

 

作者  | 2012-4-8 17:17:58 | 阅读(7) |评论(0) | 阅读全文>>

[The 2009 ACM-ICPC Asia Harbin Regional Contest]D.Gold Mines

2012-4-8 17:11:37 阅读10 评论0 82012/04 Apr8

最小费用流。

CODE:

#include <iostream>

#include <algorithm>

#include <string>

#include <cstring>

#include <cassert>

using namespace std;

 

#define oo 0x7f7f7f7f

#define MAXEDGE 510000

#define MAXV 1002

 

typedef struct struct_edge* edge;

struct struct_edge{int v,c,d;edge n,b;};

struct_edge pool[MAXEDGE];

edge top;

int S,T,V;

edge adj[MAXV];

int q[MAXV];

bool inq[MAXV];

int head,tail;

edge p[MAXV];

int d[MAXV];

void add_edge(int u,int v,int c,int d)

{

     top->v=v,top->c=c,top->d=d,top->n=adj[u],adj[u]=top++;

     top->v=u,top->c=0,top->d=-d,top->n=adj[v],adj[v]=top++;

     adj[u]->b=adj[v];

     adj[v]->b=adj[u];

}

int min_cost_flow(int n,int t)

{

    int flow=0,cost=0;

    for (;;)

    {

        memset(d,oo,sizeof(d));

        inq[q[head=tail=0]=S]=true;

        d[S]=0;

        p[S]=0;

        while (head<=tail)

        {

              int u;

              inq[u=q[(head++)%MAXV]]=false;

              for (edge i=adj[u];i;i=i->n)

                  if (i->c&&d[i->v]>d[u]+i->d)

                  {

                     if (!inq[i->v])

                        inq[q[(++tail)%MAXV]=i->v]=true;

                     d[i->v]=d[u]+i->d;

                     p[i->v]=i;

                  }

        }

        if (d[T]==oo) break;

        else

        {

            int delta=oo;

            for (edge i=p[T];i;i=p[i->b->v])

                if (delta>i->c) delta=i->c;

            for (edge i=p[T];i;i=p[i->b->v])

                i->c-=delta,i->b->c+=delta;

            flow+=delta;

            cost+=d[T]*delta;

        }

    }

    if (flow!=n) return 1+t;

    return cost;

}

 

int E;

int u[MAXEDGE],v[MAXEDGE];

int n;

int mine[MAXV];

int price[MAXV];

bool source[MAXV];

int total_price;

int result(int t)

{

    if (t)

    {

       int answer=-1,i=0;

       if (t==n)

       {

           source[0]=true;

           int get=result(t-1);

           if (get>answer) answer=get;

           source[0]=false;

       }

       else

       {

           int k=n-t;

           while (k) if (source[i++]) k--;

           while (i<n*2)

           {

              if (!source[i])

              {

                  source[i]=true;

                  int get=result(t-1);

                  if (get>answer) answer=get;

                  source[i]=false;

              }

              i++;

           }

       }

       return answer;

    }

    else

    {

       memset(adj,0,sizeof(adj));

       top=pool;

       S=V+V,T=V+V+1;

       for (int i=0;i<E;i++)

           add_edge(u[i]+V,v[i],1,0),

           add_edge(v[i]+V,u[i],1,0);

       for (int i=0;i<V;i++)

           add_edge(i,i+V,1,price[i]);

       for (int i=0;i<n*2;i++)

           if (source[i]) add_edge(S,mine[i],1,0);

           else add_edge(mine[i]+V,T,1,0);

       return total_price-min_cost_flow(n,total_price);

    }

}

 

int main()

{

    int T;

    cin>>T;

    for (int t=0;t<T;t++)

    {

       cin>>V>>E;

       for (int i=0;i<E;i++)

           cin>>u[i]>>v[i];

       cin>>n;

       for (int i=0;i<n*2;i++) cin>>mine[i];

       total_price=0;

       for (int i=0;i<V;i++) cin>>price[i],total_price+=price[i];

       cout<<result(n)<<endl;

    }

}

 

作者  | 2012-4-8 17:11:37 | 阅读(10) |评论(0) | 阅读全文>>

The 2010 Asia Regional Contests

2012-3-11 0:15:48 阅读24 评论0 112012/03 Mar11

You has solved this problem :-)3660Alice and Bob's Trip2010 Asia Regional Harbin(502/2007)25.01%
 3661Assignments2010 Asia Regional Harbin(455/958)47.49%
 36623D Convex Hull2010 Asia Regional Harbin(252/491)51.32%
 3663Power Stations2010 Asia Regional Harbin(306/1222)25.04%
 3664Permutation Counting2010 Asia Regional Harbin(378/749)50.47%
 3665Seaside2010 Asia Regional Harbin(435/647)67.23%
You has solved this problem :-)3666THE MATRIX PROBLEM2010 Asia Regional Harbin(1009/3915)25.77%
You has solved this problem :-)3667Transportation2010 Asia Regional Harbin(492/1275)38.59%
 3668Volume2010 Asia Regional Harbin(237/805)29.44%
 3669Cross the Wall2010 Asia Regional Harbin(520/2942)17.68%
 3680Naughty fairies2010 Asia Hangzhou Regional Contest(104/767)13.56%

3681Prison Break2010 Asia Hangzhou Regional Contest(370/1461)25.33%
 3682To Be an Dream Architect2010 Asia Hangzhou Regional Contest(356/1292)27.55%
 3683Gomoku2010 Asia Hangzhou Regional Contest(182/713)25.53%
 3684Gunshots2010 Asia Hangzhou Regional Contest(64/482)13.28%
 3685Rotational Painting2010 Asia Hangzhou Regional Contest(352/1204)29.24%
 3686Traffic Real Time Query System2010 Asia Hangzhou Regional Contest(150/873)17.18%
 3687National Day Parade2010 Asia Hangzhou Regional Contest(338/801)42.20%
 3688Searchlights2010 Asia Hangzhou Regional Contest(74/269)27.51%
 3689Infinite monkey theorem2010 Asia Hangzhou Regional Contest(299/520)57.50%
 3690Knight's Problem2010 Asia Fuzhou Regional Contest(0/264)0.00%
 3691Nubulsa Expo2010 Asia Fuzhou Regional Contest(102/249)40.96%
 3692Shade of Hallelujah Mountain2010 Asia Fuzhou Regional Contest(61/273)22.34%
 3693Math teacher's homework2010 Asia Fuzhou Regional Contest(27/91)29.67%
 3694Fermat Point in Quadrangle2010 Asia Fuzhou Regional Contest(113/762)14.83%
 3695Computer Virus on Planet Pandora2010 Asia Fuzhou Regional Contest(252/926)27.21%
 3696Farm Game2010 Asia Fuzhou Regional Contest(74/161)45.96%
 3697Selecting courses2010 Asia Fuzhou Regional Contest(111/502)22.11%
 3698Let the light guide us2010 Asia Fuzhou Regional Contest(73/240)30.42%
 3699A hard Aoshu Problem2010 Asia Fuzhou Regional Contest(134/264)50.76%
 3709Balanced NumberGAO, Yuan2010 Asia Chengdu Regional Contest(134/385)34.81%
 3710Battle over CitiesGUAN, Yao2010 Asia Chengdu Regional Contest(18/60)30.00%
 3711Binary NumberCAO, Peng2010 Asia Chengdu Regional Contest(261/382)68.32%
 3712Detector PlacementGUAN, Yao2010 Asia Chengdu Regional Contest(43/151)28.48%
 3713Double MazeGAO, Yuan2010 Asia Chengdu Regional Contest(129/342)37.72%
 3714Error CurvesLIN, Yue2010 Asia Chengdu Regional Contest(258/679)38.00%
 3715Go DeeperCAO, Peng2010 Asia Chengdu Regional Contest(253/663)38.16%
 3716JengaXIAO, Dong2010 Asia Chengdu Regional Contest(10/37)27.03%
 3717RescueHANG, Hang2010 Asia Chengdu Regional Contest(30/113)26.55%
 3718SimilarityLIN, Yue2010 Asia Chengdu Regional Contest(197/473)41.65%
 3719Snooker RefereeXIAO, Dong2010 Asia Chengdu Regional Contest(1/16)6.25%
You has solved this problem :-)3720Arranging Your Team2010 Asia Tianjin Regional Contest(123/394)31.22%
You has solved this problem :-)3721Building Roads2010 Asia Tianjin Regional Contest(93/282)32.98%
You has solved this problem :-)3722Card Game2010 Asia Tianjin Regional Contest(184/445)41.35%
You has solved this problem :-)3723Delta Wave2010 Asia Tianjin Regional Contest(76/195)38.97%
You has solved this problem :-)3724Encoded Barcodes2010 Asia Tianjin Regional Contest(210/656)32.01%
 3725Farm2010 Asia Tianjin Regional Contest(2/14)14.29%
 3726Graph and Queries2010 Asia Tianjin Regional Contest(41/321)12.77%
You has solved this problem :-)3727Jewel2010 Asia Tianjin Regional Contest(46/291)15.81%
 3728Hyperspace Travel2010 Asia Tianjin Regional Contest(8/89)8.99%
You has solved this problem :-)3729I'm Telling the Truth2010 Asia Tianjin Regional Contest(215/425)50.59%

作者  | 2012-3-11 0:15:48 | 阅读(24) |评论(0) | 阅读全文>>

The 2011 Asia Regional Contests

2012-2-27 13:22:20 阅读38 评论0 272012/02 Feb27


4051Compress the StringHANG, Hang2011 Asia Dalian Regional Contest(13/100)13.00%
 4052Adding New MachineGUAN, Yao2011 Asia Dalian Regional Contest(50/255)19.61%
You has solved this problem :-)4053The Last PuzzleWANG, Yelei2011 Asia Dalian Regional Contest(31/227)13.66%
You has solved this problem :-)4054Hexadecimal ViewWU, Zejun2011 Asia Dalian Regional Contest(137/308)44.48%
You has solved this problem :-)4055Number StringHONG, Qize2011 Asia Dalian Regional Contest(125/290)43.10%
 4056Draw a MessHU, Jun2011 Asia Dalian Regional Contest(43/268)16.04%
You has solved this problem :-)4057Rescue the RabbitHONG, Qize2011 Asia Dalian Regional Contest(122/420)29.05%
 4058Advanture of XiaoxingxingGUAN, Yao2011 Asia Dalian Regional Contest(2/26)7.69%
You has solved this problem :-)4059The Boss on MarsZHANG, Chao2011 Asia Dalian Regional Contest(93/280)33.21%
 4060Chess BoardGUAN, Yao2011 Asia Dalian Regional Contest(18/92)19.57%
You has solved this problem :-)4081Qin Shi Huang's National Road System2011 Asia Beijing Regional Contest(150/345)43.48%
You has solved this problem :-)4082Hou Yi's secret2011 Asia Beijing Regional Contest(142/417)34.05%
 4083Three Kingdom Chess2011 Asia Beijing Regional Contest(5/55)9.09%
 4084The Voyages of Zheng He2011 Asia Beijing Regional Contest(0/0)0.00%
 4085Peach Blossom Spring2011 Asia Beijing Regional Contest(69/179)38.55%
 4086Harry Potter and the holy banquet2011 Asia Beijing Regional Contest(1/15)6.67%
You has solved this problem :-)4087ALetter to Programmers2011 Asia Beijing Regional Contest(57/163)34.97%
 4088Healing2011 Asia Beijing Regional Contest(0/16)0.00%
You has solved this problem :-)4089Activation2011 Asia Beijing Regional Contest(79/294)26.87%
You has solved this problem :-)4090GemAnd Prince2011 Asia Beijing Regional Contest(75/232)32.33%
You has solved this problem :-)4091Zombie’s Treasure Chest2011 Asia Shanghai Regional Contest(312/1417)22.02%
 4092Yummy Triangular Pizza2011 Asia Shanghai Regional Contest(10/25)40.00%
 4093Xavier is Learning to Count2011 Asia Shanghai Regional Contest(7/109)6.42%
 4094Winmine.exe2011 Asia Shanghai Regional Contest(0/0)0.00%
 4095Very Boring Homework2011 Asia Shanghai Regional Contest(17/43)39.53%
You has solved this problem :-)4096Universal Question Answering System2011 Asia Shanghai Regional Contest(63/311)20.26%
You has solved this problem :-)4097Triangles and Quadrangle2011 Asia Shanghai Regional Contest(142/608)23.36%
 4098Share the Cakes2011 Asia Shanghai Regional Contest(1/62)1.61%
You has solved this problem :-)4099Revenge of Fibonacci2011 Asia Shanghai Regional Contest(109/591)18.44%
 4100Quelling Blade2011 Asia Shanghai Regional Contest(15/30)50.00%
You has solved this problem :-)4111Alice and Bob2011 Asia ChengDu Regional Contest(87/247)35.22%
You has solved this problem :-)4112Break the Chocolate2011 Asia ChengDu Regional Contest(344/1060)32.45%
You has solved this problem :-)4113Construct the Great Wall2011 Asia ChengDu Regional Contest(9/37)24.32%
 4114Disney's FastPass2011 Asia ChengDu Regional Contest(106/455)23.30%
You has solved this problem :-)4115Eliminate the Conflict2011 Asia ChengDu Regional Contest(155/425)36.47%
You has solved this problem :-)4116Fruit Ninja2011 Asia ChengDu Regional Contest(6/158)3.80%
You has solved this problem :-)4117GRE Words2011 Asia ChengDu Regional Contest(79/558)14.16%
You has solved this problem :-)4118Holiday's Accommodation2011 Asia ChengDu Regional Contest(153/602)25.42%
You has solved this problem :-)4119Isabella's Message2011 Asia ChengDu Regional Contest(163/502)32.47%
 4120Ji-Tu Problem2011 Asia ChengDu Regional Contest(19/127)14.96%
You has solved this problem :-)4121Xiangqi2011 Asia Fuzhou Regional Contest(191/727)26.27%
You has solved this problem :-)4122Alice's mooncake shop2011 Asia Fuzhou Regional Contest(159/763)20.84%
You has solved this problem :-)4123Bob’s Race2011 Asia Fuzhou Regional Contest(112/383)29.24%
 4124My World Cup2011 Asia Fuzhou Regional Contest(6/8)75.00%
You has solved this problem :-)4125Moles2011 Asia Fuzhou Regional Contest(117/455)25.71%
You has solved this problem :-)4126Genghis Khan the Conqueror2011 Asia Fuzhou Regional Contest(69/262)26.34%
You has solved this problem :-)4127Flood-it!2011 Asia Fuzhou Regional Contest(67/203)33.00%
You has solved this problem :-)4128Running relay2011 Asia Fuzhou Regional Contest(52/252)20.63%
 4129Porcelain Exhibitions2011 Asia Fuzhou Regional Contest(10/35)28.57%
 4130Shadow2011 Asia Fuzhou Regional Contest(8/43)18.60%

作者  | 2012-2-27 13:22:20 | 阅读(38) |评论(0) | 阅读全文>>

我为何质疑一切[持续更新中]

2012-2-21 14:08:58 阅读35 评论0 212012/02 Feb21

在上一篇《我如何看待宗教》中,我表明了我质疑一切的态度。
而为什么要这样做呢?为什么我们就不能相信一些东西?我觉得其实这应该算是哲学问题吧,但是它也有很多实际意义的。

一、数学危机
我想先讲讲数学吧(因为本人比较喜欢数学),我相信很多人了解数学的三次危机,但是不妨在这里再讲讲。
第一次,无理数的发现。“属于毕达哥拉斯学派的希帕索斯发现边长为1的正方形的对角线长度不能用整数或分数来表达。”[1]
第二次,跟无穷小量和微积分有关系(有趣的是,本人初中时写过一篇关于这个悖论的论文,那篇论文里可以隐约看到无穷小量的影子,当时我叫它非绝对零)。“一根箭是不可能移动的,因为箭在其飞行过程中的任何瞬间都有固定位置,则可知一枝动的箭是所有不动的集合,所以可导出一根箭是不可能移动的。”[2]
第三次,著名的理发师悖论。“一位理发师说:‘我只帮所有不自己刮脸的人刮脸。’那么理发师是否给自己刮脸呢?如果他给的话,但按照他的话,他就不该给自己刮脸(因为他‘只’帮不自己刮脸的人刮脸);如果他不给的话,但按照他的话,他就该给自己刮脸(因为是‘所有’不自己刮脸的人,包含了理发师本人),于是矛盾出现了。”[3]
这里边的每次危机,都几乎可以颠覆当时数学。然而正是这些质疑的声音,使得数学的漏洞被一个个的填补,从而更加的严密。而如果不质疑,我们就可能长时间的沉浸在狭隘的数学中。当然,这个时候一定会有人问我(原来就遇到过这样问的),“那可不可以质疑‘1+1=2’呢”,我的回答是“当然可以”,不过你能有什么理由来质疑它呢?

[未完待续]

参考文献
[3]第三次数学危机http://zh.wikipedia.org/wiki/%E7%AC%AC%E4%B8%89%E6%AC%A1%E6%95%B8%E5%AD%B8%E5%8D%B1%E6%A9%9F

作者  | 2012-2-21 14:08:58 | 阅读(35) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012

   
创建博客 登录  
 关注