cmp
http://www.fjutacm.com/Problem.jsp?pid=1620
sort很方便,遇到排序题我就不受控制往sort靠,记几个知识点方便以后找。
-
#include<algorithm>
using namespace std;
- sort(a,a+n);//sort(a,a+n,cmp);
-
sort默认升序,改降序:
bool cmp(int a,int b){
return a>b;}
-
加上结构体和数组:
struct node{
int a;
int b;
}q[50];
bool cmp(node x,node y){
return x.a<y.a;//这里只排a}
bool cmp(node x,node y){
if(x.a!=y.a)
return x.a<y.a;//如果a一样就排b
if(x.b!=y.b)
return x.b<y.b;
}
- 上面题的代码:
#include<stdio.h>
#include<algorithm>
using namespace std;struct node{
int a;
int b;
}q[30];bool cmp(node x,node y){
return x.a<y.a;
}int main()
{
int t,N;
scanf("%d",&t);
for(int i=0;i<t;i++){
scanf("%d",&N);
for(int j=0;j<N;j++){
scanf("%d%d",&q[j].a,&q[j].b);
}
sort(q,q+N,cmp);
for(int i=0;i<N;i++){
for(int f=0;f<q[i].b;f++){
for(int k=1;k<=q[i].a;k++){
if(k==1)
printf(">+");
else if(k==q[i].a)
printf("+>\n");
else
printf("-");
}
}
printf("\n");
}
}
return 0;
}
看到能用sort就用咯http://www.fjutacm.com/Problem.jsp?pid=1142
做个小补充:
stable_sort():当排序元素相等时,保留原来的顺序。在对结构体排序时,当结构体中的排序元素相等时,如果需要保留原序,可以用stable_sort()。
partial_sort():局部排序。例如有10个数字,求最小的5个数。如果用sort(),需要先全部排序,再输出前5个;而用partial_sort()可以直接输出前5个。
还有几个没做的题,先码下来
http://www.fjutacm.com/Problem.jsp?pid=1214
https://www.dotcpp.com/oj/problem1568.html
EOF