P1271【深基9.例1】选举学生会
CPP
# include <iostream>
using namespace std;
int a[ 1005 ] = { 0 } ;
int n, m, t;
int main ( ) {
cin>> n>> m;
for ( int i= 0 ; i< m; i++ ) {
cin>> t;
a[ t] ++ ;
}
for ( int i= 1 ; i<= n; i++ ) {
while ( a[ i] != 0 ) {
cout<< i<< " " ;
a[ i] -- ;
}
}
return 0 ;
}
Java
package P1271 ;
import java. util. Scanner ;
public class Main {
public static void main ( String [ ] args) {
Scanner scanner = new Scanner ( System . in) ;
int n = scanner. nextInt ( ) ;
int m = scanner. nextInt ( ) ;
int [ ] a = new int [ 1005 ] ;
for ( int i= 0 ; i< m; i++ ) {
a[ scanner. nextInt ( ) ] ++ ;
}
StringBuffer sb = new StringBuffer ( ) ;
for ( int i= 1 ; i<= n; i++ ) {
while ( a[ i] != 0 ) {
sb. append ( i+ " " ) ;
a[ i] -- ;
}
}
System . out. println ( sb) ;
}
}
P1177【模板】排序
CPP
# include <iostream>
using namespace std;
int n, a[ 100010 ] , t[ 100010 ] ;
void print ( ) {
for ( int i= 1 ; i<= n; i++ ) {
cout<< a[ i] << " " ;
}
cout<< endl;
}
void qsort ( int * a, int l, int r) {
if ( r- l<= 1 ) {
return ;
}
int flag = a[ rand ( ) % ( r- l) + l] ;
int x= l, y= r;
for ( int i= l; i< r; i++ ) {
if ( a[ i] < flag) {
t[ x] = a[ i] ;
x++ ;
} else if ( a[ i] > flag) {
y-- ;
t[ y] = a[ i] ;
}
}
for ( int i= l; i< x; i++ ) {
a[ i] = t[ i] ;
}
for ( int i= y; i< r; i++ ) {
a[ i] = t[ i] ;
}
for ( int i= x; i< y; i++ ) {
a[ i] = flag;
}
qsort ( a, l, x) ;
qsort ( a, y, r) ;
return ;
}
int main ( ) {
cin>> n;
for ( int i= 1 ; i<= n; i++ ) {
cin>> a[ i] ;
}
qsort ( a, 1 , n+ 1 ) ;
print ( ) ;
return 0 ;
}
Java
package P1177_sort ;
import java. util. Scanner ;
public class Main {
static int [ ] a = new int [ 100010 ] ;
static int [ ] t = new int [ 100010 ] ;
static int n;
static void print ( ) {
StringBuffer sb = new StringBuffer ( ) ;
for ( int i= 1 ; i<= n; i++ ) {
sb. append ( a[ i] ) . append ( " " ) ;
}
System . out. println ( sb) ;
}
static void qsort ( int l, int r) {
if ( r- l<= 1 ) {
return ;
}
int flag = a[ ( r+ l) / 2 ] ;
int x= l, y= r;
for ( int i= l; i< r; i++ ) {
if ( a[ i] < flag) {
t[ x] = a[ i] ;
x++ ;
} else if ( a[ i] > flag) {
y-- ;
t[ y] = a[ i] ;
}
}
for ( int i= l; i< x; i++ ) {
a[ i] = t[ i] ;
}
for ( int i= y; i< r; i++ ) {
a[ i] = t[ i] ;
}
for ( int i= x; i< y; i++ ) {
a[ i] = flag;
}
qsort ( l, x) ;
qsort ( y, r) ;
return ;
}
public static void main ( String [ ] args) {
Scanner sc = new Scanner ( System . in) ;
n = sc. nextInt ( ) ;
for ( int i= 1 ; i<= n; i++ ) {
a[ i] = sc. nextInt ( ) ;
}
qsort ( 1 , n+ 1 ) ;
print ( ) ;
}
}
P1923 【深基9.例4】求第 k 小的数
CPP
# include <iostream>
using namespace std;
int n, k;
int a[ 5000005 ] ;
void qsort ( int l, int r) {
int x= l, y= r;
int flag = a[ ( l+ r) / 2 ] ;
do {
while ( a[ y] > flag) {
y-- ;
}
while ( a[ x] < flag) {
x++ ;
}
if ( x <= y) {
swap ( a[ x] , a[ y] ) ;
x++ ;
y-- ;
}
} while ( x <= y) ;
if ( k <= y) {
qsort ( l, y) ;
} else if ( x <= k) {
qsort ( x, r) ;
} else {
printf ( "%d" , a[ y+ 1 ] ) ;
return ;
}
}
int main ( ) {
cin>> n>> k;
for ( int i= 0 ; i< n; i++ ) {
scanf ( "%d" , & a[ i] ) ;
}
qsort ( 0 , n- 1 ) ;
return 0 ;
}
Java
package P1923 ;
import java. io. BufferedReader ;
import java. io. IOException ;
import java. io. InputStreamReader ;
import java. io. StreamTokenizer ;
import java. util. Scanner ;
public class Main {
static int n, k;
static int [ ] a = new int [ 5000005 ] ;
static void swap ( int x, int y) {
int temp = a[ x] ;
a[ x] = a[ y] ;
a[ y] = temp;
}
static void qsort ( int l, int r) {
int x= l, y= r;
int flag = a[ ( l+ r) / 2 ] ;
do {
while ( a[ y] > flag) {
y-- ;
}
while ( a[ x] < flag) {
x++ ;
}
if ( x <= y) {
swap ( x, y) ;
x++ ;
y-- ;
}
} while ( x <= y) ;
if ( k <= y) {
qsort ( l, y) ;
} else if ( k >= x) {
qsort ( x, r) ;
} else {
System . out. println ( a[ y+ 1 ] ) ;
return ;
}
}
public static void main ( String [ ] args) throws IOException {
StreamTokenizer st = new StreamTokenizer ( new BufferedReader ( new InputStreamReader ( System . in) ) ) ;
st. nextToken ( ) ;
n= ( int ) st. nval;
st. nextToken ( ) ;
k= ( int ) st. nval;
for ( int i= 0 ; i< n; i++ ) {
st. nextToken ( ) ;
a[ i] = ( int ) st. nval;
}
qsort ( 0 , n- 1 ) ;
}
}
P1059 [NOIP2006 普及组] 明明的随机数
CPP
# include <iostream>
# include <set>
using namespace std;
int main ( ) {
int n;
cin >> n;
set< int > distinctNumbers;
int t;
for ( int i = 0 ; i < n; i++ ) {
cin >> t;
distinctNumbers. insert ( t) ;
}
cout << distinctNumbers. size ( ) << endl;
for ( auto num : distinctNumbers) {
cout << num << " " ;
}
cout << endl;
return 0 ;
}
Java
package P1059 ;
import java. util. Arrays ;
import java. util. HashSet ;
import java. util. Scanner ;
import java. util. Set ;
public class Main {
public static void main ( String [ ] args) {
int n;
Scanner sc = new Scanner ( System . in) ;
n = sc. nextInt ( ) ;
Set < Integer > set = new HashSet < > ( ) ;
int t;
for ( int i= 1 ; i<= n; i++ ) {
t = sc. nextInt ( ) ;
set. add ( t) ;
}
System . out. println ( set. size ( ) ) ;
Integer [ ] array = set. toArray ( new Integer [ 0 ] ) ;
Arrays . sort ( array) ;
StringBuffer sb = new StringBuffer ( ) ;
for ( Integer num: array) {
sb. append ( num. intValue ( ) ) . append ( " " ) ;
}
System . out. println ( sb) ;
}
}
P1093 [NOIP2007 普及组] 奖学金
CPP
# include <iostream>
# include <algorithm>
using namespace std;
int n;
struct stu {
int num;
int c, m, e;
int sum;
} student[ 305 ] ;
bool cmp ( stu a, stu b) {
if ( a. sum > b. sum) {
return 1 ;
} else if ( a. sum < b. sum) {
return 0 ;
} else {
if ( a. c > b. c) {
return 1 ;
} else if ( a. c < b. c) {
return 0 ;
} else {
if ( a. num < b. num) {
return 1 ;
} else {
return 0 ;
}
}
}
}
int main ( ) {
cin>> n;
for ( int i= 1 ; i<= n; i++ ) {
student[ i] . num = i;
cin>> student[ i] . c>> student[ i] . m>> student[ i] . e;
student[ i] . sum = student[ i] . c + student[ i] . e + student[ i] . m;
}
sort ( student+ 1 , student+ 1 + n, cmp) ;
for ( int i= 1 ; i<= 5 ; i++ ) {
cout<< student[ i] . num<< " " << student[ i] . sum<< endl;
}
return 0 ;
}
Java
package P1093 ;
import java. util. Arrays ;
import java. util. Comparator ;
import java. util. Scanner ;
class Student {
int num;
int c, m, e;
int sum;
public Student ( int num, int c, int m, int e) {
this . num = num;
this . c = c;
this . m = m;
this . e = e;
this . sum = c + m + e;
}
}
class Compare implements Comparator < Student > {
@Override
public int compare ( Student s1, Student s2) {
if ( s1. sum > s2. sum) {
return - 1 ;
} else if ( s1. sum < s2. sum) {
return 1 ;
} else {
if ( s1. c > s2. c) {
return - 1 ;
} else if ( s1. c < s2. c) {
return 1 ;
} else {
return Integer . compare ( s1. num, s2. num) ;
}
}
}
}
public class Main {
public static void main ( String [ ] args) {
Scanner sc = new Scanner ( System . in) ;
int n = sc. nextInt ( ) ;
Student [ ] students = new Student [ n+ 1 ] ;
for ( int i= 1 ; i<= n; i++ ) {
int c = sc. nextInt ( ) ;
int m = sc. nextInt ( ) ;
int e = sc. nextInt ( ) ;
students[ i] = new Student ( i, c, m, e) ;
}
sc. close ( ) ;
Arrays . sort ( students, 1 , n+ 1 , new Compare ( ) ) ;
for ( int i= 1 ; i<= 5 ; i++ ) {
System . out. println ( students[ i] . num + " " + students[ i] . sum) ;
}
}
}
P1781 宇宙总统
CPP
# include <iostream>
# include <algorithm>
using namespace std;
struct president {
int num;
string sum;
int len;
} p[ 25 ] ;
bool cmp ( president a, president b) {
if ( a. len > b. len) {
return 1 ;
}
if ( a. len == b. len && a. sum > b. sum) {
return 1 ;
}
return 0 ;
}
int main ( ) {
int n;
cin>> n;
for ( int i= 1 ; i<= n; i++ ) {
p[ i] . num = i;
cin>> p[ i] . sum;
p[ i] . len = p[ i] . sum. size ( ) ;
}
sort ( p+ 1 , p+ 1 + n, cmp) ;
cout<< p[ 1 ] . num<< endl;
cout<< p[ 1 ] . sum<< endl;
return 0 ;
}
Java
package P1781 ;
import java. math. BigInteger ;
import java. util. Scanner ;
public class Main {
public static void main ( String [ ] args) {
Scanner sc = new Scanner ( System . in) ;
int n = sc. nextInt ( ) ;
BigInteger max = BigInteger . ZERO ;
int index = 0 ;
for ( int i= 1 ; i<= n; i++ ) {
BigInteger ticket = sc. nextBigInteger ( ) ;
if ( max. compareTo ( ticket) == - 1 ) {
max = ticket;
index = i;
}
}
System . out. println ( index) ;
System . out. println ( max) ;
sc. close ( ) ;
}
}
P2676 [USACO07DEC] Bookshelf B
CPP
# include <iostream>
# include <algorithm>
using namespace std;
int N, B;
bool cmp ( int a, int b) {
return a> b;
}
int main ( ) {
cin>> N>> B;
int h[ N] = { 0 } ;
for ( int i= 0 ; i< N; i++ ) {
cin>> h[ i] ;
}
sort ( h, h+ N, cmp) ;
int sum= 0 , ans= 0 ;
while ( sum < B) {
sum += h[ ans] ;
ans++ ;
}
cout<< ans;
return 0 ;
}
Java
package P2676 ;
import java. util. Arrays ;
import java. util. Comparator ;
import java. util. Scanner ;
class Compare implements Comparator < Integer > {
@Override
public int compare ( Integer arg0, Integer arg1) {
if ( arg0. intValue ( ) > arg1. intValue ( ) ) {
return - 1 ;
} else {
return 1 ;
}
}
}
public class Main {
public static void main ( String [ ] args) {
int n, b;
Scanner sc = new Scanner ( System . in) ;
n = sc. nextInt ( ) ;
b = sc. nextInt ( ) ;
Integer [ ] h = new Integer [ n] ;
for ( int i= 0 ; i< n; i++ ) {
h[ i] = sc. nextInt ( ) ;
}
Arrays . sort ( h, 0 , n, new Compare ( ) ) ;
int sum= 0 , ans= 0 ;
while ( sum < b) {
sum += h[ ans] ;
ans++ ;
}
System . out. println ( ans) ;
}
}
P1116 车厢重组
CPP
# include <iostream>
using namespace std;
int n;
int main ( ) {
cin>> n;
int a[ n] ;
for ( int i= 0 ; i< n; i++ ) {
cin>> a[ i] ;
}
int ans= 0 ;
for ( int i= 0 ; i< n; i++ ) {
for ( int j= 0 ; j<= i; j++ ) {
if ( a[ i] < a[ j] ) {
ans++ ;
}
}
}
cout<< ans;
return 0 ;
}
Java
package P1116 ;
import java. util. Scanner ;
public class Main {
public static void main ( String [ ] args) {
int n, ans= 0 ;
Scanner sc = new Scanner ( System . in) ;
n = sc. nextInt ( ) ;
int a[ ] = new int [ n] ;
for ( int i= 0 ; i< n; i++ ) {
a[ i] = sc. nextInt ( ) ;
}
for ( int i= 0 ; i< n; i++ ) {
for ( int j= 0 ; j<= i; j++ ) {
if ( a[ i] < a[ j] ) {
ans++ ;
}
}
}
System . out. println ( ans) ;
}
}
P1152 欢乐的跳
CPP
# include <iostream>
# include <algorithm>
using namespace std;
int main ( ) {
int n;
int a[ 1010 ] ;
cin>> n;
int c[ n] ;
for ( int i= 1 ; i<= n; i++ ) {
cin>> a[ i] ;
}
for ( int i= 1 ; i< n; i++ ) {
c[ i] = abs ( a[ i] - a[ i+ 1 ] ) ;
}
sort ( c+ 1 , c+ n) ;
for ( int i= 1 ; i< n; i++ ) {
if ( i != c[ i] ) {
cout<< "Not jolly" ;
return 0 ;
}
}
cout<< "Jolly" << endl;
return 0 ;
}
Java
package P1152 ;
import java. util. Arrays ;
import java. util. Scanner ;
public class Main {
public static void main ( String [ ] args) {
int n;
Scanner sc = new Scanner ( System . in) ;
n = sc. nextInt ( ) ;
int a[ ] = new int [ n+ 1 ] ;
int c[ ] = new int [ n] ;
for ( int i= 1 ; i<= n; i++ ) {
a[ i] = sc. nextInt ( ) ;
}
for ( int i= 1 ; i< n; i++ ) {
c[ i] = Math . abs ( a[ i] - a[ i+ 1 ] ) ;
}
Arrays . sort ( c) ;
int flag = 0 ;
for ( int i= 1 ; i< n; i++ ) {
if ( i != c[ i] ) {
flag = 1 ;
}
}
if ( flag == 1 ) {
System . out. println ( "Not jolly" ) ;
} else {
System . out. println ( "Jolly" ) ;
}
}
}
P1068 [NOIP2009 普及组] 分数线划定
CPP
# include <iostream>
# include <algorithm>
# include <math.h>
using namespace std;
int n, m;
struct student {
int num;
int socre;
} s[ 5010 ] ;
int cmp ( student s1, student s2) {
if ( s1. socre < s2. socre) {
return 0 ;
} else {
if ( s1. socre == s2. socre && s1. num > s2. num) {
return 0 ;
}
}
}
int main ( ) {
cin>> n>> m;
for ( int i= 0 ; i< n; i++ ) {
cin>> s[ i] . num;
cin>> s[ i] . socre;
}
int line = m * 3 / 2 ;
sort ( s, s+ n, cmp) ;
int lineScore = s[ line- 1 ] . socre;
int count= 0 ;
for ( int i= 0 ; i< n; i++ ) {
if ( s[ i] . socre >= lineScore) {
count++ ;
} else {
break ;
}
}
cout<< lineScore<< " " << count<< endl;
for ( int i= 0 ; i< count; i++ ) {
if ( s[ i] . socre >= lineScore) {
cout<< s[ i] . num<< " " << s[ i] . socre<< endl;
}
}
return 0 ;
}
Java
Sorry ! 好像没写
P5143 攀爬者
CPP
# include <iostream>
# include <algorithm>
# include <cmath>
using namespace std;
struct Node {
double x;
double y;
double z;
bool operator < ( const Node & b) const
{
return z < b. z;
}
} p[ 50050 ] ;
int main ( ) {
int n;
scanf ( "%d" , & n) ;
for ( int i= 0 ; i< n; i++ ) {
scanf ( "%lf%lf%lf" , & p[ i] . x, & p[ i] . y, & p[ i] . z) ;
}
sort ( p, p+ n) ;
double ans= 0 ;
double cx = p[ 0 ] . x;
double cy = p[ 0 ] . y;
double cz = p[ 0 ] . z;
for ( int i= 1 ; i< n; i++ ) {
ans+= sqrt ( abs ( cx- p[ i] . x) * abs ( cx- p[ i] . x) + abs ( cy- p[ i] . y) * abs ( cy- p[ i] . y) + abs ( cz- p[ i] . z) * abs ( cz- p[ i] . z) ) ;
cx = p[ i] . x;
cy = p[ i] . y;
cz = p[ i] . z;
}
printf ( "%.3lf\n" , ans) ;
return 0 ;
}
Java
package P5143 ;
import java. util. Arrays ;
import java. util. Comparator ;
import java. util. Scanner ;
class Node {
double x, y, z;
}
class Compare implements Comparator < Node > {
@Override
public int compare ( Node arg0, Node arg1) {
if ( arg0. z < arg1. z) {
return 1 ;
} else {
return - 1 ;
}
}
}
public class Main {
public static void main ( String [ ] args) {
int n;
Scanner sc = new Scanner ( System . in) ;
n = sc. nextInt ( ) ;
Node p[ ] = new Node [ n] ;
for ( int i= 0 ; i< n; i++ ) {
p[ i] = new Node ( ) ;
p[ i] . x = sc. nextDouble ( ) ;
p[ i] . y = sc. nextDouble ( ) ;
p[ i] . z = sc. nextDouble ( ) ;
}
Arrays . sort ( p, 0 , n, new Compare ( ) ) ;
double ans= 0 ;
double cx = p[ 0 ] . x;
double cy = p[ 0 ] . y;
double cz = p[ 0 ] . z;
for ( int i= 1 ; i< n; i++ ) {
ans += Math . sqrt ( Math . pow ( Math . abs ( cx - p[ i] . x) , 2 )
+ Math . pow ( Math . abs ( cy - p[ i] . y) , 2 )
+ Math . pow ( Math . abs ( cz - p[ i] . z) , 2 ) ) ;
cx = p[ i] . x;
cy = p[ i] . y;
cz = p[ i] . z;
}
System . out. println ( String . format ( "%.3f" , ans) ) ;
}
}
P1104 生日
CPP
# include <iostream>
# include <algorithm>
# include <cstring>
using namespace std;
struct Node {
string name;
int year;
int m;
int d;
int i;
} p[ 105 ] ;
int cmp ( Node a, Node b) {
if ( a. year < b. year) {
return 1 ;
} else if ( a. year == b. year) {
if ( a. m < b. m) {
return 1 ;
} else if ( a. m == b. m) {
if ( a. d < b. d) {
return 1 ;
} else if ( a. d == b. d) {
if ( a. i > b. i) {
return 1 ;
}
}
}
}
return 0 ;
}
int main ( ) {
int n;
cin>> n;
for ( int i= 0 ; i< n; i++ ) {
cin>> p[ i] . name;
cin>> p[ i] . year;
cin>> p[ i] . m;
cin>> p[ i] . d;
p[ i] . i = i;
}
sort ( p, p+ n, cmp) ;
for ( int i= 0 ; i< n; i++ ) {
cout<< p[ i] . name<< endl;
}
return 0 ;
}
Java
package P1104 ;
import java. util. Arrays ;
import java. util. Comparator ;
import java. util. Scanner ;
class Student {
String name;
int year, m, d;
int level;
}
class Compare implements Comparator < Student > {
@Override
public int compare ( Student o1, Student o2) {
if ( o1. year < o2. year) {
return - 1 ;
} else if ( o1. year == o2. year) {
if ( o1. m < o2. m) {
return - 1 ;
} else if ( o1. m == o2. m) {
if ( o1. d < o2. d) {
return - 1 ;
} else if ( o1. d == o2. d) {
if ( o1. level > o2. level) {
return - 1 ;
}
}
}
}
return 1 ;
}
}
public class Main {
public static void main ( String [ ] args) {
int n;
Scanner sc = new Scanner ( System . in) ;
n = sc. nextInt ( ) ;
Student p[ ] = new Student [ n] ;
for ( int i= 0 ; i< n; i++ ) {
p[ i] = new Student ( ) ;
p[ i] . name = sc. next ( ) ;
p[ i] . year = sc. nextInt ( ) ;
p[ i] . m = sc. nextInt ( ) ;
p[ i] . d = sc. nextInt ( ) ;
p[ i] . level = i;
}
Arrays . sort ( p, 0 , n, new Compare ( ) ) ;
for ( int i= 0 ; i< n; i++ ) {
System . out. println ( p[ i] . name) ;
}
}
}
P1012 [NOIP1998 提高组] 拼数
CPP
# include <iostream>
# include <cstring>
# include <algorithm>
using namespace std;
int n;
int cmp ( string & a, string & b) {
if ( a+ b > b+ a) {
return 1 ;
}
return 0 ;
}
int main ( ) {
cin>> n;
string a[ n] ;
for ( int i= 0 ; i< n; i++ ) {
cin>> a[ i] ;
}
sort ( a, a+ n, cmp) ;
for ( int i= 0 ; i< n; i++ ) {
cout<< a[ i] ;
}
return 0 ;
}
Java
package P1012 ;
import java. util. Arrays ;
import java. util. Comparator ;
import java. util. Scanner ;
class Compare implements Comparator < String > {
@Override
public int compare ( String o1, String o2) {
int result = o1. concat ( o2) . compareTo ( o2. concat ( o1) ) ;
return result > 0 ? - 1 : 1 ;
}
}
public class Main {
public static void main ( String [ ] args) {
int n;
Scanner sc = new Scanner ( System . in) ;
n = sc. nextInt ( ) ;
String a[ ] = new String [ n] ;
int temp;
for ( int i= 0 ; i< n; i++ ) {
temp = sc. nextInt ( ) ;
a[ i] = String . valueOf ( temp) ;
}
Arrays . sort ( a, 0 , n, new Compare ( ) ) ;
for ( int i= 0 ; i< n; i++ ) {
System . out. print ( a[ i] ) ;
}
}
}