总结 | #寒假营第二场#
I. 01回文
题意:可以看原题,比较简单。
为什么错?一开始用数字读入,发现不太好操作,改用string数组发现可能读入有问题,改换了char数组才AC
H. 权值计算 (unfinished)
考点:计数,找规律
题意:首先给了一个伪代码,然后根据伪代码求出所有非空子数组的权值之和
为什么错?没有正确总结出伪代码计算权值的方法:计算各个子数组中不同数的个数
正确思路:计算每个数字对权值的贡献值。
AC代码:
using ll=long long;
void whale_solve(){
int n;cin>>n;
vector<ll>a(n+1);
for(int i=1;i<=n;i++) cin>>a[i];
map<ll,int>posi;//记录上一次出现的位置
ll sum=0LL;
for(int i=1;i<=n;i++){
ll dev=(ll)(i-posi[a[i]])*(ll)(2+n-i)*(n-i+1)/2;//计算a[i]的贡献
//这里注意对数据进行longlong的标注,不然会溢出(就这里WA了两发)
posi[a[i]]=i;//更新位置
sum+=dev;
}
cout<<sum;
}
E. 01矩阵(unfinished)
考点:构造
题意:回看题目吧,不太好概括
思路:观察第一个样例可以徐徐推出。。。。。。
AC代码:
void whale_solve(){
int n;cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++) cout<<((min(i,j)&1)?1:0);
cout<<"\n";
}
}