牛客IOI周赛19-普及组 A:小y的考试 (自定义排序)

    科技2022-09-03  117

    吐槽:这道题没什么难的,题意也很好懂,但是我竟然忘了自定义排序函数时使用时还需要加上cmp,结果就很尴尬了,另外 sort 的时候也要注意数组的范围 sort(0,3) 只能将数组中 [0,3) 中的数进行排序

    题面:

    水题没水着,被水戏弄啦。

    #include <string> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; struct node { string s; int len; }p[4]; bool cmp(node x,node y) { return x.len < y.len; } int main(void) { int t; cin >> t; while(t --) { string a,b,c,d; cin >> a >> b >> c >> d; int a_len = a.length(),b_len = b.length(),c_len=c.length(),d_len=d.length(); p[0] = {a,a_len}; p[1] = {b,b_len}; p[2] = {c,c_len}; p[3] = {d,d_len}; // sort(0,3) 只会对 [0,3) 内的元素进行排序 sort(p,p + 4,cmp); // 自定义排序时一定要记得添加上 cmp if(p[0].len != p[1].len) { printf("%c\n",p[0].s[0]); } else if(p[2].len != p[3].len) { printf("%c\n",p[3].s[0]); } else { puts("C"); } } }

    测试:

    #include <iostream> #include <algorithm> using namespace std; int a[3]; int main(void) { // 5 4 1 2 cin >> a[0] >> a[1] >> a[2] >> a[3]; sort(a,a + 3); // 1 4 5 2 sort(a,a + 3 + 1); // 1 2 4 5 cout << a[0] << " "<< a[1] << " "<< a[2] << " "<< a[3]; return 0; }
    Processed: 0.013, SQL: 9