归并排序:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[],s[],n;
void megre_sort(int l,int r)
{
if(l==r) return ;
int mid=(l+r)/;
megre_sort(l,mid);megre_sort(mid+,r);
int i=l,j=mid+,k=l;
while(i<=mid&&j<=r)
{
if(a[i]<=a[j])
s[k++]=a[i++];
else
s[k++]=a[j++];
}
while(i<=mid)
s[k++]=a[i++];
while(j<=r)
s[k++]=a[j++];
for(int i=;i<=r;i++)
a[i]=s[i];
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
megre_sort(,n);
for(int i=;i<=n;i++)
printf("%d ",a[i]);
return ;
}

高精度:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[],b[],c[],len1,len2;
char s1[],s2[],s3[];
void add()
{
for(int i=;i<len1;i++)
a[len1-i]=s1[i]-'';
for(int i=;i<len2;i++)
b[len2-i]=s2[i]-'';
int lenc=,x=;
while(lenc<=len1||lenc<=len2)
{
c[lenc]=a[lenc]+b[lenc]+x;
x=c[lenc]/;
c[lenc]%=;
lenc++;
}
c[lenc]=x;
if(c[lenc]==)
lenc--;
for(int i=lenc;i>=;i--)
cout<<c[i];
cout<<endl;
}
void jian()
{
memset(c,,sizeof(c));memset(a,,sizeof(a));memset(b,,sizeof(b));
if(strlen(s1)<strlen(s2)||((strlen(s1)==strlen(s2))&&strcmp(s1,s2)<))
{
strcpy(s3,s1);strcpy(s1,s2);strcpy(s2,s3);
cout<<'-';
}
len1=strlen(s1);len2=strlen(s2);
for(int i=;i<len1;i++)
a[len1-i]=s1[i]-'';
for(int i=;i<len2;i++)
b[len2-i]=s2[i]-'';
int lenc=;
while(lenc<=len1||lenc<=len2)
{
if(a[lenc]<b[lenc])
{
a[lenc]+=;a[lenc+]--;
}
c[lenc]=a[lenc]-b[lenc];
lenc++;
}
while(c[lenc]==&&lenc>)
lenc--;
for(int i=lenc;i>=;i--)
cout<<c[i];
cout<<endl;
}
void cheng()//高精乘
{
for(int i=;i<len1;i++)
a[len1-i]=s1[i]-'';
for(int i=;i<len2;i++)
b[len2-i]=s2[i]-'';
memset(c,,sizeof(c));
for(int i=;i<=len1;i++)
{
int x=;
for(int j=;j<=len2;j++)
{
c[i+j-]=a[i]*b[j]+x+c[i+j-];
x=c[i+j-]/;
c[i+j-]%=;
}
c[i+len2]=x;
}
int lenc=len1+len2;
while(c[lenc]==&&lenc>) lenc--;
for(int i=lenc;i>=;i--)
printf("%d",c[i]);
printf("\n");
}
int main()
{
gets(s1);gets(s2);
len1=strlen(s1);len2=strlen(s2);
add();
jian();
cheng();
return ;
}

二分答案:

  跳石头

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int l;
int n,m,a[];
int check(int x)
{
int k=,last=;
for(int i=;i<=n;i++)
{
if(a[i]-last<x)
k++;
else
last=a[i];
}
if(k>m) return ;
else return ;
}
int main()
{
scanf("%d%d%d",&l,&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
n++;a[n]=l;
int left=,right=l,mid;
while(left<=right)
{
mid=(left+right)/;
if(check(mid)) left=mid+;
else right=mid-;
}
printf("%d",left-);
return ;
}

Floyd:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int f[][],n,map[][],t;
int main()
{
cin>>n;
memset(map,0x3f,sizeof(map));
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&map[i][j]);
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(i!=j&&j!=k&&k!=i&&map[i][k]+map[k][j]<map[i][j])
map[i][j]=map[i][k]+map[k][j];
scanf("%d",&t);
while(t--)
{
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",map[x][y]);
} return ;
}

SPFA:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define N 510
using namespace std;
int map[N][N],dis[N],n,m;
bool exist[N];
int SPFA(int x,int y)
{
queue<int> q;
memset(dis,0x3f,sizeof(dis));memset(exist,false,sizeof(exist));
q.push(x);dis[x]=;exist[x]=true;
while(!q.empty())
{
int h=q.front();q.pop();exist[h]=false;
for(int i=;i<=n;i++)
{
if(dis[i]>dis[h]+map[h][i])
{
dis[i]=dis[h]+map[h][i];
if(exist[i]==false)
q.push(i),exist[h]=true;
}
}
}
return dis[y];
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&map[i][j]);
scanf("%d",&m);
while(m--)
{
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",SPFA(x,y));
}
return ;
}

Dijkstra:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
using namespace std;
int n,map[][],dis[];
bool exist[];
int dij(int x,int y)
{
dis[x]=;
for(int i=;i<=n;i++)
{
int k=,minl=0x5f;
for(int j=;j<=n;j++)
if(exist[j]==false&&dis[j]<minl)
minl=dis[j],k=j;
if(k==) break;
exist[k]=true;
for(int j=;j<=n;j++)
if(dis[j]>dis[k]+map[k][j])
dis[j]=dis[k]+map[k][j];
}
return dis[y];
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&map[i][j]);
int t;
scanf("%d",&t);
while(t--)
{
int x,y;
scanf("%d%d",&x,&y);
memset(dis,0x3f,sizeof(dis));
memset(exist,false,sizeof(exist));
printf("%d\n",dij(x,y));
}
return ;
}

并查集:

 #include<iostream>
#include<cstdio>
#include<cstring>
int fa[],n,m,q;
int find(int x)
{
if(fa[x]==x) return fa[x];
else return fa[x]=find(fa[x]);
}
void un(int x,int y)
{
int rx=find(x),ry=find(y);
if(rx!=ry) fa[rx]=ry;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
fa[i]=i;
for(int i=,x,y;i<=m;i++)
{
scanf("%d%d",&x,&y);
int rx=find(x),ry=find(y);
if(rx==ry) continue;
else un(rx,ry);
}
scanf("%d",&q);
while(q--)
{
int x,y;
scanf("%d%d",&x,&y);
int rx=find(x),ry=find(y);
if(rx==ry) printf("Yes\n");
else printf("No\n");
} return ;
}

Kursual:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{
int from,to,value;
bool operator < (const node &a)const
{
return value<a.value;
}
}e[*];
int n,m,fa[*];
int find(int x)
{
if(fa[x]==x) return fa[x];
else return fa[x]=find(fa[x]);
}
int main()
{
scanf("%d%d",&n,&m);
for(int x,y,z,i=;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
e[i].from=x;e[i].to=y;e[i].value=z;
}
sort(e+,e+m+);
int cnt=,MST=;
for(int i=;i<=n;i++)
fa[i]=i;
while(cnt<=n-)
{
cnt++;
int x=e[cnt].from,y=e[cnt].to;
int rx=find(x),ry=find(y);
if(rx==ry) continue;
else{
fa[rx]=ry;MST+=e[cnt].value;
}
}
printf("%d",MST);
return ;
}

Prim:

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,map[][],dis[],mst;
bool exist[];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&map[i][j]);
memset(exist,true,sizeof(exist));
memset(dis,0x3f,sizeof(dis));
dis[]=;
for(int i=;i<=n;i++)
{
int k=;
for(int j=;j<=n;j++)
if(exist[j]==true&&dis[j]<dis[k])
k=j;
exist[k]=false;
for(int j=;j<=n;j++)
{
if(exist[j]&&map[k][j]<dis[j])
dis[j]=map[k][j];
}
}
for(int i=;i<=n;i++)
mst+=dis[i];
printf("%d",mst);
return ;
}

拓扑:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define N 510
using namespace std;
int ru[N],map[N][N],n,m;
queue<int> q;
int main()
{
scanf("%d%d",&n,&m);
memset(ru,,sizeof(ru));
memset(map,,sizeof(map));
for(int x,y,i=;i<=n;i++)
{
scanf("%d%d",&x,&y);
map[x][y]=;
ru[y]++;
}
for(int i=;i<=n;i++)
if(ru[i]==)
q.push(i);
while(!q.empty())
{
int x=q.front();q.pop();
cout<<x<<' ';
for(int i=;i<=n;i++)
{
if(map[x][i]==)
ru[i]--;
if(ru[i]==)
q.push(i);
}
}
return ;
}

分解质因数:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<ctime>
using namespace std;
int n,ss[],a[],head;
bool ff[];
bool sss(int k)
{
bool yes=true;
for(int i=;i<k;i++)
if(k%i==)
yes=false;
if(yes==false)
{
ff[k]=;
return ;
}
else{
head++;
a[head]=k;
for(int i=;i*k<;i++)
ff[i*k]=;
return ;
}
}
void printff(int pp)
{
printf("%d=",n);
for(int i=;i<pp;i++)
{
printf("%d*",ss[i]);
}
printf("%d\n",ss[pp]);
} void dfs(int k,int m,int p)
{
for(int i=m;i<=head;i++)
if(k%a[i]==)
{
if(k/a[i]==)
{
ss[p]=a[i];printff(p);
exit();// 在搜索中卡时啥的比较有用,由搜索直接退出
}
else{
ss[p]=a[i];
dfs(k/a[i],i,p+);
}
}
}
int main()
{
for(int i=;i<=;i++)
if(ff[i]==)
sss(i);
scanf("%d",&n);
dfs(n,,);
return ;
}

// 其实这个题暴力枚举就好了

NOIP 前夕 模板整理的更多相关文章

  1. NOIP前模板整理

    图 最短路径 #include <queue> #define N 1000 typedef long long ll; using namespace std; int d[N], w[ ...

  2. 【数学】NOIP数论内容整理

    NOIP数论内容整理 注:特别感谢sdsy的zxy神仙以及lcez的tsr筮安帮助审稿 一.整除: 对于\(a,b~\in~Z\),若\(\exists~k~\in~Z\),\(s.t.~b~=~k~ ...

  3. Noip往年题目整理

    Noip往年题目整理 张炳琪 一.历年题目 按时间倒序排序 年份 T1知识点 T2知识点 T3知识点 得分 总体 2016day1 模拟 Lca,树上差分 期望dp 144 挺难的一套题目,偏思维难度 ...

  4. 字符串系列——KMP模板整理

    KMP模板整理 KMP与扩展KMP: /*vs 2017/ vs code以外编译器,去掉windows.h头文件和system("pause");*/ #include<i ...

  5. NOIp初赛题目整理

    NOIp初赛题目整理 这个 blog 用来整理扶苏准备第一轮 csp 时所做的与 csp 没 有 关 系 的历年 noip-J/S 初赛题目,记录了一些我从不知道的细碎知识点,还有一些憨憨题目,不定期 ...

  6. ACM算法模板整理

    史诗级ACM模板整理 基本语法 字符串函数 istream& getline (char* s, streamsize n ); istream& getline (char* s, ...

  7. NOIP模板整理计划

    先占个坑 [update]noip结束了,弃了 一.图论 1.单源最短路 洛谷P3371 (1)spfa 已加SLF优化 #include <iostream> #include < ...

  8. noip考前模板大整理

    //归并排序求逆序对 #include<bits/stdc++.h> #define ll long long using namespace std; ]; ll ans; ]; voi ...

  9. NOIP数学相关模板整理

    $O(n)$递推求逆元 #include<cstdio> #include<cstring> #include<algorithm> using namespace ...

随机推荐

  1. synchronized关键字修饰非静态方法与静态方法的区别

    这里我们先创建ObjLock类,并实现Runnable接口.并创建一个Demo类,具有被synchronized关键字修饰的非静态方法与静态方法. 非静态方法 public class ObjLock ...

  2. .net MVC下跨域Ajax请求(CORS)

    二.CROS (Cross-origin Resource Sharing) CROS相当于一种协议,由浏览器.服务端共同完成安全验证,进行安全的跨域资源共享.对于开发人员来说就跟在本站AJAX请求一 ...

  3. python_111_动态导入模块

    lib下aa.py文件内容: class C: def __init__(self): self.name='alex' from lib import aa#正常导入 print(aa.C) 动态导 ...

  4. CPP-基础:函数指针,指针函数,指针数组

    函数指针 函数指针是指向函数的指针变量. 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译时,每一个 ...

  5. 对Fiddler设置【Decrypt HTTPS traffic】后火狐浏览器打开https【您的连接并不安全】的解决方法

    火狐浏览器在打开https页面的时候出现[您的连接并不安全]的提示页面: 在设置Fiddler的HTTPS解密的时候,会对下面图中的红线框的选项点击一次生成一个Fiddler 根证书在桌面上: 点击火 ...

  6. Javaweb开发之路

    本文作者:DavidLin 欢迎转载,但请保留文章原始出处→_→ 本文地址:http://www.cnblogs.com/univeryinli/p/programming-skill-yinli.h ...

  7. proto_ops和proto区别

    **proto_ops:**该结构体包含了某个特定的"protocol family"的一系列functions. 其包含的functions和struct proto很类似,但是 ...

  8. Python中变量的命名与使用(个人总结)

    与众多编程语言一样,Python变量的命名有一定的规范: 变量名只能包含字母.数字.下划线且不能以数字开头.例如,num_1 为正确命名,而 1_num 则错误. 变量名不允许含空格,但是可以用下划线 ...

  9. 初识Pyhon之准备环境

    安装成功python的运行环境之后,你可能要迫不及待大展身手了 如果你有一定的语言基础,那么基础这一块儿就可以简单的看看就可以了,但是你是一个编程语言的初学者.不着急,慢慢往下看 打开pycharm创 ...

  10. 查看zookeeper管理的solrcloud配置文件

    进入zookeeper/bin目录下 连接zookeeper sh zkCli.sh -server localhost:2181 查看 ls /configs 结果如下 [zk: localhost ...