青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

uva :: Programming Challenges :: Chapter 1-100 - The 3n + 1 problem

 1 /* 
 2  * File:   100.cpp
 3  * Author: GongZhi
 4  * Problem: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=29&page=show_problem&problem=36
 5  * Created on 2009年7月25日, 下午9:01
 6  */
 7 
 8 #include <stdlib.h>
 9 #include <string.h>
10 #include <iostream>
11 #include <string>
12 #include <vector>
13 #include <map>
14 #include <queue>
15 using namespace std;
16 
17 /*
18  *
19  */
20 int f(int i) {
21     if (i == 1)
22         return 1;
23     else if (i % 2)
24         return f(i * 3 + 1+ 1;
25     else
26         return f(i / 2+ 1;
27 }
28 
29 int main() {
30     int i, j;
31     int r, l, t;
32     int rr, ll;
33     int ans;
34     while (scanf("%d%d"&r, &l) != EOF) {
35         rr = r;
36         ll = l;
37         if (r > l) {
38             t = r;
39             r = l;
40             l = t;
41         }
42         ans = 0;
43         for (i = r; i <= l; i++)
44             if (f(i) > ans) ans = f(i);
45         printf("%d %d %d\n", rr, ll, ans);
46     }
47     return 0;
48 }
49 
50 
51 

posted @ 2009-07-25 21:52 gong 閱讀(844) | 評論 (0)編輯 收藏

轉 ACM/ICPC 中的STL——next_permutation()

在對元素進行字典序組合排列時可以使用STL提供的next_permutation()和prev_permutation()。這里例舉兩種簡單的應用。

POJ 1731 Orders (使用默認比較方法)

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

int main()
{
    int i,j,k,m,n;
    char a[210];   
    while(gets(a) && a[0])
    {       
        n=strlen(a);
        sort(a,a+n);    //先排序
        printf("%s\n",a);
        while(next_permutation(a,a+n))    //返回bool,若無更大的字典序排列返回false
            printf("%s\n",a);
    }
    return 0;
}

POJ 1256 Anagram (需要自定義cmp函數)

#include<algorithm>
#include<iostream>
#include<cstring>
#include<ctype.h>

using namespace std;

int cmp(char a, char b)      //自定義cmp函數
{
    if(tolower(a)==tolower(b))
        return a<b;
    return tolower(a)<tolower(b);
}

int main()
{
    char s[15];
    int i,j,k,m,n;
    cin>>n;
    cin.ignore();
    while(n--)
    {
        cin.getline(s,15);
        k=strlen(s);
        sort(s,s+k,cmp);
        cout<<s<<endl;
        while(next_permutation(s,s+k,cmp))
            cout<<s<<endl;
    }
    return 0;
}

posted @ 2008-08-27 00:01 gong 閱讀(529) | 評論 (0)編輯 收藏

TJU 2096 Triangle Encapsulation 題解

就是判斷一個坐標系里面的三角形內有多少個整數點
就是枚舉所有的整數點然后判斷是否在三角形內就是了。
判斷是否在三角形內的方法就是求一下三部分的面積是否等于那個大三角形的面積
求面積可以用叉乘或者海倫公式
最好不要用實數來判等
因為三角形的面積乘以2以后是個整數
所以判等的過程中就要使用整數來就可以了
注意輸出格式
 1#include<stdio.h>
 2#include<string.h>
 3#include<math.h>
 4char map[50][50];
 5int S(int a,int b,int c,int d)
 6{
 7    int k;
 8    k=a*d-b*c;
 9    if(k<0)k=-k;
10    return k;
11}

12int main()
13{
14//    freopen("aaaaaaa.txt","w",stdout);
15    int x1,x2,x3,y1,y2,y3,mx,my,mmx,mmy,minx,miny,maxx,maxy,ss,s1,s2,s3,i,j,t;
16    while(scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF)
17    {
18        minx=1000000;maxx=-100000;
19        miny=1000000;maxy=-100000;
20        ss=S(x2-x1,y2-y1,x3-x1,y3-y1);
21        memset(map,0,sizeof(map));
22        mx=x1;if(x2>mx)mx=x2;if(x3>mx)mx=x3;
23        my=y1;if(y2>my)my=y2;if(y3>my)my=y3;
24        mmx=x1;if(x2<mmx)mmx=x2;if(x3<mmx)mmx=x3;
25        mmy=y1;if(y2<mmy)mmy=y2;if(y3<mmy)mmy=y3;
26        for(i=mmx;i<=mx;i++)
27            for(j=mmy;j<=my;j++)
28            {
29                s1=S(x1-i,y1-j,x2-i,y2-j);
30                s2=S(x1-i,y1-j,x3-i,y3-j);
31                s3=S(x2-i,y2-j,x3-i,y3-j);
32                if(s1 && s2 && s3 && (s1+s2+s3)==ss)
33                {
34                    map[i+10][j+10]=1;
35                    if(i+10<minx)minx=i+10;
36                    if(i+10>maxx)maxx=i+10;
37                    if(j+10>maxy)maxy=j+10;
38                    if(j+10<miny)miny=j+10;
39                }

40            }

41        for(j=maxy;j>=miny;j--)
42        {
43            for(i=minx;i<=maxx;i++)if(map[i][j])t=i;
44            for(i=minx;i<=t;i++)
45            {
46                if(i!=minx)printf(" ");
47                if(map[i][j])printf("(%2d, %2d)",i-10,j-10);
48                else printf("        ");
49            }

50            printf("\n");
51        }

52        printf("\n");
53    }

54    return 0;
55}

56

posted @ 2008-07-22 16:51 gong 閱讀(197) | 評論 (0)編輯 收藏

TJU 2095 Clock 題解

Source:  Rocky Mountain 2000
題目就是要問從起點時刻第一次走到終點時刻的過程中分針和時針相遇了多少次
我們知道時針每分鐘走動0.5度分鐘每分鐘走動6度
t為從00:00到當前時刻走了多少分鐘
那么分針就比時針多走了5.5t度
當沒多走360就說明分針與時針相遇了一次
然后我們就算起點時刻和終點時刻分別對00:00來說相遇了時針多少次
然后他們的差值就是這段區間內相遇了多少次
如果起點時刻小于終點時刻那么就是這個差值加上11
因為一個周期內最多相遇11次
 1#include<stdio.h>
 2int a[100];
 3int main()
 4{
 5    int a,b,c,d,l1,l2,ans,aa,cc;
 6    printf("Initial time  Final time  Passes\n");
 7
 8    while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
 9    {
10        aa=a;cc=c;
11        if(a==12)aa=0;
12        if(c==12)cc=0;
13        l1=aa*60+b;l2=cc*60+d;
14        ans=((l2*11)/720)-((l1*11)/720);
15        if(l1>l2)ans+=11;
16        printf("       %02d:%02d       %02d:%02d      %2d\n",a,b,c,d,ans);
17    }

18    return 0;
19}

20

posted @ 2008-07-22 16:47 gong 閱讀(166) | 評論 (0)編輯 收藏

TJU 2094 Reserve Bookshelf 題解

Source:  Rocky Mountain 2000

比較煩人的字符串處理問題
題目對于數據范圍也沒有給出明確的說明

只能開一個大數組來模擬了。
然后每次借走了就標記一下
當還回來的時候就要把這個書在隊列最后再新加入了。
輸出就按照題目的就可以了
多注意就是了
第一次提交忘記了去掉freopen了

  1#include<map>
  2#include<string.h>
  3#include<stdio.h>
  4#include<string>
  5using namespace std;
  6char cz[40],str[40],use[1000];
  7char data[1000][40];
  8map<string,int> name;
  9string now,t;
 10int l,N,n,num[1000];
 11void PRINT()
 12{
 13    int i;
 14    for(i=l-1;i>=0;i--)
 15        if(use[i])
 16        {
 17            printf("%s%4d\n",data[i],num[i]);
 18
 19        }

 20    printf("AVAILABLE SHELF SPACE:        %4d\n\n",N-n);
 21    gets(str);
 22}

 23void ADD()
 24{
 25    int k,temp=1,L=0;
 26    char ch;
 27    for(k=0;k<6;k++)scanf("%c",&ch);
 28    gets(data[l]);
 29    sscanf(data[l]+30,"%d",&L);
 30    data[l][30]=0;
 31    n+=L;num[l]=L;
 32
 33    t=data[l];
 34    name[t]=l;
 35    use[l]=1;
 36    k=0;
 37    while(n>N)
 38    {    
 39        if(use[k])
 40        {
 41            use[k]=0;
 42            n-=num[k];
 43        }

 44        k++;
 45    }

 46    l++;
 47}

 48void CHECKOUT()
 49{
 50    int k,i;char ch;
 51    scanf("%c",&ch);
 52    gets(str);
 53    for(i=strlen(str);i<30;i++)str[i]=' ';
 54    str[30]=0;
 55    t=str;
 56    k=name[t];
 57    use[k]=0;
 58    n-=num[k];
 59}

 60void RETURN()
 61{
 62    int k,i;
 63    char ch;
 64    for(i=0;i<3;i++)scanf("%c",&ch);
 65    gets(str);
 66    for(i=strlen(str);i<30;i++)str[i]=' ';
 67    str[30]=0;
 68    t=str;
 69    k=name[t];
 70    for(i=0;i<31;i++)data[l][i]=data[k][i];
 71    use[l]=1;num[l]=num[k];
 72    n+=num[l];
 73    k=0;
 74    while(n>N)
 75    {    
 76        if(use[k])
 77        {
 78            use[k]=0;
 79            n-=num[k];
 80        }

 81        k++;
 82    }

 83    l++;
 84}

 85int main()
 86{
 87    //freopen("bbbbbbbbbb.txt","w",stdout);
 88    scanf("%d",&N);n=0;l=0;
 89    name.clear();
 90    memset(use,0,sizeof(use));
 91    while(scanf("%s",cz)!=EOF)
 92    {
 93        now=cz;
 94        if(now=="PRINT")PRINT();
 95        else if(now=="ADD")ADD();
 96        else if(now=="CHECKOUT")CHECKOUT();
 97        else if(now=="RETURN")RETURN();
 98    }

 99    return 0;
100}

101

posted @ 2008-07-22 16:42 gong 閱讀(366) | 評論 (2)編輯 收藏

TJU 2093 Chairlift 題解

數學問題。
題目很難讀懂。
 給定的一個周期的時間表是的是

左下那個點到右下那個點的時間
然后那個圓的周長占一個位置
然后就是要注意一下這兩個點是在偏左的位置還是偏右的位置相遇
只需要判斷一下從第一個點順序走到第二個點的距離是否小于一半的總距離就好了
答案就出來了
 1#include<stdio.h>
 2int main()
 3{
 4    int n,l,a,b,f,L;
 5    double t,p,ans,min;
 6    scanf("%d%lf",&n,&t);
 7    f=n/2;
 8    p=t/(f-0.5);
 9    printf("N =%4d, T =%6.1lf\n",n,t);
10    while(scanf("%d%d",&a,&b)!=EOF)
11    {
12        l=a-b;
13        L=a-b;
14        if(l<0)
15        {
16            l=-l;
17            L+=n;
18        }

19        ans=(l-0.5)*p;
20        if((ans/2)>(t-ans/2))min=(t-ans/2);
21        else min=(ans/2);
22        printf("Chair%4d meets chair%4d, remaining time =",a,b);
23        if(L<f)printf("%6.1lf\n",min);
24        else printf("%6.1lf\n",t-min);
25
26    }

27    return 0;
28
29}

posted @ 2008-07-22 16:37 gong 閱讀(237) | 評論 (0)編輯 收藏

PKU 3363 Annoying painting tool 題解

先開始一直想著很復雜的題目
想了很久
后來看那么多人都過了
感覺應該很簡單
然后就想著貪心應該就可以
然后就貪心了一下
順序往下掃描然后看到這個點是1
那么就把這點為左上角的點的矩形方塊操作一下啊
然后一直這樣往后就可以了
 1#include<stdio.h>
 2
 3char str[110][110];
 4
 5int main()
 6{
 7    int x,y,len,wide,i,c,p1,p2,j;
 8    while(1)
 9    {
10        scanf("%d %d %d %d"&x,&y,&len,&wide);
11        if(x == 0 && y == 0 && len == 0 && wide == 0)
12            break;
13        for(i = 0; i < x; i++)
14            scanf("%s",str[i]);
15        c = 0;
16        for(i = 0; i < x; i++)
17        {
18           for(j = 0; j < y; j++)
19           {
20               if(str[i][j] == '1')
21               {
22                   if(i+len-1 >= x || j+wide-1 >= y) break;
23                   c++;
24                   for(p1 = i; p1 < i+len; p1++)
25                       for(p2 = j; p2 < j+wide; p2++)
26                       {
27                           if(str[p1][p2] == '1')
28                               str[p1][p2] = '0';
29                           else 
30                               str[p1][p2] = '1';
31                       }

32               }

33           }

34           if(j != y) break;
35        }

36        if(i != x || j != y)
37            printf("-1\n");
38        else
39            printf("%d\n",c);
40    }

41    return 0;
42}

43
44

posted @ 2008-07-20 22:14 gong 閱讀(1013) | 評論 (0)編輯 收藏

PKU 3364 Black and white painting 題解

數學問題
因為棋盤肯定是8*8的
所以棋盤的右下角不可能位于前7列和前7行
所以就用給出的行列都減去7然后乘一下
就可以得到右下角所可能出現的所有位置了
然后因為相鄰兩個位置棋子不能是相同的
所以要是給出的行列都減去7以后相乘得到的是一個偶數的話那么白色棋子就是一半
然后如果相乘得到是奇數的話那么整個棋盤右下角所表示的元素就會在這里比另外一種多一個
這些都理解以后就很容易了
 1#include<stdio.h>
 2int main()
 3{
 4//freopen("in.txt","r",stdin);
 5int m, n, c,ans;
 6while(1)
 7{
 8scanf("%d%d%d"&m, &n, &c);
 9if(m==0 && n==0 && c==0break;
10m=m-7;n=n-7;
11ans=(m*n)/2;
12if(m%2==1 && n%2==1)ans=ans+c;
13printf("%d\n",ans);
14}

15return 0;
16}

posted @ 2008-07-20 22:12 gong 閱讀(1033) | 評論 (0)編輯 收藏

PKU 3365 Cylinder 題解

計算幾何問題
公式也很容易推出來
也是敏哥做的
比賽時候我們第一個完成的
 1#include<stdio.h>
 2#include<math.h>
 3 
 4#define PI acos(-1)
 5
 6int main()
 7{
 8    double x,y,s,r,V,tmp;
 9    while(scanf("%lf%lf",&x,&y),x || y)
10    {
11        if(x < y)
12        {
13            tmp = x;
14            x = y; 
15            y = tmp;
16        }

17        s = x/(PI+1);
18        r = s/2;
19        if(s > y)
20        {
21            r = y/2;
22        }

23        V = PI*r*r*y;
24        r = y/(2*PI);
25        if(V < (x-2*r)*PI*r*r)
26        {
27            V = (x-2*r)*PI*r*r;
28        }

29        printf("%.3lf\n",V);
30    }

31    return 0;
32}

33
34
35

posted @ 2008-07-20 22:08 gong 閱讀(303) | 評論 (1)編輯 收藏

PKU 3366 Deli Deli 題解

學過英語的就都知道怎么做
沒學過的題目也看不懂的。
我這種水平的都能看懂所以感覺沒什么好注意的了
 1#include<stdio.h>
 2#include<map>
 3#include<string>
 4using namespace std;
 5
 6map<string,int>p1;
 7
 8int main()
 9{
10    char str1[50],str2[50][50],str[50];
11    string s;
12    int m,n,len,i;
13    scanf("%d %d"&m, &n);
14    for(i = 0; i < m; i++)
15    {
16        scanf("%s %s",str1,str2[i]);
17        s = str1;
18        p1[s] = i;
19    }

20    while(n--)
21    {
22        scanf("%s",str);
23        s = str;
24        if(p1.count(s) == 1)
25        {
26            printf("%s\n",str2[p1[s]]);
27            continue;
28        }

29        len = strlen(str);
30        if(len == 1 && str[len-1== 'y')
31        {
32             str[len-1= 'i';
33            str[len] = 'e';
34            str[len+1= 's';
35            str[len+2= '\0';
36        }

37        else if(len > 1 && str[len-1== 'y' && str[len-2!= 'a' && str[len-2!= 'i' && str[len-2!= 'o' && str[len-2!= 'e' && str[len-2!= 'u')
38        {
39            str[len-1= 'i';
40            str[len] = 'e';
41            str[len+1= 's';
42            str[len+2= '\0';
43        }

44        else if(len > 1 && str[len-1== 'h' && (str[len-2== 's' || str[len-2== 'c'))
45        {
46            str[len] = 'e';
47            str[len+1= 's';
48            str[len+2= '\0';
49        }

50        else if(str[len-1== 's' || str[len-1== 'o' || str[len-1== 'x')
51        {
52            str[len] = 'e';
53            str[len+1= 's';
54            str[len+2= '\0';
55        }

56        else
57        {
58            str[len] = 's';
59            str[len+1= '\0';
60        }

61        printf("%s\n",str);
62    }

63    return 0;
64}

65
66

posted @ 2008-07-20 22:06 gong 閱讀(220) | 評論 (0)編輯 收藏

僅列出標題
共5頁: 1 2 3 4 5 
<2025年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

導航

統計

常用鏈接

留言簿(6)

隨筆檔案

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产欧美日韩精品| 亚洲自拍偷拍福利| 亚洲高清久久| 伊人久久亚洲美女图片| 国产精品亚发布| 美女脱光内衣内裤视频久久影院 | 欧美一级久久久久久久大片| 伊人成人网在线看| 久久久久久久成人| 亚洲视频网站在线观看| 国产偷自视频区视频一区二区| 亚洲午夜一区| 亚洲自拍偷拍网址| 国产精品国码视频| 欧美一区二区三区在| 久久夜色精品国产亚洲aⅴ| 亚洲午夜久久久| 裸体歌舞表演一区二区| 国产精品99久久不卡二区| 99re亚洲国产精品| 欧美揉bbbbb揉bbbbb| 欧美制服丝袜第一页| 久久夜色撩人精品| 欧美欧美在线| 国内精品久久久久久| 在线综合视频| 亚洲国产女人aaa毛片在线| 亚洲精品一区二区三区av| 欧美一区二区三区免费在线看| 久久av二区| 国产精品高潮粉嫩av| 亚洲国产日韩欧美在线99| 欧美一区影院| 亚洲色无码播放| 欧美大片免费久久精品三p| 国产深夜精品| 午夜一区二区三区不卡视频| 日韩一本二本av| 欧美日本一道本| 日韩视频一区二区在线观看| 农夫在线精品视频免费观看| 欧美一级专区| 一区二区在线免费观看| 久久亚洲精品网站| 久久蜜桃精品| 亚洲三级国产| 99精品黄色片免费大全| 欧美日韩美女| 欧美一区二视频| 性色av一区二区三区红粉影视| 国产日韩欧美日韩大片| 玖玖精品视频| 一本色道久久综合狠狠躁篇的优点 | 老牛影视一区二区三区| 宅男66日本亚洲欧美视频| 国产精品国产三级国产专播精品人| 在线一区欧美| 久久久国产精品一区二区中文 | 99re66热这里只有精品3直播| 亚洲第一精品夜夜躁人人爽| 欧美日韩国产色视频| 欧美在线综合| 欧美三级在线视频| 欧美成熟视频| 国产综合香蕉五月婷在线| 亚洲精品国产精品乱码不99| 国产精品免费福利| **网站欧美大片在线观看| 欧美一区二区成人| 一区二区三区四区五区精品| 久久精品在线观看| 国产精品三上| 久久综合伊人77777麻豆| 亚洲精品一区二区三区樱花| 亚洲欧美一区二区三区在线| 激情亚洲成人| 国产精品久久毛片a| 亚洲一区二区三区午夜| 亚洲欧美综合一区| 在线观看亚洲一区| 欧美激情一区二区三级高清视频| 激情亚洲网站| 欧美精品videossex性护士| 亚洲激情成人| 亚洲欧美日韩精品在线| 国产欧美精品xxxx另类| 欧美一乱一性一交一视频| 蜜臀久久99精品久久久久久9| 99riav久久精品riav| 亚洲美女免费视频| 欧美裸体一区二区三区| 久久av红桃一区二区小说| 亚洲国产精品一区二区www在线| 亚洲欧美在线播放| 日韩视频免费在线观看| 国产日韩欧美在线观看| 欧美日韩国产专区| 欧美成年人视频| 久久久国产午夜精品| 亚洲天堂网在线观看| 亚洲国产二区| 美女视频黄a大片欧美| 亚洲欧美国产另类| 9i看片成人免费高清| 亚洲第一精品福利| 精品99一区二区| 伊人男人综合视频网| 亚洲国产婷婷香蕉久久久久久| 亚洲久久一区二区| 六十路精品视频| 亚洲欧美美女| 欧美国产一区视频在线观看| 欧美不卡视频一区发布| 亚洲精品中文字幕有码专区| 欧美成人免费在线| 亚洲人成毛片在线播放| 亚洲系列中文字幕| 午夜精彩国产免费不卡不顿大片| 亚洲综合色视频| 美女日韩在线中文字幕| 亚洲精品在线免费观看视频| 欧美成人a∨高清免费观看| 亚洲三级色网| 99在线热播精品免费| 欧美一区二区啪啪| 欧美国产高清| 欧美在线短视频| 久久久国产精品一区二区三区| 亚洲特黄一级片| 欧美激情区在线播放| 久久久精品2019中文字幕神马| 国产精品日韩欧美| 亚洲在线黄色| 亚洲视频一起| 国产精品天美传媒入口| 国产欧美一区二区精品仙草咪 | 午夜视黄欧洲亚洲| 久久国产精品99国产| 午夜国产精品视频免费体验区| 国产女主播一区| 国产精品日韩一区| 狠狠噜噜久久| 葵司免费一区二区三区四区五区| 亚洲一区在线视频| 亚洲欧美视频在线| 欧美性做爰猛烈叫床潮| 一区二区三区 在线观看视| 在线视频欧美一区| 欧美日韩亚洲另类| 亚洲一二三区视频在线观看| 午夜精品一区二区三区电影天堂| 国产精品日韩欧美一区| 欧美自拍偷拍午夜视频| 你懂的国产精品| 一本大道av伊人久久综合| 欧美亚洲成人网| 欧美一区二区免费视频| 久久综合五月天婷婷伊人| 在线精品观看| 欧美全黄视频| 午夜欧美大片免费观看| 免费成人av在线| 一本久道久久综合狠狠爱| 国产精品美女视频网站| 久久精品视频一| 91久久黄色| 午夜久久tv| 亚洲国产aⅴ天堂久久| 欧美日韩国产综合新一区| 欧美在线亚洲一区| 欧美日韩日日骚| 亚洲国产精品第一区二区三区| 国产亚洲综合在线| 久久久久久有精品国产| 欧美国产高潮xxxx1819| 亚洲一区二区三区四区五区午夜| 国产伦精品一区二区三区照片91| 校园激情久久| 亚洲高清在线观看| 欧美在线免费观看视频| 91久久极品少妇xxxxⅹ软件| 欧美午夜无遮挡| 午夜精品影院| 欧美色一级片| 久久九九热re6这里有精品| 在线观看视频一区| 欧美视频免费| 免费成人在线视频网站| 午夜精品久久久久久久99热浪潮 | 巨乳诱惑日韩免费av| 日韩性生活视频| 免费观看在线综合色| 亚洲欧美在线磁力| 一本久久a久久精品亚洲| 红桃视频国产精品| 国产精品久久一级| 亚洲激情社区| 国内成人在线| 国产日韩欧美视频在线| 欧美午夜精品理论片a级按摩|