传送门:https://codeforces.com/contest/1602
A. Two Subsequences
思路分析:
模拟就行!
代码实现:
int main(){
int t;
cin>>t;
while (t--) {
string s;
cin>>s;
s=" "+s;
char m=s[1];
int id=1;
for(int i=2;i<s.size();i++){
if(s[i]<m){
id=i;
m=s[i];
}
}
cout<<s[id]<<" ";
for(int i=1;i<s.size();i++){
if(i==id) continue;
cout<<s[i];
}
cout<<endl;
}
}
B. Divine Array
思路分析:
题目的操作就是每个位置的数值为更新前该数的个数
题目的数据才2000 我们完全可以暴力解决
我们打表可以发现 k>n以后都与n一样(特例
a[i][j]是第i次处理后j位的数字
cnt[i]位第i位第数字
const int MAX=2010;
int a[MAX][MAX];
int cnt[MAX];
int main(){
int t;
cin>>t;
while (t--) {
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[0][i];
}
int m;
cin>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) cnt[j]=0;
for(int j=1;j<=n;j++) cnt[a[i-1][j]]++;
for(int j=1;j<=n;j++) a[i][j]=cnt[a[i-1][j]];
}
while (m--) {
int x,k;
cin>>x>>k;
cout<<a[min(n,k)][x]<<endl;
}
}
}