杂
acmer_zp
这个作者很懒,什么都没留下…
展开
-
表达式求值
#include#include#include#include#include#include#include#includeusing namespace std;string getstr(char str[])//处理字符串中的空格和最后的等号,还有字符串中的负号{ int len=strlen(str); string a; for(int i原创 2016-10-18 19:16:27 · 236 阅读 · 0 评论 -
神奇的二进制
NYOJ找球号:计算一个数二进制每一位的贡献:#include#include#include#include#includeusing namespace std;int x[110];void change(int a)//把a转化为二进制存到数组里{ for(int i=0; a!=0; i++) { if(a&1)原创 2016-10-18 20:23:25 · 545 阅读 · 0 评论 -
最长递增子序列(nlogn),最长公共子串(连续),最长公共子序列(不连续)
最长递增子序列(nlogn):#include#include#include#includeusing namespace std;int x[500010],a[500010];int main(){ int n,Z=0; while(~scanf("%d",&n)) { for(int i=0;i<n;i++) {原创 2016-10-18 19:53:16 · 566 阅读 · 0 评论 -
整数划分
整数划分n的所有方式:#include#include#include#includeusing namespace std;int x[20][20];int main(){ int ncase; scanf("%d",&ncase); memset(x,0,sizeof(x));//将n划分为任意正整数之和x[i][j]代表将i分为最大不超过j的数原创 2016-10-18 19:51:58 · 404 阅读 · 0 评论 -
一维和二维树状数组
#include//注意0的死循环#include#include#includeusing namespace std;typedef long long int LL;const LL mod=1e9+7;LL n,m,x[1000010],arr[1010][1010];LL lowbit(LL t)//求低位 0 会陷入死循环{ return t&(-t);}原创 2016-10-18 19:50:22 · 260 阅读 · 0 评论 -
逆序数
#include#include#include#includeusing namespace std;long long cnt,k;int a[1000020],c[1000020];void merge(int a[],int first,int mid,int last,int c[]){ int i=first,j=mid+1; int m=mid,n=l原创 2016-10-18 19:49:09 · 305 阅读 · 0 评论 -
矩阵快速幂
#include#include#includeusing namespace std;#define mod 1000007typedef long long LL;struct zp{ LL Map[3][3];};zp jx(zp a,zp b)//矩阵相乘{ zp p; for(int i=0; i<3; i++) for(int原创 2016-10-18 19:48:41 · 219 阅读 · 0 评论 -
大数模板
#include#include#include#include#include#includeusing namespace std;#define MAXN 9999#define MAXSIZE 10#define DLEN 4class BigNum{private: int a[500]; //可以控制大数的位数 int len;原创 2016-10-18 19:46:20 · 226 阅读 · 0 评论 -
尺取法
#include//尺取法判断x串中至少出现满足m条件的最小长度#include#include#include#includeusing namespace std;int vis[100],dis[100];int judge()//判断是否满足条件{ for(int i=0; i<26; i++) if(vis[i]<dis[i])原创 2016-10-18 19:38:55 · 267 阅读 · 0 评论 -
比较杂的小算法
并查集:int finds(int x)//找老大{ int j,d=x; while(x!=a[x]) x=a[x]; while(a[d]!=x) { j=d; d=a[d]; a[j]=x; } return x;}int merger(int a,int b)//合并老大原创 2016-10-18 19:37:27 · 367 阅读 · 0 评论 -
线段树扫描线
题目链接 注意这个题是以0结尾的坑了我半天 大佬的博客里面有详解#include<cstdio>#include<cstring>#include<vector>#include<iostream>#include<algorithm>using namespace std;const int inf=0x3f3f3f3f;const int maxn=1e4+10;double原创 2017-04-12 15:15:29 · 235 阅读 · 0 评论