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;
}