如何抄题解

· · 个人记录

分割线中间的内容是这位用户的博客文章,只不过他发到灌水区,我担心被封,所以复制过来。

抄题解可以增加练习分和提高AC数,但有棕名的风险,所以学会抄题解的技巧非常重要!

示例:

  1. 选择题目

P4550 收集邮票

难度:提高+/省选-,选代码较短的

#include <bits/stdc++.h>
using namespace std;
int n;
double f[10005],g[10005];
int main() {
    scanf("%d",&n);
    for(int i=n-1;~i;--i) {
        f[i]=f[i+1]+(1.0*n)/(1.0*(n-i));
        g[i]=(1.0*i)/(1.0*(n-i))*(f[i]+1)+g[i+1]+f[i+1]+1;
    }
    printf("%.2lf\n",g[0]);
    return 0;
}

2.去注释

3.改格式,输入输出

#include<bits/stdc++.h>
using namespace std;
int n;
double f[10005],g[10005];
int main()
{
    cin>>n;
    for(int i=n-1;~i;i--)
  {
        f[i]=f[i+1]+(1.0*n)/(1.0*(n-i));
        g[i]=(1.0*i)/(1.0*(n-i))*(f[i]+1)+g[i+1]+f[i+1]+1;
    }
    printf("%.2lf\n",g[0]);
    return 0;
}
  1. 改变量,位置
#include<bits/stdc++.h>
using namespace std;
double a[10001],b[10001];
int main()
{
  ios::sync_with_stdio(0);
   int n;
    cin>>n;
    for(int i=n-1;~i;i--)
        a[i]=a[i+1]+(n*1.0)/(1.0*(n-i)),b[i]=(1.0*i)/((n-i)*1.0)*(a[i]+1)+b[i+1]+a[i+1]+1;
  double ans=b[0];
    printf("%.2lf\n",b[0]);
    return 0;
}

祝你们成功

下面是我的内容:

上面的技巧应付短代码可以,但我想补充几点:

  1. 改马蜂。

  2. 尽量不要抄第一篇,往后多找几页。

  3. 挑做的人少的题或模板题。

  4. 头文件。多列举几条。

  5. 命名空间去掉,改成std::

  6. int main 改成 signed main

  7. define int long long(如果所抄题解有了,就去掉并把int全改为 long long)

  8. 加入卡常,参考我的另一篇博客文章。

  9. 善用不同语句表达相同效果

  10. 加入无用语句

  11. 思路不变的同时形式改变(有的时候比较麻烦,和第6条有些共通但不同)。

  12. 有能力的开个匿名(最好用了,因为大家是举报,要先能看见你的代码)。

对于以上加粗的三条,有很多技巧,如果需要请付费观看(私信。