7279
5279
這兩行數據的含義是:總分最高的兩個同學的學號依次是7號、5號。
這兩名同學的總分都是 279 (總分等於輸入的語文、數學、英語三科成績之和) ,
但學號為7的學生語文成績更高一些。如果你的前兩名的輸出數據是:
5279
7279
則按輸出錯誤處理,不能得分。
輸入 包含n+1行: 第1行為一個正整數n,表示該校參加評選的學生人數。 第2到n+1行,每行有3個用空格隔開的數字,每個數字都在O到100之間z第1行的3個數 字依次表示學號為j-1的學生的語文、數學、英語的成績。 每個學生的學號按照輸入順序編號為l~n (恰好是輸入數據的行號減1)。呵呵,典型暴力,我又一次呵呵的笑了,又用暴力A過了。。
#include<iostream> using namespace std; struct data { int x,y,z,sum,id; }; int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } const int maxn=300; data a[maxn]; int main() { int n=read(); for(int i=0;i<n;i++) { a[i].y=read(); a[i].x=read(); a[i].z=read(); a[i].sum=a[i].x+a[i].y+a[i].z; a[i].id=i+1; } for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { if(a[i].sum<a[j].sum) { swap(a[i].id,a[j].id); swap(a[i].sum,a[j].sum); swap(a[i].x,a[j].x); swap(a[i].y,a[j].y); swap(a[i].z,a[j].z); } else if((a[i].sum==a[j].sum) && (a[i].y<a[j].y)) { swap(a[i].id,a[j].id); swap(a[i].sum,a[j].sum); swap(a[i].x,a[j].x); swap(a[i].y,a[j].y); swap(a[i].z,a[j].z); } else if((a[i].sum==a[j].sum) && (a[i].y==a[j].y) && (a[i].id>a[j].id)) { swap(a[i].id,a[j].id); swap(a[i].sum,a[j].sum); swap(a[i].x,a[j].x); swap(a[i].y,a[j].y); swap(a[i].z,a[j].z); } } } for(int i=0;i<5;i++)cout<<a[i].id<<" "<<a[i].sum<<endl; return 0; }
NOIP200705統計數字
難度級別:A; 運行時間限制:1000ms; 運行空間限制:51200KB; 代碼長度限制:2000000B 試題描述 某次科研調查時得到了n個自然數,每個數均不超過1500000000(1.5*109)。已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。 輸入 包含n+1行; 第一行是整數n,表示自然數的個數; 第2~n+1每行一個自然數。 輸出 包含m行(m為n個自然數中不相同數的個數),按照自然數從小到大的順序輸出。每行輸出兩個整數,分別是自然數和該數出現的次數,其間用一個空格隔開。 輸入示例 8 2 4 2 4 5 100 2 100 輸出示例 2 3 4 2 5 1 100 2 其他說明 【限制】40%的數據滿足:1<=n<=1000;80%的數據滿足:1<=n<=50000;100%的數據滿足:1<=n<=200000,每個數均不超過1500 000 000(1.5*10^9)呵呵,還是暴力,我又笑了。。。又用暴力A過了。。。
#include<iostream> using namespace std; int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; }int main() { int n=read(); int a[n]; for(int i=0;i<n;i++)a[i]=read(); sort(a,a+n); int temp=1; for(int i=1;i<n;i++) { if(a[i]!=a[i-1]) { printf("%d %d\n",a[i-1],temp); temp=1; } else if(a[i]==a[i-1])temp++; } printf("%d %d",a[n-1],temp); return 0; }
暴力無敵。。。。