1、更小的数,主要是关于string转化为char[]的问题
string s;
char ch[s.length()+1];
strcpy(ch,s.c_str());
int main()
{
string s;
cin >> s;
char ch[s.length() + 1];
strcpy(ch, s.c_str());
int len;
int count = 0;
for (len = 2; len <= s.length(); len++)
{
for (int i = 0; i < s.length(); i++)
{
for (int j = i,k=i+len-1; j < len; j++,k--)
{
if (ch[k] > ch[j])
{
count++;
break;
}
}
}
}
return 0;
}
2、颜色平衡树问题,代码放这,没弄懂,明天继续,,,,,
#include<bits/tdc++.h>
#include<iostream>
#include<algorithm>
#include<unordered_map>
const int N = 200010;
unordered_map<int, int>sum[N], cnt[N]; //cnt存储子节点的颜色
int col[N]; //颜色
vector<int>e[N]; //节点
int ans = 0; //构成平衡树的节点个数
int n;
void dfs(int u)
{
cnt[u][col[u]]=sum[u][1]=1;
for (auto &k : e[u])
{
dfs(k);
for (auto &it : cnt[k])
{
int x = it.first, y = it.second;
if (cnt[u].count(x) && !--sum[u][cnt[u][x]])
sum[u].erase(cnt[u][x]);
sum[u][cnt[u][x] += y]++;
}
}
ans += sum[u].size() == 1;
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
int a;
cin >> col[i] >> a;
e[a].push_back(i);
}
dfs(1);
cout << ans;
return 0;
}