1、Machine
分析:3进制,水题
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
char str[4]={'R','G','B'};
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int m;
long long n;
scanf("%d%lld",&m,&n);
int color[35];
memset(color,0,sizeof(color));
int g=m;
while (n && g)//g=0 мЭ╪геп╤о
{
color[g]=n%3;
n/=3;
g--;
}
for (int i=1;i<=m;i++)
printf("%c",str[color[i]]);
puts("");
}
return 0;
}
2、Matrix
分析:设定两个数组分别存储行和列,如果交换,只需交换两个数组的值,水题
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while (t-- > 0)
{
int cow[1005],row[1005];
int juzhen[1005][1005];
int n,m;
int q;
scanf("%d%d%d",&n,&m,&q);
for (int i=1;i<=n;i++)
row[i]=i;
for (int i=1;i<=m;i++)
cow[i]=i;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
scanf("%d",&juzhen[i][j]);
while (q--)
{
int a,b,c,g;
scanf("%d%d%d",&a,&b,&c);
switch(a)
{
case 1:
g=row[b];
row[b]=row[c];
row[c]=g;
break;
case 2:
g=cow[b];
cow[b]=cow[c];
cow[c]=g;
break;
case 3:for (int i=1;i<=m;i++)
juzhen[row[b]][i]+=c;
break;
case 4:for (int i=1;i<=n;i++)
juzhen[i][cow[b]]+=c;
break;
}
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m-1;j++)
printf("%d ",juzhen[row[i]][cow[j]]);
printf("%d\n",juzhen[row[i]][cow[m]]);
}
}
return 0;
}
3、String
分析:尺取法,具体问度娘吧,具体我也解释不清楚
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1e6+10;
int ch[30];
char str[maxn];
int main()
{
int t;
int k;
scanf("%d",&t);
while (t--)
{
getchar();
scanf("%s",str);
scanf("%d",&k);
int len=strlen(str);
long long ans=0;
int l=0,r=0;
int cnt=0;
memset(ch,0,sizeof(ch));
while (l<=r && l<len)
{
while (cnt<k && r<len)
{
ch[str[r]-'a']++;
if (ch[str[r]-'a'] == 1) cnt++;
r++;
}
if (cnt == k) ans+=len-r+1;
if (ch[str[l]-'a'] == 1) cnt--;
ch[str[l]-'a']--;
l++;
}
printf("%lld\n",ans);
}
return 0;
}
4、Robot
分析:卡特兰数加逆元,我拒绝,渣渣不会,望聚聚指点
|