problemscpp
A collection of my answers to algorithm problems in c++.
函数
acwing::acwing3745 命名空间参考

AcWing 3745. 牛的学术圈 I 更多...

函数

int main (istream &cin, ostream &cout)
 
 TEST (acwing3745, case1)
 
 TEST (acwing3745, case2)
 
 TEST (acwing3745, case3)
 
 TEST (acwing3745, case4)
 
 TEST (acwing3745, case5)
 
 TEST (acwing3745, case6)
 
 TEST (acwing3745, case7)
 
 TEST (acwing3745, case8)
 

详细描述

AcWing 3745. 牛的学术圈 I

函数说明

◆ main()

int acwing::acwing3745::main ( istream &  cin,
ostream &  cout 
)

在文件 acwing.cpp5494 行定义.

5494 {
5495 int n;
5496 int l;
5497 cin >> n >> l;
5498 vector<int> c(n);
5499 unordered_map<int, int> count;
5500 for(int i = 0; i < n; i++) {
5501 cin >> c[i];
5502 count[c[i]]++;
5503 }
5504 sort(c.rbegin(), c.rend());
5505 if(*c.begin() == 0) {
5506 if(l != 0) {
5507 *c.begin() = 1;
5508 l--;
5509 } else {
5510 cout << 0;
5511 return 0;
5512 }
5513 }
5514 int h = 0;
5515 while(h < n && c[h] >= h + 1) {
5516 h++;
5517 }
5518 if(l == 0) {
5519 cout << h;
5520 return 0;
5521 }
5522 int k = 0;
5523 for(int i = h - 1; i >= 0 && c[i] == h; i--) {
5524 k++;
5525 }
5526 if(l >= k + 1 && c[h] == h) {
5527 cout << h + 1;
5528 } else {
5529 cout << h;
5530 }
5531 return 0;
5532 }

被这些函数引用 TEST().

◆ TEST() [1/8]

acwing::acwing3745::TEST ( acwing3745  ,
case1   
)

在文件 acwing_test.cpp2555 行定义.

2555 {
2556 istringstream in("4 0\n"
2557 "1 100 2 3");
2558 auto out = ostringstream();
2559 main(in, out);
2560 const auto ans = out.str();
2561 ASSERT_EQ("2", ans);
2562 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().

◆ TEST() [2/8]

acwing::acwing3745::TEST ( acwing3745  ,
case2   
)

在文件 acwing_test.cpp2564 行定义.

2564 {
2565 istringstream in("4 1\n"
2566 "1 100 2 3");
2567 auto out = ostringstream();
2568 main(in, out);
2569 const auto ans = out.str();
2570 ASSERT_EQ("3", ans);
2571 }

引用了 main().

◆ TEST() [3/8]

acwing::acwing3745::TEST ( acwing3745  ,
case3   
)

在文件 acwing_test.cpp2573 行定义.

2573 {
2574 istringstream in("1 1\n"
2575 "0");
2576 auto out = ostringstream();
2577 main(in, out);
2578 const auto ans = out.str();
2579 ASSERT_EQ("1", ans);
2580 }

引用了 main().

◆ TEST() [4/8]

acwing::acwing3745::TEST ( acwing3745  ,
case4   
)

在文件 acwing_test.cpp2582 行定义.

2582 {
2583 istringstream in("10 9\n"
2584 "9 9 10 9 9 9 9 9 9 9");
2585 auto out = ostringstream();
2586 main(in, out);
2587 const auto ans = out.str();
2588 ASSERT_EQ("10", ans);
2589 }

引用了 main().

◆ TEST() [5/8]

acwing::acwing3745::TEST ( acwing3745  ,
case5   
)

在文件 acwing_test.cpp2591 行定义.

2591 {
2592 istringstream in("2 1\n"
2593 "1 1");
2594 auto out = ostringstream();
2595 main(in, out);
2596 const auto ans = out.str();
2597 ASSERT_EQ("1", ans);
2598 }

引用了 main().

◆ TEST() [6/8]

acwing::acwing3745::TEST ( acwing3745  ,
case6   
)

在文件 acwing_test.cpp2600 行定义.

2600 {
2601 ostringstream oss;
2602 oss << 1000 << ' ' << 1000 << endl;
2603 for(int i = 0; i < 999; i++) {
2604 oss << 999 << ' ';
2605 }
2606 oss << 998;
2607 istringstream in(oss.str());
2608 auto out = ostringstream();
2609 main(in, out);
2610 const auto ans = out.str();
2611 ASSERT_EQ("999", ans);
2612 }

引用了 main().

◆ TEST() [7/8]

acwing::acwing3745::TEST ( acwing3745  ,
case7   
)

在文件 acwing_test.cpp2614 行定义.

2614 {
2615 istringstream in("10 10\n"
2616 "0 0 0 0 0 0 0 0 0 0");
2617 auto out = ostringstream();
2618 main(in, out);
2619 const auto ans = out.str();
2620 ASSERT_EQ("1", ans);
2621 }

引用了 main().

◆ TEST() [8/8]

acwing::acwing3745::TEST ( acwing3745  ,
case8   
)

在文件 acwing_test.cpp2623 行定义.

2623 {
2624 istringstream in("100 11\n"
2625 "50 54 50 50 50 50 50 50 50 54 50 50 50 50 51 52 54 50 50 50 50 50 50 54 52 50 52 50 50 53 52 50 51 50 50 50 50 50 51 50 52 50 50 53 50 54 50 50 50 54 53 54 50 53 50 50 54 50 50 52 51 50 52 50 51 51 50 50 53 52 52 50 50 50 50 50 50 50 53 51 50 50 50 53 50 50 54 53 50 51 50 53 52 51 50 50 53 50 51 54");
2626 auto out = ostringstream();
2627 main(in, out);
2628 const auto ans = out.str();
2629 ASSERT_EQ("51", ans);
2630 }

引用了 main().