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

  1. 最长连续子序列
更多...

函数

int main (istream &cin, ostream &cout)
 
 TEST (acwing4394, case1)
 
 TEST (acwing4394, case2)
 
 TEST (acwing4394, case3)
 
 TEST (acwing4394, case4)
 

详细描述

  1. 最长连续子序列

函数说明

◆ main()

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

在文件 acwing.cpp6131 行定义.

6131 {
6132 unsigned n;
6133 unsigned k;
6134 cin >> n >> k;
6135 vector<unsigned> vec(n);
6136 for(unsigned i = 0; i < n; i++) {
6137 cin >> vec[i];
6138 }
6139 unsigned l = 0;
6140 unsigned r = 0;
6141 unsigned max_l = l;
6142 unsigned max_r = r;
6143 vector<unsigned> um(1000001, 0);
6144 unsigned size = 1;
6145 um[vec[0]]++;
6146 while(r < n) {
6147 while(size <= k) {
6148 r++;
6149 if(r < n) {
6150 if(um[vec[r]] == 0) {
6151 size++;
6152 }
6153 if(size > k) {
6154 r--;
6155 size--;
6156 break;
6157 }
6158 um[vec[r]]++;
6159 } else {
6160 cout << max_l + 1 << ' ' << max_r + 1;
6161 return 0;
6162 }
6163 max_r = r;
6164 }
6165
6166 um[vec[l]]--;
6167 if(um[vec[l]] == 0) {
6168 size--;
6169 }
6170 l++;
6171 r++;
6172 if(r < n) {
6173 if(um[vec[r]] == 0) {
6174 size++;
6175 }
6176 um[vec[r]]++;
6177 if(size <= k) {
6178 max_l = l;
6179 max_r = r;
6180 }
6181 } else {
6182 cout << max_l + 1 << ' ' << max_r + 1;
6183 return 0;
6184 }
6185 }
6186 cout << max_l + 1 << ' ' << max_r + 1;
6187 return 0;
6188 }
int vec[100010]
Definition: pat.cpp:5095

引用了 pat::a::a7_2::vec.

被这些函数引用 TEST().

◆ TEST() [1/4]

acwing::acwing4394::TEST ( acwing4394  ,
case1   
)

在文件 acwing_test.cpp2875 行定义.

2875 {
2876 istringstream in("5 5\n1 2 3 4 5");
2877 auto out = ostringstream();
2878 main(in, out);
2879 const auto ans = out.str();
2880 ASSERT_EQ("1 5", ans);
2881 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().

◆ TEST() [2/4]

acwing::acwing4394::TEST ( acwing4394  ,
case2   
)

在文件 acwing_test.cpp2883 行定义.

2883 {
2884 istringstream in("9 3\n6 5 1 2 3 2 1 4 5");
2885 auto out = ostringstream();
2886 main(in, out);
2887 const auto ans = out.str();
2888 ASSERT_EQ("3 7", ans);
2889 }

引用了 main().

◆ TEST() [3/4]

acwing::acwing4394::TEST ( acwing4394  ,
case3   
)

在文件 acwing_test.cpp2891 行定义.

2891 {
2892 istringstream in("3 1\n1 2 3");
2893 auto out = ostringstream();
2894 main(in, out);
2895 const auto ans = out.str();
2896 ASSERT_EQ("3 3", ans);
2897 }

引用了 main().

◆ TEST() [4/4]

acwing::acwing4394::TEST ( acwing4394  ,
case4   
)

在文件 acwing_test.cpp2899 行定义.

2899 {
2900 istringstream in("6 8\n1 1 1 1 1 1");
2901 auto out = ostringstream();
2902 main(in, out);
2903 const auto ans = out.str();
2904 ASSERT_EQ("1 6", ans);
2905 }

引用了 main().