B. Shopping
题意:n个顾客,每个顾客要买m个物品,商场总共有k个物品,看hint就只知道pos(x)怎么算了,对于每一个Aij在k个物品中找到Aij的位置、然后加上这个位置对于的数值,然后再将这个Aij放在物品首端去、
思路:直接暴力
PS:开始写二分找写残了、半小时都在调,说实话我也够傻,想想也知道这题暴力肯定可以过,还硬要去调试二分
#include<cmath>
#include<cstring>
#include<iostream>
#include<cstdio>
using namespace std;
int num[];
int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=k;++i)
scanf("%d",&num[i]);
int sum=;
for(int i=;i<=n;++i){
int ans;
for(int j=;j<=m;++j){
scanf("%d",&ans);
for(int c=;c<=k;++c){
if(num[c]==ans){
sum+=c;
for(int l=c;l>;--l)
num[l]=num[l-];
num[]=ans;
break;
}
}
//printf("%d\n",cor);
// for(int c=1;c<=k;++c)
// printf("%d ",num[c]);
// printf("\n");
}
}
printf("%d\n",sum);
return ;
}
C. Simple Strings
题意:就是要找一个简单串,简单串中相邻的字符都不相等,现在给你一个串,要你在最少的操作次数上修改这个串然后输出
思路:也就是要找所给串中连续相等的字符,进行最小次操作满足简单串的定义,对于连续两个字符aa我们只需要改其中一个就可以了,对于aaa我们只需要改第二个字符就可以了,aaaa呢?就需要改2个字符了,位置改1,3或者2,4都行,aaaaa呢?同样两次但改的位置只能是2,4,那么就可以断定,每两个连续且相等的字符,我们只需要对其后一个进行修改,使其相对于自己两边都不相等就可以了。
PS:CF的测试数据都过了,hack时间也过了,如果有错的话希望指出
#include<cstdio>
#include<algorithm>
#include<cstring>
const int qq=;
char s[qq],s2[qq];
int main()
{
scanf("%s",s);
int len=strlen(s);
for(int i=;i<len-;++i){
if(s[i]==s[i+]){
for(char j='a';j<='z';++j)
if(j!=s[i]&&j!=s[i+]){
s[i+]=j;
break;
}
}
}
printf("%s",s);
return ;
}