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
分析:卡特兰数加逆元,我拒绝,渣渣不会,望聚聚指点
|