感想:经典教育场被教育,以后不敢再打教育场了
题目传送门
A. Review Site
模拟,莫名其妙WA了一发
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
//#define int long long
//#define double long double
#define eps 1e-8
//#define mod 1e9+7
#define ls(p) p<<1
#define rs(p) p<<1|1
#define pi acos(-1.0)
using namespace std;
const int mod=1e9+7;
const int M=1e8;
const int N=3*1e6+5;//??????.???? 4e8
int n,m,t;
void solve()
{
int ans=0;
cin>>n;
while(n--)
{
int x;
scanf("%d",&x);
if(x!=2) ans++;
}
cout<<ans<<endl;
}
signed main()
{
int T=1;
cin>>T;
for(int index=1;index<=T;index++)
{
solve();
// puts("");
}
return 0;
}
B. GCD Length
直接构造三分钟水过
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
//#define int long long
//#define double long double
#define eps 1e-8
//#define mod 1e9+7
#define ls(p) p<<1
#define rs(p) p<<1|1
#define pi acos(-1.0)
using namespace std;
const int mod=1e9+7;
const int M=1e8;
const int N=2*1e6+5;//??????.???? 4e8
int n,m;
int a,b,c;
int get(int x)
{
int sum=1;
for(int i=1;i<=x-1;i++) sum*=10;
return sum;
}
void solve()
{
cin>>a>>b>>c;
int aa=1,bb=1,cc=1;
aa=get(a),bb=get(b),cc=get(c);
cout<<aa+cc<<" "<<bb<<endl;
}
signed main()
{
int T=1;
cin>>T;
for(int index=1;index<=T;index++)
{
solve();
// puts("");
}
return 0;
}
C. Yet Another Card Deck
数据才50,当然是暴力啊
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
//#define int long long
//#define double long double
#define eps 1e-8
//#define mod 1e9+7
#define ls(p) p<<1
#define rs(p) p<<1|1
#define pi acos(-1.0)
using namespace std;
const int mod=1e9+7;
const int M=1e8;
const int N=3*1e6+5;//??????.???? 4e8
int n,m;
int a[N],b[N],c[N],t;
int ma,mi=1e9;
map < int , int > mp1;
struct node
{
int val,pos;
}e[N],te[N];
void solve()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(!mp1[a[i]]) mp1[a[i]]=i,e[++t]=(node){a[i],i};
}
for(int i=1;i<=m;i++)
{
int x,cnt;
scanf("%d",&x);
for(int j=1;j<=t;j++) if(e[j].val==x)
{
cnt=j;
break;
}
node tt=e[cnt];
for(int j=2;j<=cnt;j++) te[j]=e[j-1];
for(int j=2;j<=cnt;j++) e[j]=te[j];
e[1]=tt;
printf("%d ",tt.pos);
for(int j=1;j<=cnt;j++) e[j].pos++;
e[1].pos=1;
// for(int j=1;j<=t;j++) cout<<e[j].val<<": "<<e[j].pos<<endl;
// cout<<endl;
}
}
signed main()
{
int T=1;
// cin>>T;
for(int index=1;index<=T;index++)
{
solve();
// puts("");
}
return 0;
}
//5 10
//1 2 3 4 5
//1 2 3 4 5 1 2 3 4 5
D. Min Cost String
刚看到题的时候有点懵,也是和同学讨论了一下,得出以下方法。
根据第一组数据的提示画了一个k2的矩阵(如图),按照上述方法构造字符串几个,记得在构造出的字符串在输出前先输出a(a不在构造的字符串中),然后不断循环即可。
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
#define inf 0x7fffffff
#define ll long long
//#define int long long
//#define double long double
#define eps 1e-8
//#define mod 1e9+7
#define ls(p) p<<1
#define rs(p) p<<1|1
#define pi acos(-1.0)
using namespace std;
const int mod=1e9+7;
const int M=1e8;
const int N=3*1e6+5;//??????.???? 4e8
int n,m,t;
char a[55][55],s[N];
void solve()
{
cin>>n>>m;
for(int i=1;i<=m;i++) for(int j=1;j<=m;j++) a[i][j]=j+'a'-1;
for(int i=1;i<=m;i++) a[m][i]=i+'a';
a[m][m]='a';
for(int i=1;i<=m;i++)
{
int cnt=i+1,j=i+1;
s[t++]=a[i][i];
while(cnt<=m)
{
s[t++]=a[i][cnt++];
s[t++]=a[j][i];
j=min(j+1,m);
}
// s[t]=a[m][i];
// cout<<a[m][i];
}
cout<<"a";
for(int i=0;i<n-1;i++) printf("%c",s[i%t]);
}
signed main()
{
int T=1;
// cin>>T;
for(int index=1;index<=T;index++)
{
solve();
// puts("");
}
return 0;
}