• <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>

            Drolca

            Apologize To Drolca
            隨筆 - 28, 文章 - 1, 評(píng)論 - 6, 引用 - 0
            數(shù)據(jù)加載中……

            449

             

            #include <iostream>
            #include 
            <algorithm>
            #include 
            <cmath>
            #include 
            <vector>
            using namespace std;

            class MountainRoad
            {
            public:
                
            double findDistance(vector <int> start, vector <int> finish)
                
            {
                    sort(start.begin(),start.end());
                    sort(finish.begin(),finish.end());
                    
            return sqrt(2.0)*(finish.back()-start.front());
                }

            }
            ;

            #include 
            <iostream>
            using namespace std;
            class OddDivisors
            {
            public:
                
            long long findSum(int n)
                
            {
                    
            long long sum=0LL;
                    
            for(;n;n/=2)
                    
            {
                        
            long long k=(n+1)/2;
                        sum
            +=k*k;
                    }

                    
            return sum;
                }

            }
            ;

            #include 
            <iostream>
            #include 
            <cmath>
            #include 
            <vector>
            using namespace std;

            struct point
            {
                
            int x,y;
                point(
            int a,int b)
                
            {
                    x
            =a;
                    y
            =b;
                }

            }
            ;
            vector
            <point>A,B;

            vector
            <point> find(int a)
            {
                vector
            <point>v;
                
            int x,y;
                
            for(x=0;x*x<=a;x++)
                
            {
                    y
            =int( sqrt((1.0*a-x*x)) );
                    
            if( (x*x+y*y)==a )
                    
            {
                        v.push_back( point(x,y) );
                        v.push_back( point(x,
            -y) );
                    }

                }

                
            return v;
            }


            class MaxTriangle
            {
            public:
                
            double calculateArea(int a,int b)
                
            {
                    A
            =find(a);
                    B
            =find(b);
                    
            int i,j;
                    
            double res=-1;
                    
            for(i=0;i<A.size();i++)
                        
            for(j=0;j<B.size();j++)
                        
            {
                            
            double area=abs((A[i].x*B[j].y-A[i].y*B[j].x))/2.0;
                            
            if(area&&res<area) 
                                res
            =area;
                        }

                    
            return res;

                }

            }
            ;

            posted @ 2009-09-26 14:08 Drolca 閱讀(77) | 評(píng)論 (0)編輯 收藏

            pku 2478 Farey Sequence 歐拉函數(shù)

            #include <iostream>
            using namespace std;

            const int size=1000005;
            bool ok[size];
            int ph[size];
            int prime[size];
            __int64 sum[size];
            int pn;
            int n;
            void getph()
            {
                
            int i,j;
                pn
            =0;
                
            for(i=2;i<size;i++)
                
            {
                    
            if(!ok[i])
                    
            {
                        prime[pn
            ++]=i;
                        ph[i]
            =i-1;
                    }

                    
            for(j=0;(j<pn)&&(i*prime[j]<size);j++)
                    
            {
                        ok[i
            *prime[j]]=1;
                        
            if((i%prime[j])==0)
                        
            {
                            ph[i
            *prime[j]]=ph[i]*prime[j];
                            
            break;
                        }

                        
            else
                            ph[i
            *prime[j]]=ph[i]*(prime[j]-1);

                    }

                }

            }

            int main()
            {
                ph[
            1]=1;
                getph();
                
            for(int i=2;i<size;i++)
                    sum[i]
            =sum[i-1]+ph[i];
                
            while(scanf("%d",&n)!=EOF&&(n!=0))
                    printf(
            "%I64d\n",sum[n]);
                
            return 0;
            }

            posted @ 2009-09-18 13:20 Drolca 閱讀(198) | 評(píng)論 (0)編輯 收藏

            pku 1386 Play on Words 歐拉回路

            #include <iostream>
            using namespace std;
            const int maxn=1005;
            const int M=28;
            int map[M][M];
            int chu[M],ru[M];
            bool vis[M];        
            int n;
            int sum;

            void dfs(int s)
            {
                vis[s]
            =true;
                sum
            ++;
                
            int i;
                
            for(i=0;i<26;i++)
                    
            if(map[s][i]&&!vis[i])
                        dfs(i);
            }


            int main()
            {
                
            int T;
                scanf(
            "%d",&T);
                
            while(T--)
                
            {
                    memset(map,
            0,sizeof(map));
                    memset(chu,
            0,sizeof(chu));
                    memset(ru,
            0,sizeof(ru));
                    memset(vis,
            0,sizeof(vis));

                    scanf(
            "%d",&n);
                    
            int i;
                    
            for(i=0;i<n;i++)
                    
            {
                        
            char word[maxn];
                        scanf(
            "%s",&word);
                        
            int len=strlen(word);
                        map[word[
            0]-'a'][word[len-1]-'a']=1;
                        chu[word[
            0]-'a']++;
                        ru[word[len
            -1]-'a']++;
                    }

                    
            int n0=0,n1=0,n2=0,n3=0;
                    
            int s=-1,e=-1;
                    
            for(i=0;i<26;i++)
                    
            {
                        
                        
            if(chu[i]==0&&ru[i]==0)
                            
            continue;
                        n0
            ++;
                        
            if((ru[i]-chu[i])==1)
                            n2
            ++;
                        
            if((chu[i]-ru[i])==0)
                            n3
            ++;
                        
            if((chu[i]-ru[i])==1)
                        
            {
                            s
            =i;
                            n1
            ++;    
                        }

                        e
            =i;
                    }

                    sum
            =0;
                    
            if(s!=-1)
                        dfs(s);
                    
            else
                        dfs(e);
                    
            if(sum!=n0)
                    
            {
                        printf(
            "The door cannot be opened.\n");
                        
            continue;
                    }

                    
            if( (n1==1&&n2==1&&n3==(n0-2)) || (n0==n3) )
                        printf(
            "Ordering is possible.\n");
                    
            else
                        printf(
            "The door cannot be opened.\n");
                }

                
            return 0;
            }

            posted @ 2009-09-18 12:36 Drolca 閱讀(262) | 評(píng)論 (0)編輯 收藏

            hdu 膜拜一下=.=!!!

            #include <iostream>
            using namespace std;
            int main()
            {
                
            int ball[100001],n;
                
            while(scanf("%d",&n)!=EOF&&n)
                
            {
                    memset(ball,
            0,sizeof(ball));
                    
            int i;
                    
            for(i=0;i<n;i++)
                    
            {
                        
            int a,b;
                        scanf(
            "%d%d",&a,&b);
                        ball[a]
            ++;
                        ball[b
            +1]--;
                    }

                    
            int sum=0;
                    
            for(i=1;i<n;i++)
                    
            {
                        sum
            +=ball[i];
                        printf(
            "%d ",sum);
                    }

                    printf(
            "%d\n",sum+ball[i]);
                }

                
            return 0;
            }

            posted @ 2009-09-18 00:51 Drolca 閱讀(92) | 評(píng)論 (0)編輯 收藏

            hdu 1103 悲劇了

             

            #include <iostream>
            #include 
            <vector>
            using namespace std;
            const int maxn=1000;
            struct group
            {
             
            int h,m,t;
            }
            ;
            group team[maxn];
            int main()
            {
             
            int n2,n4,n6;
             
            while(scanf("%d%d%d",&n2,&n4,&n6)!=EOF)
             
            {
              
            if(n2==0&&n4==0&&n6==0)
               
            break;
              
            char time[6];
              
            int cnt=0;
              
            while(scanf("%s",&time)!=EOF)
              
            {
               
            if(strcmp(time,"#")==0)
                
            break;
                
            int t;
               scanf(
            "%d",&t);
               team[cnt].t
            =t;
               team[cnt].h
            =(time[0]-'0')*10+(time[1]-'0');
               team[cnt].m
            =(time[3]-'0')*10+(time[4]-'0');
               cnt
            ++;
              }

              
            int i,j;
              vector
            <group> team12,team34,team56;
              __int64 sum
            =0;
              
            for(i=0;i<cnt;i++)
              
            {
               
            int len;
               group tmp;
               
            if(team[i].t==1||team[i].t==2)
               
            {

                len
            =team12.size();
                
            if(len<n2)
                
            {
                 team12.push_back(team[i]);
                 sum
            +=team[i].t;
                 
            continue;
                }

                    
                 tmp
            =team12.front();
                 
            int usetime=(team[i].h-tmp.h)*60+(team[i].m-tmp.m);
                 group fuck;
                 fuck
            =team12.back();
                 
            if(((team[i].h-fuck.h)*60+(team[i].m-fuck.m))<=0)
                     
            continue;
                 
            if(usetime<0)
                     
            continue;
                 
            if(usetime<30)
                 
            {
                 team[i].h
            =tmp.h+(tmp.m+30)/60;
                 team[i].m
            =(tmp.m+30)%60;
                 }

                  team12.erase(team12.begin());
                  team12.push_back(team[i]);
                  sum
            +=team[i].t;
               }

             

               
            if(team[i].t==3||team[i].t==4)
               
            {
                len
            =team34.size();
                
            if(len<n4)
                
            {
                 team34.push_back(team[i]);
                 sum
            +=team[i].t;
                 
            continue;
                }


                 tmp
            =team34.front();
                 
            int usetime=(team[i].h-tmp.h)*60+(team[i].m-tmp.m);
                      group fuck;
                 fuck
            =team12.back();
                 
            if(((team[i].h-fuck.h)*60+(team[i].m-fuck.m))<=0)
                     
            continue;
                 
            if(usetime<0)
                     
            continue;
                  
            if(usetime<30)
                 
            {
                 team[i].h
            =tmp.h+(tmp.m+30)/60;
                 team[i].m
            =(tmp.m+30)%60;
                 }

                  team34.erase(team34.begin());
                  team34.push_back(team[i]);
                  sum
            +=team[i].t;
               }



               
            if(team[i].t==5||team[i].t==6)
               
            {
                len
            =team56.size();
                
            if(len<n6)
                
            {
                 team56.push_back(team[i]);
                 sum
            +=team[i].t;
                 
            continue;
                }

             
                 tmp
            =team56.front();
                 
            int usetime=(team[i].h-tmp.h)*60+(team[i].m-tmp.m);
                      group fuck;
                 fuck
            =team12.back();
                 
            if(((team[i].h-fuck.h)*60+(team[i].m-fuck.m))<=0)
                     
            continue;
                 
            if(usetime<0)
                     
            continue;
                  
            if(usetime<30)
                 
            {
                 team[i].h
            =tmp.h+(tmp.m+30)/60;
                 team[i].m
            =(tmp.m+30)%60;
                 }

                  team56.erase(team56.begin());
                  team56.push_back(team[i]);
                  sum
            +=team[i].t;
               }

              }

              printf(
            "%I64d\n",sum);
             }

             
            return 0;
            }

            posted @ 2009-09-18 00:29 Drolca 閱讀(229) | 評(píng)論 (0)編輯 收藏

            Matrix

            #include <iostream>
            using namespace std;

            const int maxn=32;
            int n,k,m;
            struct matrix
            {
                
            int m[maxn][maxn];
            }
            ;
            matrix mat;

            matrix 
            operator*(const matrix &a,const matrix &b)
            {
                matrix res;
                
            int i,j;
                
            for(i=1;i<=n;i++)
                    
            for(j=1;j<=n;j++)
                    
            {
                        res.m[i][j]
            =0;
                        
            for(k=1;k<=n;k++)
                        
            {
                            res.m[i][j]
            +=a.m[i][k]*b.m[k][j];
                            res.m[i][j]
            %=m;
                        }

                    }

                
            return res;
            }


            matrix 
            operator+(const matrix &a,const matrix &b)
            {
                matrix res;
                
            int i,j;
                
            for(i=1;i<=n;i++)
                    
            for(j=1;j<=n;j++)
                        res.m[i][j]
            =(a.m[i][j]+b.m[i][j])%m;
                
            return res;
            }


            matrix power(
            int k)
            {
                matrix temp,res;
                
            if(k==1)
                    
            return mat;
                
            else
                
            {
                    temp
            =power(k/2);
                    res
            =temp*temp;
                    
            if(k%2==1)
                        res
            =res*mat;
                    
            return res;
                }

            }


            matrix solve(
            int k)
            {
                matrix temp,res;
                
            if(k==1)
                    
            return mat;
                
            else
                
            {
                    res
            =solve(k/2);
                    
            if(k%2==1)
                    
            {
                        temp
            =power(k/2+1);
                        res
            =temp*res+res+temp;
                    }

                    
            else
                    
            {
                        res
            =power(k/2)*res+res;
                    }

                    
            return res;
                }

            }


            void printf(const matrix & m)
            {
                
            int i,j;
                
            for(i=1;i<=n;i++)
                
            {
                    
            for(j=1;j<n;j++)
                        printf(
            "%d ",m.m[i][j]);
                    printf(
            "%d\n",m.m[i][j]);
                }

            }


            int main()
            {
                scanf(
            "%d%d%d",&n,&k,&m);
                
            int i,j;
                
            for(i=1;i<=n;i++)
                    
            for(j=1;j<=n;j++)
                        scanf(
            "%d",&mat.m[i][j]);
                matrix temp
            =solve(k);
                printf(temp);
                
            return 0;
            }

            posted @ 2009-09-15 01:10 Drolca 閱讀(80) | 評(píng)論 (0)編輯 收藏

            hdu 2429 Ping pong

             

            #include <iostream>
            using namespace std;

            const int M=20000+5;
            const int Maxn=100000+5;
            int skill[M];
            int tree[Maxn];
            int lmax[M],lmin[M];
            int rmax[M],rmin[M];

            int lowbit(int t){return t&(-t);}

            void add(int i)
            {
                
            while(i<Maxn)
                
            {
                    tree[i]
            ++;
                    i
            +=lowbit(i);
                }

            }

            int sum(int i)
            {
                
            int tot=0;
                
            while(i>0)
                
            {
                    tot
            +=tree[i];
                    i
            -=lowbit(i);
                }

                
            return tot;
            }


            int main()
            {
                
            int T;
                scanf(
            "%d",&T);
                
            while(T--)
                
            {
                    
            int n,i;
                    scanf(
            "%d",&n);
                    
                    
            for(i=1;i<=n;i++)
                        scanf(
            "%d",&skill[i]);
                    memset(tree,
            0,sizeof(tree));
                    
            for(i=1;i<=n;i++)
                    
            {
                        lmin[i]
            =sum(skill[i]);
                        lmax[i]
            =i-lmin[i]-1;
                        add(skill[i]);
                    }

                    memset(tree,
            0,sizeof(tree));
                    
            for(i=n;i>=1;i--)
                    
            {
                        rmin[i]
            =sum(skill[i]);
                        rmax[i]
            =sum(Maxn)-rmin[i];
                        add(skill[i]);
                    }

                    __int64 ans
            =0;
                    
            for(i=1;i<=n;i++)
                        ans
            +=lmax[i]*rmin[i]+lmin[i]*rmax[i];
                    printf(
            "%I64d\n",ans);
                }

                
            return 0;
            }

            posted @ 2009-09-06 23:41 Drolca 閱讀(223) | 評(píng)論 (0)編輯 收藏

            1026

            #include <iostream>
            using namespace std;

            const int maxn=205;
            int qun[maxn];
            char res[maxn];
            char str[maxn];
            int t[maxn];
            int n;
            void getT()
            {
                
            int i,j;
                
            for(i=1;i<=n;i++)
                
            {
                    
            if(t[i]==0)
                    
            {
                        
            int cnt=1;
                        
            int top=-1;
                        
            int same[maxn];
                        
            int pos=qun[i];
                        
            while(pos!=i)
                        
            {
                            same[
            ++top]=pos;
                            pos
            =qun[pos];
                            cnt
            ++;
                        }

                        t[i]
            =cnt;
                        
            for(j=0;j<=top;j++)
                            t[same[j]]
            =cnt;
                    }

                }

            }

            int main()
            {

                
            while(scanf("%d",&n)!=EOF&&n)
                
            {
                    
            int i,j;
                    
            for(i=1;i<=n;i++)
                        scanf(
            "%d",&qun[i]);
                    memset(t,
            0,sizeof(t));
                    
                    getT();
                    
            int k;
                    
            while(scanf("%d",&k)!=EOF&&k)
                    
            {
                        memset(res,
            '\0',sizeof(res));
                        memset(str,
            '\0',sizeof(str));
                        gets(str);
                        
            for(i=1;i<=n;i++)
                        
            {
                            
            int tmp=i;
                            
            for(j=0;j<k%t[i];j++)
                                tmp
            =qun[tmp];
                            
            if(str[i]=='\0') res[tmp]=' ';
                            
            else res[tmp]=str[i];
                        }

                        printf(
            "%s\n",res+1);
                    }

                    printf(
            "\n");
                }

                
            return 0;
            }

            posted @ 2009-09-06 10:51 Drolca 閱讀(68) | 評(píng)論 (0)編輯 收藏

            pku 1127 Jack Straws

             

            #include <iostream>
            using namespace std;
            #define min(a,b)(a<b?a:b)
            #define max(a,b)(a>b?a:b)
            const int maxn=15;
            struct point{int x,y;};
            struct line{point a,b;};
            line straw[maxn];
            bool link[maxn][maxn];
            int n;
            int multi(point p1,point p2,point p0){
                
            return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
            }

            bool across(line u,line v)
            {
                
            if( max(u.a.x,u.b.x)>=min(v.a.x,v.b.x)&&
                    max(v.a.x,v.b.x)
            >=min(u.a.x,u.b.x)&&
                    max(u.a.y,u.b.y)
            >=min(v.a.y,v.b.y)&&
                    max(v.a.y,v.b.y)
            >=min(u.a.y,u.b.y)&&
                    (multi(v.a,u.b,u.a)
            *multi(u.b,v.b,u.a)>=0)&&
                    (multi(u.a,v.b,v.a)
            *multi(v.b,u.b,v.a)>=0)    )
                
            return 1;
                
            else return 0;
            }


            void check()
            {
                
            int i,j,k;
                
            for(k=1;k<=n;k++)
                    
            for(i=1;i<=n;i++)
                        
            if(link[i][k])
                            
            for(j=1;j<=n;j++)
                                
            if(link[k][j]) link[i][j]=true;    
            }


            int main()
            {
                
            while(scanf("%d",&n)!=EOF&&n)
                
            {
                    
            int i,j;
                    
            for(i=1;i<=n;i++)
                    
            {
                        
            int sx,sy,ex,ey;
                        scanf(
            "%d%d%d%d",&sx,&sy,&ex,&ey);
                        straw[i].a.x
            =sx;straw[i].a.y=sy;
                        straw[i].b.x
            =ex;straw[i].b.y=ey;
                    }

                    
            for(i=1;i<=n;i++)
                        
            for(j=1;j<=n;j++)
                            link[i][j]
            =link[j][i]=across(straw[i],straw[j]);    
                    check();
                    
            int cx,cy;
                    
            while(scanf("%d%d",&cx,&cy)!=EOF&&cx!=0&&cy!=0)
                        
            if(link[cx][cy]) 
                            printf(
            "CONNECTED\n");
                        
            else printf("NOT CONNECTED\n");
                }

                
            return 0;
            }

            posted @ 2009-09-05 22:36 Drolca 閱讀(300) | 評(píng)論 (0)編輯 收藏

            hdu 2483 Counting square

            #include <iostream>
            using namespace std;
            int r[301][301];
            int c[301][301];
            int a[301][301];
            int b[301][301];
            int rr,cc;
            bool check(int i,int j,int k)
            {
                
            if(r[i][j+k-1]-r[i][j-1]==k)
                    
            if(r[i+k-1][j+k-1]-r[i+k-1][j-1]==k)
                        
            if(c[i+k-1][j]-c[i-1][j]==k)
                            
            if(c[i+k-1][j+k-1]-c[i-1][j+k-1]==k)
                                
            return 1;
                
            return 0;
            }

            void slove()
            {
                
            int i,j,k;
                
            int cnt=0;
                
            for(i=1;i<=rr;i++)
                    
            for(j=1;j<=cc;j++)
                    
            {    
                        
            for(k=2;k<=rr&&k<=cc;k++)
                        
            {
                            
            if(check(i,j,k))
                            
            {
                                
            int sum=b[i+k-1][j+k-1]-b[i-1][j+k-1]-b[i+k-1][j-1]+b[i-1][j-1];
                                
            int cnt_1=sum-(k-1)*4;
                                
            int cnt_0=(k-2)*(k-2)-cnt_1;
                                
            if(abs(cnt_1-cnt_0)<=1)
                                    cnt
            ++;
                            }

                        }

                    }

                printf(
            "%d\n",cnt);
            }

            int main()
            {
                
            int T;
                scanf(
            "%d",&T);
                
            while(T--)
                
            {
                    scanf(
            "%d%d",&rr,&cc);
                    
            int i,j;
                    
            for(i=1;i<=rr;i++)
                        
            for(j=1;j<=cc;j++)
                        
            {
                            scanf(
            "%d",&a[i][j]);
                            b[i][j]
            =b[i-1][j]+b[i][j-1]+a[i][j]-b[i-1][j-1];//0 0->i j
                            r[i][j]=r[i][j-1]+a[i][j];//r
                            c[i][j]=c[i-1][j]+a[i][j];//c
                        }

                    slove();
                }

                
            return 0;
            }

            posted @ 2009-08-29 00:17 Drolca 閱讀(131) | 評(píng)論 (0)編輯 收藏

            僅列出標(biāo)題
            共3頁(yè): 1 2 3 
            亚洲va久久久噜噜噜久久狠狠| 久久精品亚洲一区二区三区浴池 | 一本久久a久久精品vr综合| 亚洲国产成人久久精品99 | 久久综合九色综合网站| 久久精品国产半推半就| 精品无码久久久久久国产| 久久99精品久久久大学生| 久久精品免费观看| 偷偷做久久久久网站| 国产精品一区二区久久| 久久99这里只有精品国产| 精品久久久久久久久中文字幕| 久久99精品久久久久婷婷| 欧美国产成人久久精品| 久久综合香蕉国产蜜臀AV| 青青热久久国产久精品| 国产91色综合久久免费| 精品久久久久久久久免费影院| 精品久久久久久久国产潘金莲| 久久综合久久伊人| 2021精品国产综合久久| 国产精品亚洲综合久久| 国产真实乱对白精彩久久| 色综合久久无码中文字幕| 国产精品亚洲综合专区片高清久久久| 99久久国产免费福利| 久久人爽人人爽人人片AV| 性欧美大战久久久久久久| 久久精品无码一区二区三区| 伊人久久综合精品无码AV专区| 色综合久久久久综合体桃花网| 亚洲日韩中文无码久久| 久久久精品久久久久特色影视| 欧美久久亚洲精品| 亚洲国产精品久久66| 久久水蜜桃亚洲av无码精品麻豆| 狠狠色丁香久久婷婷综合五月| 国产精品久久久久…| 久久精品国产亚洲AV麻豆网站| 国产一区二区三区久久|