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

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>
            欧美日韩精品不卡| 最新亚洲电影| 美国十次了思思久久精品导航| 免费欧美日韩国产三级电影| 久久久久久久欧美精品| 久久国产精品第一页| 香蕉av福利精品导航| 欧美在线视频免费观看| 久久综合久久久久88| 久久青青草综合| 久久久综合精品| 欧美韩日亚洲| 正在播放欧美一区| 亚洲福利视频一区二区| 欧美亚洲成人免费| 欧美sm视频| 欧美日韩国产一区精品一区 | 久久久久久一区| 久久婷婷丁香| 欧美日韩免费一区二区三区视频| 国产精品老女人精品视频| 国产色婷婷国产综合在线理论片a| 黄色成人av网站| 亚洲精品三级| 久久岛国电影| 亚洲激情在线观看| 蜜桃av一区二区在线观看| 亚洲精品欧洲| 久久成人综合视频| 欧美日韩国产首页| 国产精品一区二区在线观看网站| 伊人狠狠色j香婷婷综合| 日韩天堂在线观看| 久久精视频免费在线久久完整在线看| 中文欧美字幕免费| 亚洲电影观看| 亚洲小说春色综合另类电影| 久久综合伊人| 一区二区三区高清视频在线观看| 欧美一区二区三区久久精品| 欧美日韩国产成人高清视频| 一区二区亚洲欧洲国产日韩| 日韩视频一区二区| 免费日韩视频| 欧美制服丝袜第一页| 欧美午夜精品久久久| 99ri日韩精品视频| 免费欧美视频| 久久黄色网页| 国产欧美亚洲精品| 亚洲天堂av在线免费| 亚洲电影免费在线观看| 新狼窝色av性久久久久久| 欧美色图麻豆| 日韩午夜精品| 亚洲国产精品久久| 另类人畜视频在线| 狠狠综合久久| 欧美一区二区国产| 亚洲卡通欧美制服中文| 久久综合网hezyo| 国产一区视频观看| 久久精品欧美日韩| 欧美有码在线视频| 国产伦精品一区二区三区高清版| 亚洲国产一区二区三区高清| 久久久精彩视频| 性欧美xxxx视频在线观看| 国产精品高潮呻吟| 亚洲中无吗在线| 国产一区二区精品在线观看| 国产精品一二三视频| 亚洲午夜日本在线观看| 亚洲激情综合| 欧美日本网站| 一区二区三区欧美亚洲| 亚洲国产精品久久久久秋霞蜜臀 | 欧美激情va永久在线播放| 狠狠综合久久| 男同欧美伦乱| 久久亚洲视频| 国产一区二区激情| 久久天天躁夜夜躁狠狠躁2022| 香蕉乱码成人久久天堂爱免费 | 亚洲精品一区二区三区在线观看| 欧美激情一区二区在线| 99精品热视频| 99综合在线| 国产欧美日韩亚洲一区二区三区| 久久国产毛片| 另类天堂视频在线观看| 99国产一区| 这里是久久伊人| 国产午夜精品一区二区三区欧美| 久久琪琪电影院| 久久一区视频| 亚洲午夜在线观看视频在线| 欧美亚洲一区在线| 亚洲第一福利社区| 亚洲免费观看高清在线观看| 国产日产精品一区二区三区四区的观看方式| 欧美一区二视频在线免费观看| 久久精品91久久久久久再现| 99国产精品久久久久久久| 午夜精品一区二区三区在线视| 狠狠色丁香久久婷婷综合丁香| 亚洲国产综合在线| 国产精品免费视频xxxx| 欧美国产视频日韩| 国产精品久久久久久久久久ktv | 性刺激综合网| 欧美成人精品| 久久精品亚洲一区二区| 亚洲精品视频免费| 亚洲国产精品一区制服丝袜| 日韩一区二区精品视频| 国产亚洲成av人片在线观看桃| 欧美成人免费在线观看| 国产精品丝袜xxxxxxx| 亚洲高清一区二| 国模精品一区二区三区色天香| 日韩午夜电影av| 亚洲国产精品热久久| 国产在线欧美日韩| 日韩视频一区二区在线观看| 欧美一级理论性理论a| 日韩亚洲欧美在线观看| 欧美一区二区三区久久精品 | 在线播放日韩| 午夜精品久久久久久久久久久久 | 久久久精品午夜少妇| 欧美伦理91i| 欧美gay视频激情| 国产一区二区在线观看免费播放 | 亚洲无毛电影| 一区二区日韩伦理片| 麻豆乱码国产一区二区三区| 久久久久.com| 国产日本欧美一区二区| 亚洲一区二区三区视频| 中文国产亚洲喷潮| 欧美欧美全黄| 亚洲美女av在线播放| 日韩视频在线一区二区| 免费成人高清在线视频| 久久艳片www.17c.com| 国产美女精品免费电影| 亚洲天堂激情| 欧美一区二区高清| 国产亚洲一区二区精品| 欧美一区二区三区免费在线看| 亚洲女爱视频在线| 亚洲欧美日韩成人| 香蕉久久一区二区不卡无毒影院| 国产精品久久激情| 亚洲欧美电影在线观看| 欧美中文日韩| 韩国精品主播一区二区在线观看| 欧美在线观看一区| 久久在线精品| 亚洲激情专区| 免费视频一区| 99国产精品久久久久老师 | 亚洲无亚洲人成网站77777| 欧美涩涩网站| 亚洲欧美在线视频观看| 久久久久免费观看| 亚洲国产成人av| 欧美男人的天堂| 亚洲嫩草精品久久| 美国三级日本三级久久99| 亚洲精选中文字幕| 国产精品日韩精品欧美在线| 欧美一区二区三区免费视频| 欧美成人免费小视频| 亚洲自拍三区| 精品成人在线观看| 欧美日韩精品中文字幕| 欧美一区二区三区啪啪| 91久久黄色| 久久er精品视频| 亚洲精品自在在线观看| 国产欧美一区二区视频| 蜜臀91精品一区二区三区| 一本色道久久综合一区| 久久一综合视频| 久久性色av| 亚洲日本成人| 一区二区三区黄色| 免费成人性网站| 亚洲综合社区| 亚洲在线观看| 亚洲男同1069视频| 亚洲欧美日韩天堂| 欧美一区二区三区四区高清 | 欧美一区二区| 亚洲欧美变态国产另类| 羞羞视频在线观看欧美| 久久久久网址| 欧美激情1区2区3区|