当前位置:   article > 正文

牛客周赛28

牛客周赛28
  1. int main() {
  2. int arr[1000001] = { 0 };
  3. char str[100001] = { 0 };
  4. cin >> str;
  5. int sz = strlen(str);
  6. for (int i = 0; i < sz - 1; i++) {
  7. arr[i] = toupper(str[i]) * 100 + toupper(str[i + 1]);
  8. }
  9. sort(arr, arr + sz - 1);
  10. for (int i = 0; i < sz - 1; i++) {
  11. cout << char(arr[i] / 100 + 32) << char(arr[i] % 100 + 32) << endl;
  12. }
  13. }

这是B题,当时因为头文件没写对卡了一下,当时用的是qsort带的一个排序,把cmp函数写成char*的比较就行了。这是我当时的另一个思路,之后写出来了,把字符转换为数字,然后排序对应的数字,最后输出字符。注意小写的可能是三位数,我都转大写了,事实上只要方便,a不转为A也行,只要后面能转回去。        

D题,需要注意里面的while,因为sum-arr[j]之后sum有可能还是>=k,所以必须让sum<k的时候才能进行i++,while是一种处理方式,只要按照思路处理就行.

  1. int main() {
  2. ll n, k, count = 0;
  3. cin >> n >> k;
  4. vector<ll> arr(n);
  5. for (int i = 0; i < n; i++) {
  6. cin >> arr[i];
  7. }
  8. int j = 0;
  9. ll sum = 0;
  10. for (int i = 0; i < n; i++) {
  11. sum += arr[i];
  12. while (sum >= k) {
  13. sum -= arr[j];
  14. j++;
  15. count += n - i;
  16. }
  17. }
  18. cout << count;
  19. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/44222
推荐阅读
相关标签
  

闽ICP备14008679号