CCF考試真題題解


CCF考試認證:題解參考博客http://blog.csdn.net/u014578266/article/details/45221841

問題描述
試題編號:    201503-1
試題名稱:    圖像旋轉
時間限制:    5.0s
內存限制:    256.0MB
問題描述:    
問題描述
  旋轉是圖像處理的基本操作,在這個問題中,你需要將一個圖像逆時針旋轉90度。
  計算機中的圖像表示可以用一個矩陣來表示,為了旋轉一個圖像,只需要將對應的矩陣旋轉即可。
輸入格式
  輸入的第一行包含兩個整數n, m,分別表示圖像矩陣的行數和列數。
  接下來n行每行包含m個整數,表示輸入的圖像。
輸出格式
  輸出m行,每行包含n個整數,表示原始矩陣逆時針旋轉90度后的矩陣。
樣例輸入
2 3
1 5 3
3 2 4
樣例輸出
3 4
5 2
1 3
評測用例規模與約定
  1 ≤ n, m ≤ 1,000,矩陣中的數都是不超過1000的非負整數。
#include <iostream>
#define max 1002
using namespace std;

int a[max][max];
int main()
{
    int m,n;
    while(cin>>n>>m){
        for(int i = 0;i < n;i++){
            for(int j = 0;j < m;j++){
                cin>>a[i][j];
            }
        }
        for(int j = m-1;j>=0;j--){
            for(int i = 0;i<n;i++){
                cout<<a[i][j]<<" ";
            }
            cout<<endl;
        }
    }
    return 0;
}
View Code
問題描述
試題編號:    201503-2
試題名稱:    數字排序
時間限制:    1.0s
內存限制:    256.0MB
問題描述:    
問題描述
  給定n個整數,請統計出每個整數出現的次數,按出現次數從多到少的順序輸出。
輸入格式
  輸入的第一行包含一個整數n,表示給定數字的個數。
  第二行包含n個整數,相鄰的整數之間用一個空格分隔,表示所給定的整數。
輸出格式
  輸出多行,每行包含兩個整數,分別表示一個給定的整數和它出現的次數。按出現次數遞減的順序輸出。如果兩個整數出現的次數一樣多,則先輸出值較小的,然后輸出值較大的。
樣例輸入
12
5 2 3 3 1 3 4 2 5 2 3 5
樣例輸出
3 4
2 3
5 3
1 1
4 1
評測用例規模與約定
  1 ≤ n ≤ 1000,給出的數都是不超過1000的非負整數
#include <iostream>
#define max 1005
using namespace std;

struct a{
    int index;
    int count;
    a(){
        count = 1;
    }
}b[max],e;

//冒泡排序
void Sort(int y){
    for(int j = 1;j < y;j++){
    for(int i = 0;i < y-j;i++){
        if(b[i].count < b[i+1].count ||(b[i].count == b[i+1].count && b[i].index > b[i+1].index)){
            e.index = b[i].index;
            e.count = b[i].count;
            b[i].index = b[i+1].index;
            b[i].count = b[i+1].count;
            b[i+1].index = e.index;
            b[i+1].count = e.count;
        }
    }
}
}
int main()
{
    int n,c;
    while(cin>>n){
            int Index = 1;
            cin>>b[0].index;
        for(int i = 1;i < n;i++){
            cin>>c;
            bool zhang = true;
            for(int j = 0;zhang && j < Index;j++){
                if(c==b[j].index){
                    b[j].count++;
                    zhang = false;
                }
            }
            if(zhang){
                b[Index++].index = c;
            }
        }

        Sort(Index);
        for(int t = 0;t < Index;t++){
            cout<<b[t].index<<" "<<b[t].count<<endl;
        }
    }
    return 0;
}
View Code
問題描述
試題編號:    201503-3
試題名稱:    節日
時間限制:    1.0s
內存限制:    256.0MB
問題描述:    
問題描述
  有一類節日的日期並不是固定的,而是以“a月的第b個星期c”的形式定下來的,比如說母親節就定為每年的五月的第二個星期日。
  現在,給你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2050),希望你輸出從公元y1年到公元y2年間的每年的a月的第b個星期c的日期。
  提示:關於閏年的規則:年份是400的整數倍時是閏年,否則年份是4的倍數並且不是100的倍數時是閏年,其他年份都不是閏年。例如1900年就不是閏年,而2000年是閏年。
  為了方便你推算,已知1850年1月1日是星期二。
輸入格式
  輸入包含恰好一行,有五個整數a, b, c, y1, y2。其中c=1, 2, ……, 6, 7分別表示星期一、二、……、六、日。
輸出格式
  對於y1和y2之間的每一個年份,包括y1和y2,按照年份從小到大的順序輸出一行。
  如果該年的a月第b個星期c確實存在,則以"yyyy/mm/dd"的格式輸出,即輸出四位數的年份,兩位數的月份,兩位數的日期,中間用斜杠“/”分隔,位數不足時前補零。
  如果該年的a月第b個星期c並不存在,則輸出"none"(不包含雙引號)。
樣例輸入
5 2 7 2014 2015
樣例輸出
2014/05/11
2015/05/10
評測用例規模與約定
  所有評測用例都滿足:1 ≤ a ≤ 121 ≤ b ≤ 51 ≤ c ≤ 71850 ≤ y1, y2 ≤ 2050

這道題是個死坑,搞了好久都不曾搞出來,被氣的,傷心啊……

 

 

問題描述
試題編號:    201503-4
試題名稱:    網絡延時
時間限制:    1.0s
內存限制:    256.0MB
問題描述:    
問題描述
  給定一個公司的網絡,由n台交換機和m台終端電腦組成,交換機與交換機、交換機與電腦之間使用網絡連接。交換機按層級設置,編號為1的交換機為根交換機,層級為1。其他的交換機都連接到一台比自己上一層的交換機上,其層級為對應交換機的層級加1。所有的終端電腦都直接連接到交換機上。
  當信息在電腦、交換機之間傳遞時,每一步只能通過自己傳遞到自己所連接的另一台電腦或交換機。請問,電腦與電腦之間傳遞消息、或者電腦與交換機之間傳遞消息、或者交換機與交換機之間傳遞消息最多需要多少步。
輸入格式
  輸入的第一行包含兩個整數n, m,分別表示交換機的台數和終端電腦的台數。
  第二行包含n - 1個整數,分別表示第2、3、……、n台交換機所連接的比自己上一層的交換機的編號。第i台交換機所連接的上一層的交換機編號一定比自己的編號小。
  第三行包含m個整數,分別表示第1、2、……、m台終端電腦所連接的交換機的編號。
輸出格式
  輸出一個整數,表示消息傳遞最多需要的步數。
樣例輸入
4 2
1 1 3
2 1
樣例輸出
4
樣例說明
  樣例的網絡連接模式如下,其中圓圈表示交換機,方框表示電腦:

  其中電腦1與交換機4之間的消息傳遞花費的時間最長,為4個單位時間。
樣例輸入
4 4
1 2 2
3 4 4 4
樣例輸出
4
樣例說明
  樣例的網絡連接模式如下:

  其中電腦1與電腦4之間的消息傳遞花費的時間最長,為4個單位時間。
評測用例規模與約定
  前30%的評測用例滿足:n ≤ 5, m ≤ 5。
  前50%的評測用例滿足:n ≤ 20, m ≤ 20。
  前70%的評測用例滿足:n ≤ 100, m ≤ 100。
  所有評測用例都滿足:1 ≤ n ≤ 100001 ≤ m ≤ 10000
問題描述
試題編號:    201503-5
試題名稱:    最小花費
時間限制:    4.0s
內存限制:    256.0MB
問題描述:    
問題描述
  C國共有n個城市。有n-1條雙向道路,每條道路連接兩個城市,任意兩個城市之間能互相到達。小R來到C國旅行,他共規划了m條旅行的路線,第i條旅行路線的起點是si,終點是ti。在旅行過程中,小R每行走一單位長度的路需要吃一單位的食物。C國的食物只能在各個城市中買到,而且不同城市的食物價格可能不同。
  然而,小R不希望在旅行中為了購買較低價的糧食而繞遠路,因此他總會選擇最近的路走。現在,請你計算小R規划的每條旅行路線的最小花費是多少。
輸入格式
  第一行包含2個整數n和m。
  第二行包含n個整數。第i個整數wi表示城市i的食物價格。
  接下來n-1行,每行包括3個整數u, v, e,表示城市u和城市v之間有一條長為e的雙向道路。
  接下來m行,每行包含2個整數si和ti,分別表示一條旅行路線的起點和終點。
輸出格式
  輸出m行,分別代表每一條旅行方案的最小花費。
樣例輸入
6 4
1 7 3 2 5 6
1 2 4
1 3 5
2 4 1
3 5 2
3 6 1
2 5
4 6
6 4
5 6
樣例輸出
35
16
26
13
樣例說明
  對於第一條路線,小R會經過2->1->3->5。其中在城市2處以7的價格購買4單位糧食,到城市1時全部吃完,並用1的價格購買7單位糧食,然后到達終點。
評測用例規模與約定
  前10%的評測用例滿足:n, m ≤ 20, wi ≤ 20;
  前30%的評測用例滿足:n, m ≤ 200;
  另有40%的評測用例滿足:一個城市至多與其它兩個城市相連。
  所有評測用例都滿足:1 ≤ n, m ≤ 1051 ≤ wi ≤ 1061 ≤ e ≤ 10000

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM