ac了两道题
第一题睿抗启动
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;cin>>n;
string s;cin>>s;
if(s=="yourname") s="myname";
string t=s;
for(int i=0;i<n;i++){
for(int j=0;j<t.size();j++){
if(t[j]>='b'&&t[j]<='z'){
t[j]=t[j]-1;
}else if(t[j]>='A'&&t[j]<='Y'){
t[j]=t[j]+1;
}else if(t[j]=='Z'){
t[j]='A';
}else if(t[j]=='a'){
t[j]='z';
}
}
int cnt1=0,cnt2=0;//大写字母,小写字母个数
for(int j=0;j<t.size();j++){
if(t[j]>='a'&&t[j]<='z'){
cnt2++;
}else{
if(cnt2<3){
cnt2=0;
}
for(int k=j-cnt2;k<j;k++){
t[k]=t[k]-'a'+'A';//小写变大写
}
cnt2=0;
}
if(t[j]>='A'&&t[j]<='Z'){
cnt1++;
}else{
if(cnt1<3){
cnt1=0;
}
for(int k=j-cnt1;k<j;k++){
t[k]=t[k]-'A'+'a';//大写变小写
}
cnt1=0;
}
}
if(cnt1>=3){
for(int k=t.size()-cnt1;k<t.size();k++){
t[k]=t[k]-'A'+'a';
}
}else if(cnt2>=3){
for(int k=t.size()-cnt2;k<t.size();k++){
t[k]=t[k]-'a'+'A';
}
}
}
cout<<s<<endl;
cout<<t<<endl;
}
第三题
#include<bits/stdc++.h>
using namespace std;
#define PII pair<int,int>
#define x first
#define y second
int n,m,l;
int a[1005];//时间
int b[10005];//篮子
struct node{
//时间,编号
int a,b;
};
bool cmp(node n1,node n2){
//先按照时间,再按照编号
if(n1.a==n2.a) return n1.b<n2.b;
return n1.a<n2.a;
}
int main(){
cin>>n>>m>>l;
for(int i=1;i<=n;i++){
cin>>a[i];
}
vector<node>res;
//还要按照编号排序
priority_queue<pair<PII,int>,vector<pair<PII,int>>,greater<pair<PII,int>>>pq;//从小到大
//{时间,篮子编号},订单编号
for(int i=1;i<=l;i++){
int xx;cin>>xx;
if(pq.size()>=m){
auto it=pq.top();
pq.pop();
res.push_back({it.x.x,it.y});
pq.push({{it.x.x+a[xx],it.x.y},i});
b[it.x.y]++;
}else{
pq.push({{a[xx],i},i});
b[i]++;
}
}
while(!pq.empty()){
auto it=pq.top();
pq.pop();
res.push_back({it.x.x,it.y});
}
sort(res.begin(),res.end(),cmp);
for(int i=0;i<res.size()-1;i++){
cout<<res[i].b<<":"<<res[i].a<<" ";
}
cout<<res[res.size()-1].b<<":"<<res[res.size()-1].a;
cout<<endl;
//随后在下一行按照编号递增序输出每只篮子煮了多少碗面
for(int i=1;i<m;i++){
cout<<b[i]<<" ";
}
cout<<b[m];
}