csdn 这个人的空间很详细!

c++ string

string 转 int
stoi
char 转 int
atoi

从0开始截取size() - 1个0 与 弄出size() - 1个'9';
string s;
cin >> s;
if(s.substr(0,s.size() - 1) != string(s.size() - 1,'9'))
{
    s = string(s.size() - 1,'9');
}
cout<< s << "\n";


vector常见用法!

c++ vector

//构建2维数组,并全部初始化为1;
#include<bits/stdc++.h>
using namespace std;
int main()
{
    vector<vector<int>> dp(5,vector<int> (4,1));
    for(auto i : dp) //两种遍历方法!
    {
        for(auto j : i) cout<<j<<" ";
        cout<<endl;
    }
    for(int i=0; i<dp.size(); i++)
    {
        for(int j=0; j<dp[i].size(); j++) printf("%d ",dp[i][j]);
        cout<<endl;
    }
  	//vector 排序!
  	int n;
    cin >> n;
    vector<int> ve(n+1);
    for(int i=1; i<ve.size(); i++) cin >> ve[i];
    sort(ve.begin()+1,ve.begin()+n+1);
    //sort(ve.begin()+1,ve.end());
    for(int i=1; i<ve.size(); i++) cout<<ve[i]<<" ";
    cout<<endl;
    return 0;
}
//vector 注意事项 size() 返回的是无符号整型,当size = 0时,减去一会得到一个2^64 - 1;
//方便的话从一开始,或者用 is_sorted(ve.begin(),ve.end());
//或者类型转换一下!
bool solve()
{
    int n;
    cin >> n;
    vector<int> odd,even;
    for(int i=1; i<=n; i++)
    {
        int x; cin >> x;
        if(x & 1) odd.push_back(x);
        else even.push_back(x);
    }
    for(int i=0; i<(int)odd.size() - 1; i++) if(odd[i] > odd[i+1]) return false;
    for(int i=0; i<(int)even.size() - 1; i++) if(even[i] > even[i+1]) return false;
    return true;
}
multiset
判断有无y元素
#include <bits/stdc++.h>
using namespace std;
multiset<int> st;
int main()
{

    int n;
    cin >> n;
    for(int i=1; i<=n; i++)
    {
        int x;
        cin >> x;
        st.insert(x);
    }
    int y;
    cin >> y;
    auto t = st.find(y);
    if(t == st.end() && *st.end() != y) puts("NO");
    else puts("YES");
    return 0;
}

https://ac.nowcoder.com/acm/contest/11229/D
 
#include<iostream>
#include<map>
#include<queue>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<unordered_map>
#include<set>
using namespace std;
typedef pair<int,int> PII;
#define ll long long
#define IOS ios_base :: sync_with_stdio(false); cin.tie(nullptr);
#define fi first
#define se second
#define int ll
const int N = 2e6+9;
int a[N],b[N];
int n,s;
multiset<ll> st;
signed main()
{
    IOS;
    ll sum = 0;
    cin >> n >> s;
    for(int i=1; i<=n; i++) cin >> a[i],sum += a[i];
    for(int i=1; i<=n; i++) cin >> b[i],b[i+n] = b[i];
    for(int i=1; i<=n; i++) a[i+n] = a[i];
    sum = 0;
    ll ans = 2e9;
    int f = 0;
    for(int i=1,j=0; i<=n; i++)
    {
        for(; j<2*n && sum < s;)
        {
            j++;
            st.insert(-b[j]);
            sum += a[j];
        }
        if(sum >= s && j <= i + n - 1)
        {
            f = 1;
            ans = min(ans,-(*st.begin()));
        }
        st.erase(st.find(-b[i]));
        sum -= a[i];
    }
    if(f) cout<<ans<<"\n";
    else cout<<-1<<"\n";
    return 0;
}