周一晚上打Codeforces Div.2只看了前三道题,其中第一道直接AC,第二道感觉是关于数学类的题目,题意:a数组大小为n,b数组大小为n+1,判断是否有使得所有的a[i]=gcd(b[i],b[i+1]);想了十几分钟,不会,放弃了。
第二题答案
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
while(t--){
int n;
cin >> n;
vector<int> a(n);
int flag=0;
for(int i=0;i<n;i++)
cin >> a[i];
for(int i=1;i<n-1;i++){
if(a[i]%(__gcd(a[i-1],a[i+1]))!=0)
flag++;
}
if(flag==0)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
}
大部分时间看第三道题,题意很简单,读完之后第一直觉直接用二分,对于区间进行操作,题意:a数组长度为n,求a数组中存在多少个数组[l,r],使得b[i]>=i;在这个过程中总有这样那样的错误,到最后30s才把结果弄出来,虽然测试的结果对了,但还是没AC成功,真是气,在纸上演算了很多遍,还得再看看他人的代码。
第三题答案
#include<bits/stdc++.h>
using namespace std;
const int N=200010;
int a[N],b[N];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
long long res=0;
for(int i=0,j=0;i<n;i++)
{
while(j<n&&a[j]>=j-i+1)j++;
res+=j-i;
}
cout<<res<<endl;
}
}
周二晚上打Codeforces Div.3,第一题直接AC。第二题,交了5次才AC掉,实在是不应该,可惜啊,没有仔细看题意和代码,AC完B题后还有一个多小时。第三题题意没怎么看懂,不过我感觉是用二分和差分,也可能感觉错误,直接跳过去。第四题二叉树类题目,最近也是看这类的文章,尝试了一下,最终以失败告终,后面的题没看就睡了。
这周做题的最直接感受就是看博客有用。