九度oj 1031 xxx定律 2009年浙江大学计算机及软件工程研究生机试真题

题目1031:xxx定律

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:5153

解决:3298

题目描述:

    对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。
    请计算需要经过几步才能将n变到1,具体可见样例。
输入:

    测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束。(1<=n<=10000)
输出:

    对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行。
样例输入:
3
1
0
样例输出:
5
0
来源:
2009年浙江大学计算机及软件工程研究生机试真题

 1 #include <cstdio>
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<string>
 5 #include<cstring>
 6 #include<vector>
 7 using namespace std;
 8 struct point{
 9     int dis,cost;
10 };
11 point p[1005];
12 int map[1005][1005][2];
13 #define inf 999999999
14 int main(){
15     //freopen("D://INPUT.txt","r",stdin);
16     int n,m;
17     while(cin>>n>>m&&n&&m){
18     int i=0,j;
19     for(i=1;i<=n;i++){
20         for(j=1;j<=n;j++){
21             map[i][j][0]=inf;
22             map[i][j][1]=inf;
23         }
24     }
25     i=0;
26     for(;i<m;i++){
27         int a,b;
28         cin>>a>>b;
29         cin>>map[b][a][0]>>map[b][a][1];
30         map[a][b][0]=map[b][a][0];
31         map[a][b][1]=map[b][a][1];
32     }
33     int s,e;
34     cin>>s>>e;
35     //cout<<s<<e<<endl;
36     p[s].cost=0;
37     p[s].dis=0;
38     i=1;
39     for(;i<=n;i++){
40         if(i==s)
41         continue;
42         p[i].dis=map[s][i][0];
43         p[i].cost=map[s][i][1];
44     }
45     i=1;
46     for(;i<n;i++){
47         int j,min=inf,k;
48         for(j=1;j<=n;j++){
49             if(p[j].dis&&p[j].dis<min){
50                 min=p[j].dis;
51                 k=j;
52             }
53         }
54         if(k==e){
55             break;
56         }
57         for(j=1;j<=n;j++){
58             if(p[j].dis>p[k].dis+map[k][j][0]){
59                 p[j].dis=p[k].dis+map[k][j][0];
60                 p[j].cost=p[k].cost+map[k][j][1];
61             }
62             else{
63                 if(p[j].dis==p[k].dis+map[k][j][0]){
64                     p[j].cost=p[k].cost+map[k][j][1]>p[j].cost?p[j].cost:p[k].cost+map[k][j][1];
65                 }
66             }
67         }
68         p[k].dis=0;
69     }
70     cout<<p[e].dis<<‘ ‘<<p[e].cost<<endl;
71     }
72     return 0;
73 }
74 /**************************************************************
75     Problem: 1008
76     User: Deribs4
77     Language: C++
78     Result: Accepted
79     Time:20 ms
80     Memory:9416 kb
81 ****************************************************************/

时间: 2024-12-28 21:05:46

九度oj 1031 xxx定律 2009年浙江大学计算机及软件工程研究生机试真题的相关文章

九度oj 1034 寻找大富翁 2009年浙江大学计算机及软件工程研究生机试真题

题目1034:寻找大富翁 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5323 解决:2123 题目描述:     浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁. 输入:     输入包含多组测试用例.    每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值.    n和m同时为0时表示输入结束. 输出:     请输出乌镇前m个大富翁的财产数,财产多的

九度oj 1003 A+B 2010年浙江大学计算机及软件工程研究生机试真题

题目1003:A+B 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:12812 解决:5345 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开.现在请计算A+B的结果,并以正常形式输出. 输入: 输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9). 输出: 请计算A+B的结果,并以正常形式输出,每组数据占一行. 样例输入: -234,567,890 123,456,789 1,2

九度oj 1006 ZOJ问题 2010年浙江大学计算机及软件工程研究生机试真题

题目1006:ZOJ问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:16244 解决:2742 题目描述: 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC.是否AC的规则如下: 1. zoj能AC: 2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空: 3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空: 输入: 输入包含多组测试用例,每行有一个只包含'z','o','j'三种字符的字符串,

九度oj 1032 ZOJ 2009年浙江大学计算机及软件工程研究生机试真题

题目1032:ZOJ 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4102 解决:2277 题目描述: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出. 输入: 题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束.1<=length<=100. 输出: 对于每组输入,请输出一行,表示按照要求处理后的字符串.具体可见样例. 样例输入: ZZOOOJJJ ZZZZOOOOO

九度oj 1464 Hello World for U 2012年浙江大学计算机及软件工程研究生机试真题

题目1464:Hello World for U 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:3872 解决:1082 题目描述: Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, "helloworld" can be printed as: h    de     ll      rlowo

九度oj 1002 Grading 2011年浙江大学计算机及软件工程研究生机试真题

1 #include<iostream> 2 #include<queue> 3 #include<cstdio> 4 #include<cstring> 5 #include<cmath> 6 #include<algorithm> 7 using namespace std; 8 int map[15][15]; 9 int main(){ 10 int P,T,G1,G2,G3,GJ; 11 while(cin>>P

九度oj 1001 A+B for Matrices 2011年浙江大学计算机及软件工程研究生机试真题

题目1001:A+B for Matrices 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:15235 解决:6172 题目描述: This time, you are supposed to find A+B where A and B are two matrices, and then count the number of zero rows and columns. 输入: The input consists of several test cases, each st

九度oj 1004 Median 2011年浙江大学计算机及软件工程研究生机试真题

题目1004:Median 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:14162 解决:3887 题目描述: Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1={11, 12, 13, 14} is 12, and the median of S2={9, 10, 15, 16, 1

九度oj 1437 To Fill or Not to Fill 2012年浙江大学计算机及软件工程研究生机试真题

题目1437:To Fill or Not to Fill 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1488 解决:345 题目描述: With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way fro