写代码要注意的几点。
2018-06-17 23:54:22来源:未知 阅读 ()
一。快速幂
1 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ 2 /* 对于有可能爆数组的值要强制转换类型 */ 3 /* 并对这个值取模mod */ 4 /* const int mod (1e9为double类型) */ 5 /* 强制转换为int */ 6 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
1 int fast_pow(int n,int k){ 2 int ans = 1;//在函数内部声明。 3 if(k == 0) 4 return 1; 5 for(;k;k>>=1,n=(LL)n*n%mod) 6 if(k&1) 7 ans=(LL)ans*n%mod; 8 return ans; 9 }
二。并查集压缩路径时
int find(int x){ if(fa[x]==x) return x; else{ int t=fa[x]; fa[x]=find(t);//先等于find(t),再返回; } return fa[x]; }
三。取模时
for(int i = 2;i <= k+1;i++) for(int j = 1;j <= i;j++){ f[i][j] = (LL)(f[i-1][j]+f[i-1][j-1]) % mod;//取模的运算级高,加法要加括号; }
四。读字符串时
char s[100]; scanf("%s",s);//只写变量名称,不写大小; scanf("%s",s+1);//从下标[1]开始存;
读下一个字符串前要读一个空字符串,(行末空格和回车);
五。函数内的变量最好是局部变量。
六。开数组和定义新变量时一定要对照原题中的数据范围,防止越界爆数组或是数组开大浪费。
七。提交前注意检查头文件和读入输出文件‘
freopen(".in","r",stdin); freopen(".out","w".stdout);//尤其是这一行。不要用斜杠注释掉‘’
八。注意比较形似的STL
lower_bound(); upper_bound(); //在一个升序数组上进行二分查找。 //前者返回第一个大于等于查询值的位置; //第二个返回第一个大于查询值的位置;
九。一般遇到让若干项元素的最小值最大或最大值最小的问题,要用二分的方法;
二分答案mid,检查一下能不能满足题中的条件,如果可以,下一步在[mid+1,r]中再二分,反之在[l,mid]中二分。
十。牢记欧几里得算法和扩展欧几里得算法
int gcd(int a,int b){ if(!b) return a; else return gcd(b,a&b); }//欧几里得算法。
void exgcd(int a,int b,int &d,int &x,int &y){ if(!b){ d = a; x = 1; y = 0; } else{ exgcd(b,a%b,d,y,x); y-=((a/b)*x); } }//扩展欧几里得算法。
有时得到的x,y是负数,解集为(x+k*b' , y-k*a');
b' = b/gcd(a,b);
a' = a/gcd(a,b);
十一。取模的基本性质
(a+b)%b = ((a%n)+(b%n))% n;
(a- b)%b = ((a%n)-(b%n)+ n)% n ;
a*b%n = (a%n)*(b&n)%n;
除法不能取模,如果要取模,要先要求逆元;
十二。标记用完要清零。
十三。大数据的运算要用高精度。
十四。01背包和完全背包的区别
void ZeroOnePack(int f[],int V,int v,int w){ for(int i = V,i>=v;--i) f[i] = max(f[i],f[i - v] + w); }
void CompletePack(int f[],int V,int v,int w){ for(int i = v;i <= V;i++) f[i] = max(f[i],f[i - v] + w); }
十五。int a;int b;double sum;
在计算sum = a + b;时要把a和b强制转化成double类型
int a;int b; double sum; sum = (double) a + b;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:实现一门新的语言--背景(1)
下一篇:c/c++面试总结(2)
- opencv-12-高斯滤波-双边滤波(附C++代码实现) 2020-05-10
- C++ 存储持续性 2020-05-10
- Android P HIDL demo代码编写 (原创) 2020-05-07
- 前缀和 2020-05-04
- 纯虚函数与基类指针数组的运用 代码参考 2020-04-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash