題目一、九度OJ-1169:比較奇偶數個數
www.2cto.com
第一行輸入一個數,為n,第二行輸入n個數,這n個數中,如果偶數比奇數多,輸出NO,否則輸出YES。
輸入有多組數據。 每組輸入n,然後輸入n個整數(1<=n<=1000)。
如果偶數比奇數多,輸出NO,否則輸出YES。
5 1 5 2 4 3
YES
AC代碼:
/** *@xiaoran */ #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std; int main() { int a,even,odd,n; while(cin>>n){ even=odd=0; for(int i=0;i>a; if(a%2) even++; else odd++; } if(odd>even) cout< 題目二、九度OJ-1170:找最小數 http://ac.jobdu.com/problem.php?pid=1170 題目描述:第一行輸入一個數n,1 <= n <= 1000,下面輸入n行數據,每一行有兩個數,分別是x y。輸出一組x y,該組數據是所有數據中x最小,且在x相等的情況下y最小的。 輸入:輸入有多組數據。 每組輸入n,然後輸入n個整數對。 輸出:輸出最小的整數對。 樣例輸入:5 3 3 2 2 5 5 2 1 3 6 樣例輸出: 2 1 不解釋,AC代碼 /** *@xiaoran *排序或者直接比較,排序O(nlogn),空間O(2n),直接O(n),空間O(1) */ #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std; int main() { int n,x,y,xmin,ymin; while(cin>>n){ cin>>xmin>>ymin; for(int i=1;i>x>>y; if(x 題目三、九度OJ-1171:C翻轉 http://ac.jobdu.com/problem.php?pid=1171 題目描述:首先輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。操作類型有四種: 1 2 表示:90度,順時針,翻轉4個數 1 3 表示:90度,順時針,翻轉9個數 2 2 表示:90度,逆時針,翻轉4個數 2 3 表示:90度,逆時針,翻轉9個數 輸入:輸入有多組數據。 每組輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。 輸出:輸出翻轉後的數組。 樣例輸入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 3 1 1 樣例輸出: 11 6 1 4 5 12 7 2 9 10 13 8 3 14 15 16 17 18 19 20 21 22 23 24 25 題目分析: 二維數組模擬的問題,仔細想都能搞定。 AC代碼: #include #include using namespace std; int a[10][10],b[10][10]; //ok表示旋轉方式,x,y,表示旋轉數組的左上角下標,k表示旋轉個數 void XuanZhuan(int ok,int k,int x,int y){ memcpy(b,a,sizeof(a)); if(ok==2){//逆時針旋轉 int ky,kx=x; for(int j=y;j=0;i--){ a[i][j]=b[kx][ky++]; } kx++; } } else if(ok==1){//順時針旋轉 int ky,kx=x+k-1; for(int j=y;j>a[1][1]){ for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ if((i+j)!=2) cin>>a[i][j]; } } cin>>ok>>k>>x>>y; XuanZhuan(ok,k,x,y); for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ if(j!=5) cout< 題目四、九度OJ-1172:哈夫曼樹 http://ac.jobdu.com/problem.php?pid=1172 題目描述:哈夫曼樹,第一行輸入一個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。 輸入:輸入有多組數據。 每組第一行輸入一個數n,接著輸入n個葉節點(葉節點權值不超過100,2<=n<=1000)。 輸出:輸出權值。 樣例輸入:5 1 2 2 5 9 樣例輸出: 37 題目分析: 可以建立哈弗曼樹,但是題目只讓求權值,直接上優先隊列就行了,當然也可以排序,因為數據太少,怎麼都行。 AC代碼: /** *@xiaoran *優先隊列 */ #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std; int main() { int n; while(cin>>n){ priority_queue,greater > p; int ans=0,x; for(int i=0;i>x; p.push(x); } while(p.size()>1){ int a=p.top(); p.pop(); int b=p.top(); p.pop(); ans+=a+b; p.push(a+b); } cout<
http://ac.jobdu.com/problem.php?pid=1170
第一行輸入一個數n,1 <= n <= 1000,下面輸入n行數據,每一行有兩個數,分別是x y。輸出一組x y,該組數據是所有數據中x最小,且在x相等的情況下y最小的。
輸入有多組數據。 每組輸入n,然後輸入n個整數對。
輸出最小的整數對。
5 3 3 2 2 5 5 2 1 3 6
2 1
/** *@xiaoran *排序或者直接比較,排序O(nlogn),空間O(2n),直接O(n),空間O(1) */ #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std; int main() { int n,x,y,xmin,ymin; while(cin>>n){ cin>>xmin>>ymin; for(int i=1;i>x>>y; if(x 題目三、九度OJ-1171:C翻轉 http://ac.jobdu.com/problem.php?pid=1171 題目描述:首先輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。操作類型有四種: 1 2 表示:90度,順時針,翻轉4個數 1 3 表示:90度,順時針,翻轉9個數 2 2 表示:90度,逆時針,翻轉4個數 2 3 表示:90度,逆時針,翻轉9個數 輸入:輸入有多組數據。 每組輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。 輸出:輸出翻轉後的數組。 樣例輸入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 3 1 1 樣例輸出: 11 6 1 4 5 12 7 2 9 10 13 8 3 14 15 16 17 18 19 20 21 22 23 24 25 題目分析: 二維數組模擬的問題,仔細想都能搞定。 AC代碼: #include #include using namespace std; int a[10][10],b[10][10]; //ok表示旋轉方式,x,y,表示旋轉數組的左上角下標,k表示旋轉個數 void XuanZhuan(int ok,int k,int x,int y){ memcpy(b,a,sizeof(a)); if(ok==2){//逆時針旋轉 int ky,kx=x; for(int j=y;j=0;i--){ a[i][j]=b[kx][ky++]; } kx++; } } else if(ok==1){//順時針旋轉 int ky,kx=x+k-1; for(int j=y;j>a[1][1]){ for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ if((i+j)!=2) cin>>a[i][j]; } } cin>>ok>>k>>x>>y; XuanZhuan(ok,k,x,y); for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ if(j!=5) cout< 題目四、九度OJ-1172:哈夫曼樹 http://ac.jobdu.com/problem.php?pid=1172 題目描述:哈夫曼樹,第一行輸入一個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。 輸入:輸入有多組數據。 每組第一行輸入一個數n,接著輸入n個葉節點(葉節點權值不超過100,2<=n<=1000)。 輸出:輸出權值。 樣例輸入:5 1 2 2 5 9 樣例輸出: 37 題目分析: 可以建立哈弗曼樹,但是題目只讓求權值,直接上優先隊列就行了,當然也可以排序,因為數據太少,怎麼都行。 AC代碼: /** *@xiaoran *優先隊列 */ #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std; int main() { int n; while(cin>>n){ priority_queue,greater > p; int ans=0,x; for(int i=0;i>x; p.push(x); } while(p.size()>1){ int a=p.top(); p.pop(); int b=p.top(); p.pop(); ans+=a+b; p.push(a+b); } cout<
http://ac.jobdu.com/problem.php?pid=1171
首先輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。
操作類型有四種: 1 2 表示:90度,順時針,翻轉4個數 1 3 表示:90度,順時針,翻轉9個數 2 2 表示:90度,逆時針,翻轉4個數 2 3 表示:90度,逆時針,翻轉9個數
輸入有多組數據。 每組輸入一個5 * 5的數組,然後輸入一行,這一行有四個數,前兩個代表操作類型,後兩個數x y代表需操作數據為以x y為左上角的那幾個數據。
輸出翻轉後的數組。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 3 1 1
11 6 1 4 5 12 7 2 9 10 13 8 3 14 15 16 17 18 19 20 21 22 23 24 25
二維數組模擬的問題,仔細想都能搞定。
#include #include using namespace std; int a[10][10],b[10][10]; //ok表示旋轉方式,x,y,表示旋轉數組的左上角下標,k表示旋轉個數 void XuanZhuan(int ok,int k,int x,int y){ memcpy(b,a,sizeof(a)); if(ok==2){//逆時針旋轉 int ky,kx=x; for(int j=y;j=0;i--){ a[i][j]=b[kx][ky++]; } kx++; } } else if(ok==1){//順時針旋轉 int ky,kx=x+k-1; for(int j=y;j>a[1][1]){ for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ if((i+j)!=2) cin>>a[i][j]; } } cin>>ok>>k>>x>>y; XuanZhuan(ok,k,x,y); for(int i=1;i<=5;i++){ for(int j=1;j<=5;j++){ if(j!=5) cout< 題目四、九度OJ-1172:哈夫曼樹 http://ac.jobdu.com/problem.php?pid=1172 題目描述:哈夫曼樹,第一行輸入一個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。 輸入:輸入有多組數據。 每組第一行輸入一個數n,接著輸入n個葉節點(葉節點權值不超過100,2<=n<=1000)。 輸出:輸出權值。 樣例輸入:5 1 2 2 5 9 樣例輸出: 37 題目分析: 可以建立哈弗曼樹,但是題目只讓求權值,直接上優先隊列就行了,當然也可以排序,因為數據太少,怎麼都行。 AC代碼: /** *@xiaoran *優先隊列 */ #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std; int main() { int n; while(cin>>n){ priority_queue,greater > p; int ans=0,x; for(int i=0;i>x; p.push(x); } while(p.size()>1){ int a=p.top(); p.pop(); int b=p.top(); p.pop(); ans+=a+b; p.push(a+b); } cout<
http://ac.jobdu.com/problem.php?pid=1172
哈夫曼樹,第一行輸入一個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。
輸入有多組數據。 每組第一行輸入一個數n,接著輸入n個葉節點(葉節點權值不超過100,2<=n<=1000)。
輸出權值。
5 1 2 2 5 9
37
可以建立哈弗曼樹,但是題目只讓求權值,直接上優先隊列就行了,當然也可以排序,因為數據太少,怎麼都行。
/** *@xiaoran *優先隊列 */ #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std; int main() { int n; while(cin>>n){ priority_queue,greater > p; int ans=0,x; for(int i=0;i>x; p.push(x); } while(p.size()>1){ int a=p.top(); p.pop(); int b=p.top(); p.pop(); ans+=a+b; p.push(a+b); } cout<
由於BF561內部帶有兩個16位的MAC,因此
在過去的學習中,我們始終接觸的單個類的繼承,但
問題:我們在寫程序的時候經常發現程序使用的內存
版本:VS2015 語言:C++玩cocos的玩家們應該對S
CatchTime Limit: 2000/1000 MS
Image Perimeters Time L