如何抄题解
分割线中间的内容是这位用户的博客文章,只不过他发到灌水区,我担心被封,所以复制过来。
抄题解可以增加练习分和提高AC数,但有棕名的风险,所以学会抄题解的技巧非常重要!
示例:
- 选择题目
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;
}
- 改变量,位置
#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;
}
祝你们成功
下面是我的内容:
上面的技巧应付短代码可以,但我想补充几点:
-
改马蜂。
-
尽量不要抄第一篇,往后多找几页。
-
挑做的人少的题或模板题。
-
头文件。多列举几条。
-
命名空间去掉,改成std::
-
int main 改成 signed main
-
define int long long(如果所抄题解有了,就去掉并把int全改为 long long)
-
加入卡常,参考我的另一篇博客文章。
-
善用不同语句表达相同效果。
-
加入无用语句。
-
思路不变的同时形式改变(有的时候比较麻烦,和第6条有些共通但不同)。
-
有能力的开个匿名(最好用了,因为大家是举报,要先能看见你的代码)。
对于以上加粗的三条,有很多技巧,如果需要请付费观看(私信。