【模板】基础算法&&小算法
来源:互联网 发布:北大青鸟网络培训课程 编辑:程序博客网 时间:2024/05/21 17:20
逆序对:
void msort(ll l,ll r){ if(l == r)return; else { int mid = (l + r) >> 1; int a = l,b = mid + 1,c = 1; msort(l,mid); msort(mid + 1,r); while(a <= mid && b <= r) { if(p[a].y > p[b].y) { t[c] = p[b].y; num += mid - a + 1; c ++;b ++; } else { t[c] = p[a].y; c ++;a ++; } } while(a <= mid) { t[c] = p[a].y; a ++;c ++; } while(b <= r) { t[c] = p[b].y; b ++;c ++; } for(int i = 1;i <= r - l + 1;i ++) p[l-1+i].y = t[i]; } }
尺取法:
void cqf(){ int sum = 0,s = 1,e = 1; int ans = n + 1; for(;;) { while(e <= n && sum < S) { sum += num[e++]; } if(sum < S) { break; } ans = min(ans ,e - s); sum -= num[s++]; } }
高精度 + :
#include<iostream>#include<cstring>#include<cstdio>using namespace std;char a1[505],b1[505];int a[505],b[505],c[505],lena,lenb,lenc;int main(){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); scanf("%s%s",&a1,&b1); lena = strlen(a1); lenb = strlen(b1); for(int i = 0; i < lena;i ++) a[lena - i] = a1[i] - '0'; for(int i = 0; i < lenb;i ++) b[lenb - i] = b1[i] - '0'; lenc = 1; int x = 0; while(lenc <= lena || lenc <= lenb) { c[lenc] = a[lenc] + b[lenc] + x; x = c[lenc] / 10; c[lenc] %= 10; lenc ++; } c[lenc] = x; if(c[lenc] == 0) lenc --; for(int i = lenc;i >= 1; i --) cout << c[i]; return 0;}
高精度 - :
#include<iostream> #include<string> using namespace std; int main() { string a,b; cin>>a>>b; if (a.size()<b.size()||(a.size()==b.size()&&a<b)) /* 保证a>b */ { swap(a,b); cout<<"-"; } for (int i=1;i<=b.size();i++) { a[a.size()-i]=a[a.size()-i]-b[b.size()-i]+'0'; /*从个位减起,每一位简单相减*/ } for (int i=1;i<=a.size();i++) { if (a[a.size()-i]<'0') /*退位*/ { a[a.size()-i-1]-=1; a[a.size()-i]+=10; } } int book; for (book=0;book<a.size();book++) /*对没有意义的0的处理*/ { if(a[book]!='0') break; } for (int i=book;i<a.size();i++) { if (a[i]>='0'&&a[i]<='9') cout<<a[i]; } return 0; }
高精度 * :
#include<iostream>#include<cstdio>#include<cstring>using namespace std;char a1[1000],b1[1000];int i,j,lena,lenb,a[1000],b[1000],c[2000];int main(){ scanf("%s%s",&a1,&b1) ;lena = strlen(a1) ;lenb = strlen(b1) ; for(i = 0;i < lena; i ++) a[lena - i - 1] = a1[i] - '0'; for(i = 0;i < lenb; i ++) b[lenb - i - 1] = b1[i] - '0'; for(i = 0;i < lenb;i ++) for(j = 0;j < lena; j++) { c[j + i] += b[i] * a[j]; } for(i = 0;i < lena + lenb ; i ++) { if(c[i] >= 10) { c[i + 1] += c[i] / 10; c[i] = c[i] % 10; } } i = lena + lenb - 1; while(c[i] == 0 && i != 0) i--; for(;i >= 0;i --) printf("%d",c[i]); return 0;}
0 0
- 【模板】基础算法&&小算法
- 基础SPFA算法模板
- PHP基础小算法
- 网络流基础算法模板
- NOIP前 基础算法模板
- 【算法小总结】母函数模板
- 次小生成树模板-prim算法
- 小白算法练习 数位dp模板
- 欧几里德算法&&扩展欧几里德算法 (小推+模板)
- 基础算法模板之链表+排序
- Dijkstra算法---单源最短路(基础模板)
- 一些基础算法的模板(持续更新)
- Java基础之两个小算法
- java学习之基础小算法
- 熟悉Python的各种基础小算法
- 小算法
- 小算法
- HK算法模板+小优化(跑的快一点点)
- 机器视觉方面的别人面试经验
- 算法-扩展欧几里得
- oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY
- 数据库中聚簇索引与非聚簇索引的区别
- 网站开发设置创建的JSP文件默认的代码
- 【模板】基础算法&&小算法
- 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
- makefile
- [BZOJbegin][NOIP十连测热身赛b]escape(二分+bfs)
- Java堆、栈、常量池和String的详细讲解
- [问题解决] maven: Could not calculate build plan: xxx
- 几种使用了CNN(卷积神经网络)的文本分类模型
- xilinx生成mcs,下载flash问题解决方法
- 字体缩写