Crazyharp

竖琴


  1. 1. 1.1语法基础
    1. 1.1. P一大堆基础题
      1. 1.1.1. P1980计数问题
        1. 1.1.1.1. 代码
  2. 2. 1.2 数组
    1. 2.1. P1047校门外的树
  • Home
  • About
  •   

© 2025 Crazyharp

Theme Typography by Makito

Developed by Crazy_Harp

Proudly published with Hexo

25暑假锣鼓复习记录

Posted at 2025-07-02 Comments 记录 

本文共444字,阅读需要约1分钟

1.1语法基础

P一大堆基础题

就…没啥好说的
非常的普通,放在div3都当不了A的题。除了我自己犯唐之外基本不会WA。
值得记录的只有一个看到的题解使用字符串流做数据处理

P1980计数问题

引入一个新库sstream,主要实现就是字符串流,与C语言中的sscanf,sprintf对应。
具体的,将所有数字依次读入字符串流,转换为字符串,最后使用计数函数即可。

代码

#include <bits/stdc++.h>
using namespace std;
  
int main() {
   int n, x;
   cin >> n >> x;
   stringstream ss;
   for (n++; --n; ss << n);     //把1-n的值都存放到字符串流中
   string s = ss.str();
   cout << count(s.begin(), s.end(), x + '0') << endl;   
   return 0;
}

字符串流类似于队列,为一种单向进入的数据结构,常用函数如下

  • std::istringstream::str():获取或设置内部字符串。

  • std::istringstream::clear():清除错误标志。

  • std::istringstream::eof():检查是否到达文件末尾。

  • std::istringstream::fail():检查是否发生错误。

  • std::istringstream::good():检查是否一切正常。

  • std::istringstream::ignore():忽略输入流中的字符。

  • std::istringstream::peek():查看下一个字符,但不提取。

  • std::istringstream::get():提取一个字符。

  • std::istringstream::getline():提取一行。

1.2 数组

P1047校门外的树

发现了一点遗漏,使用差分数组维护区间修改。
平时不会这么写,所以有些想不起来。

对区间[l,r]加x,则在差分数组s[l]+x,s[r]-x即可。然后进行一次累加即可。

这种离线操作虽然但是因为不能反复查询不太好使,但是修改成本为O(1)非常的快。

Share 

 Previous post: 更新日志008 Next post: 咕咕咕咕 

© 2025 Crazyharp

Theme Typography by Makito

Developed by Crazy_Harp

Proudly published with Hexo