好像要1A模板题。完败

下面主要是一波SB错误总结

最小生成树(忘了sort(QwQ))

  1. // It is made by XZZ
  2. // Fei Fan Ya Xi Lie~~~
  3. #include<cstdio>
  4. #include<algorithm>
  5. using namespace std;
  6. #define il inline
  7. #define rg register
  8. #define vd void
  9. typedef long long ll;
  10. il int gi(){
  11. rg int x=0,f=1;rg char ch=getchar();
  12. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  13. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  14. return x*f;
  15. }
  16. struct frog{int a,b,c;}p[200001];
  17. il bool operator <(const frog&a,const frog&b){return a.c<b.c;}
  18. int fa[5001];
  19. il int hd(const int&a){return a==fa[a]?a:fa[a]=hd(fa[a]);}
  20. int main(){
  21. // freopen("3366.in","r",stdin);
  22. // freopen("3366.out","w",stdout);
  23. int n=gi(),m=gi()+1;
  24. for(rg int i=1;i<m;++i)p[i].a=gi(),p[i].b=gi(),p[i].c=gi();
  25. sort(p+1,p+m+1);
  26. for(rg int i=1;i<=n;++i)fa[i]=i;
  27. int orz=1;long long ans=0;
  28. for(rg int i=1;i<n;++i){
  29. while((orz^m)&&hd(p[orz].a)==hd(p[orz].b))++orz;
  30. if(orz==m){puts("orz");return 0;}
  31. fa[hd(p[orz].b)]=hd(p[orz].a);
  32. ans+=p[orz].c;
  33. }
  34. printf("%lld\n",ans);
  35. return 0;
  36. }

SB并查集(按秩合并应该不会卡)

  1. // It is made by XZZ
  2. // Fei Fan Ya Xi Lie~~~
  3. #include<cstdio>
  4. #include<algorithm>
  5. using namespace std;
  6. #define il inline
  7. #define rg register
  8. #define vd void
  9. typedef long long ll;
  10. il int gi(){
  11. rg int x=0,f=1;rg char ch=getchar();
  12. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  13. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  14. return x*f;
  15. }
  16. int fa[10001];
  17. il int hd(const int&a){return a==fa[a]?a:fa[a]=hd(fa[a]);}
  18. int main(){
  19. // freopen("3367.in","r",stdin);
  20. // freopen("3367.out","w",stdout);
  21. int n=gi(),m=gi(),opt,x,y;
  22. for(rg int i=1;i<=n;++i)fa[i]=i;
  23. while(m--){
  24. opt=gi(),x=gi(),y=gi();
  25. if(opt==1)fa[hd(x)]=hd(y);
  26. else printf("%c\n","NY"[hd(x)==hd(y)]);
  27. }
  28. return 0;
  29. }

字符串哈希

用set维护即可。防冲突用了pair,防T用了一个自然溢

  1. // It is made by XZZ
  2. // Fei Fan Ya Xi Lie~~~
  3. #include<cstdio>
  4. #include<algorithm>
  5. #include<set>
  6. #include<cstring>
  7. using namespace std;
  8. #define il inline
  9. #define rg register
  10. #define vd void
  11. typedef long long ll;
  12. il int gi(){
  13. rg int x=0,f=1;rg char ch=getchar();
  14. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  15. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  16. return x*f;
  17. }
  18. char str[233333];
  19. set<pair<long long,unsigned> >st;
  20. int main(){
  21. // freopen("3370.in","r",stdin);
  22. // freopen("3370.out","w",stdout);
  23. int n=gi(),ans=0,len;
  24. long long A,bs;unsigned B,BS;
  25. while(n--){
  26. scanf("%s",str+1),len=strlen(str+1);
  27. A=0,B=0;bs=BS=1;
  28. for(rg int i=1;i<=len;++i){
  29. A=(A+bs*str[i])%998244353;
  30. B+=BS*str[i];
  31. bs=bs*19260817%998244353;
  32. BS*=2333;
  33. }
  34. #ifdef xzz
  35. printf("%s %lld %u\n",str+1,A,B);
  36. #endif
  37. if(st.find(make_pair(A,B))==st.end())++ans,st.insert(make_pair(A,B));
  38. }
  39. printf("%d\n",ans);
  40. return 0;
  41. }

单源最短路

似乎是常数较小的spfa。dij懒得写了

  1. // It is made by XZZ
  2. // Fei Fan Ya Xi Lie~~~
  3. #include<cstdio>
  4. #include<algorithm>
  5. #include<set>
  6. #include<cstring>
  7. using namespace std;
  8. #define il inline
  9. #define rg register
  10. #define vd void
  11. typedef long long ll;
  12. il int gi(){
  13. rg int x=0,f=1;rg char ch=getchar();
  14. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  15. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  16. return x*f;
  17. }
  18. const int maxn=10001,maxm=500001;
  19. int fir[maxn],dis[maxm],nxt[maxm],w[maxm],id;
  20. il vd add(const int&a,const int&b,const int&c){nxt[++id]=fir[a],fir[a]=id,dis[id]=b,w[id]=c;}
  21. il vd SPFA(long long*dist,int S){
  22. static int que[maxn],hd,tl,x;
  23. static bool inque[maxn]={0};
  24. hd=tl=0;que[tl++]=S;inque[S]=1;
  25. dist[S]=0;
  26. while(hd^tl){
  27. x=que[hd];
  28. for(rg int i=fir[x];i;i=nxt[i])
  29. if(dist[dis[i]]>dist[x]+w[i]){
  30. dist[dis[i]]=dist[x]+w[i];
  31. if(!inque[dis[i]]){
  32. inque[dis[i]]=1;
  33. que[tl++]=dis[i];
  34. if(tl==maxn)tl=0;
  35. }
  36. }
  37. ++hd;if(hd==maxn)hd=0;
  38. inque[x]=0;
  39. }
  40. }
  41. int main(){
  42. // freopen("3371.in","r",stdin);
  43. // freopen("3371.out","w",stdout);
  44. int n=gi(),m=gi(),s=gi(),x,y,z;
  45. while(m--)x=gi(),y=gi(),z=gi(),add(x,y,z);
  46. static long long dist[maxn];
  47. for(rg int i=1;i<=n;++i)dist[i]=1e15;
  48. SPFA(dist,s);
  49. for(rg int i=1;i<=n;++i){
  50. if(dist[i]==1e15)dist[i]=2147483647;
  51. printf("%lld ",dist[i]);
  52. }
  53. return 0;
  54. }

缩点+DP

tarjan大家都会了吧。vector存新图

  1. // It is made by XZZ
  2. // Fei Fan Ya Xi Lie~~~
  3. #include<cstdio>
  4. #include<algorithm>
  5. #include<set>
  6. using namespace std;
  7. #define il inline
  8. #define rg register
  9. #define vd void
  10. typedef long long ll;
  11. il int gi(){
  12. rg int x=0,f=1;rg char ch=getchar();
  13. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  14. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  15. return x*f;
  16. }
  17. const int maxn=10001,maxm=100001;
  18. int fir[maxn],dis[maxm],nxt[maxm],id;
  19. il vd add(const int&a,const int&b){nxt[++id]=fir[a],fir[a]=id,dis[id]=b;}
  20. int w[maxn],W[maxn],fr[maxn],top;
  21. int dfn[maxn],low[maxn];
  22. set<int>T[maxn];
  23. int stk[maxn];bool instk[maxn];
  24. il vd tarjan(const int&x){
  25. dfn[x]=low[x]=++dfn[0];
  26. stk[++top]=x;instk[x]=1;
  27. for(int i=fir[x];i;i=nxt[i])
  28. if(!dfn[dis[i]])tarjan(dis[i]),low[x]=min(low[x],low[dis[i]]);
  29. else if(instk[dis[i]])low[x]=min(low[x],dfn[dis[i]]);
  30. if(low[x]==dfn[x]){
  31. do{
  32. instk[stk[top]]=0;
  33. fr[stk[top]]=fr[0];
  34. W[fr[0]]+=w[stk[top]];
  35. --top;
  36. }while(stk[top+1]^x);
  37. ++fr[0];
  38. }
  39. }
  40. ll f[maxn];
  41. il ll dp(int x){
  42. if(f[x])return f[x];
  43. f[x]=0;
  44. for(set<int>::iterator it=T[x].begin();it!=T[x].end();++it)
  45. f[x]=max(f[x],dp(*it));
  46. f[x]+=W[x];
  47. return f[x];
  48. }
  49. int main(){
  50. // freopen("3387.in","r",stdin);
  51. // freopen("3387.out","w",stdout);
  52. int n=gi()+1,m=gi(),u,v;
  53. for(rg int i=1;i<n;++i)w[i]=gi();
  54. while(m--)u=gi(),v=gi(),add(u,v);
  55. fr[0]=1;
  56. for(rg int i=1;i<n;++i)if(!dfn[i])tarjan(i);
  57. for(rg int i=1;i<n;++i)
  58. for(rg int j=fir[i];j;j=nxt[j])
  59. if(fr[i]^fr[dis[j]])T[fr[dis[j]]].insert(fr[i]);
  60. ll ans=0;
  61. for(rg int i=1;i<fr[0];++i)ans=max(ans,dp(i));
  62. printf("%lld\n",ans);
  63. return 0;
  64. }

ST表

SB错误犯几次,我还说这是我打的最熟的东西。QwQ

SB错误:预处理log时没想清

  1. for(rg int i=2;i<n;++i)
  2. if(1<<log[i-1]+1==i)log[i]=log[i-1]+1;
  3. else log[i]=log[i-1];

代码:

  1. // It is made by XZZ
  2. // Fei Fan Ya Xi Lie~~~
  3. #include<cstdio>
  4. #include<algorithm>
  5. using namespace std;
  6. #define il inline
  7. #define rg register
  8. #define vd void
  9. typedef long long ll;
  10. il int gi(){
  11. rg int x=0,f=1;rg char ch=getchar();
  12. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  13. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  14. return x*f;
  15. }
  16. int st[17][100001];
  17. int log[100001];
  18. int main(){
  19. // freopen("3865.in","r",stdin);
  20. // freopen("3865.out","w",stdout);
  21. int n=gi()+1,m=gi(),Log;
  22. for(rg int i=2;i<n;++i)
  23. if(1<<log[i-1]+1==i)log[i]=log[i-1]+1;
  24. else log[i]=log[i-1];
  25. for(rg int i=1;i<n;++i)st[0][i]=gi();
  26. Log=log[n-1]+1;
  27. for(rg int i=1;i<Log;++i)
  28. for(rg int j=n-(1<<i)+1;j;--j)
  29. st[i][j]=max(st[i-1][j],st[i-1][j+(1<<(i-1))]);
  30. int l,r,lg;
  31. while(m--){
  32. l=gi(),r=gi(),lg=log[r-l+1];
  33. printf("%d\n",max(st[lg][l],st[lg][r-(1<<lg)+1]));
  34. }
  35. return 0;
  36. }

LCA

这个不1A我真是SB了。

  1. // It is made by XZZ
  2. // Fei Fan Ya Xi Lie~~~
  3. #include<cstdio>
  4. #include<algorithm>
  5. #include<cmath>
  6. using namespace std;
  7. #define il inline
  8. #define rg register
  9. #define vd void
  10. typedef long long ll;
  11. il int gi(){
  12. rg int x=0,f=1;rg char ch=getchar();
  13. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  14. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  15. return x*f;
  16. }
  17. int st[19][500001],_log,n,m,rt;
  18. const int maxn=500001,maxm=1000001;
  19. int fir[maxn],dis[maxm],nxt[maxm],dep[maxn],id;
  20. il vd add(const int&a,const int&b){nxt[++id]=fir[a],fir[a]=id,dis[id]=b;}
  21. il vd dfs(const int&x){
  22. for(rg int i=fir[x];i;i=nxt[i])
  23. if(dis[i]^st[0][x])st[0][dis[i]]=x,dep[dis[i]]=dep[x]+1,dfs(dis[i]);
  24. }
  25. il int LCA(int a,int b){
  26. if(dep[a]<dep[b])swap(a,b);
  27. for(rg int i=_log;~i;--i)if(dep[st[i][a]]>dep[b])a=st[i][a];
  28. if(dep[a]^dep[b])a=st[0][a];
  29. for(rg int i=_log;~i;--i)if(st[i][a]^st[i][b])a=st[i][a],b=st[i][b];
  30. if(a^b)a=st[0][a];
  31. return a;
  32. }
  33. int main(){
  34. // freopen("lca.in","r",stdin);
  35. // freopen("lca.out","w",stdout);
  36. n=gi(),m=gi(),rt=gi();
  37. int u,v;
  38. for(rg int i=1;i<n;++i)u=gi(),v=gi(),add(u,v),add(v,u);
  39. _log=log2(n);
  40. dfs(rt);
  41. for(rg int i=1;i<=_log;++i)
  42. for(rg int j=1;j<=n;++j)
  43. st[i][j]=st[i-1][st[i-1][j]];
  44. while(m--)printf("%d\n",LCA(gi(),gi()));
  45. return 0;
  46. }

线性筛

才发现不会,来学一下。

大概是每个合数用最大的那个因子筛掉。

要加if(i%prime[j]==0)break剪枝。

总复习再看一轮吧(肯定理解不了辣 背背板子吧QwQ)

  1. // It is made by XZZ
  2. // Fei Fan Ya Xi Lie~~~
  3. #include<cstdio>
  4. #include<algorithm>
  5. using namespace std;
  6. #define il inline
  7. #define rg register
  8. #define vd void
  9. typedef long long ll;
  10. il int gi(){
  11. rg int x=0,f=1;rg char ch=getchar();
  12. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  13. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  14. return x*f;
  15. }
  16. bool yes[10000001];
  17. int prime[2333333];
  18. const char out[][233]={"Yes","No"};
  19. int main(){
  20. // freopen("3383.in","r",stdin);
  21. // freopen("3383.out","w",stdout);
  22. int n=gi()+1,m=gi();
  23. yes[0]=yes[1]=1;
  24. prime[0]=1;
  25. for(rg int i=2;i<n;++i){
  26. if(yes[i]==0)prime[prime[0]++]=i;
  27. for(rg int j=1;j<prime[0]&&i*prime[j]<n;++j){
  28. yes[i*prime[j]]=1;
  29. if(i/prime[j]*prime[j]==i)break;
  30. }
  31. }
  32. while(m--)puts(out[yes[gi()]]);
  33. return 0;
  34. }

割点

洛谷数据有bug,用的城市的备用交换机

  1. // It is made by XZZ
  2. // Fei Fan Ya Xi Lie~~~
  3. #include<cstdio>
  4. #include<algorithm>
  5. using namespace std;
  6. #define il inline
  7. #define rg register
  8. #define vd void
  9. typedef long long ll;
  10. il int gi(){
  11. rg int x=0,f=1;rg char ch=getchar();
  12. while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
  13. while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
  14. return x*f;
  15. }
  16. const int maxn=100010,maxm=maxn<<1;
  17. int fir[maxn],nxt[maxm],dis[maxm],id;
  18. il vd add(const int&a,const int&b){nxt[++id]=fir[a],fir[a]=id,dis[id]=b;}
  19. bool yes[maxn];
  20. int dfn[maxn],low[maxn];
  21. int cnt=0;
  22. il vd tarjan(const int&x){
  23. dfn[x]=low[x]=++dfn[0];
  24. for(int i=fir[x];i;i=nxt[i])
  25. if(!dfn[dis[i]]){
  26. tarjan(dis[i]),low[x]=min(low[x],low[dis[i]]);
  27. if(low[dis[i]]>=dfn[x]){
  28. if(x==1)++cnt;
  29. else yes[x]=1;
  30. }
  31. }
  32. else low[x]=min(low[x],dfn[dis[i]]);
  33. if(x==1)yes[x]=cnt>1;
  34. }
  35. int main(){
  36. // freopen("3388.in","r",stdin);
  37. // freopen("3388.out","w",stdout);
  38. int n=gi(),u,v;
  39. while(scanf("%d%d",&u,&v)==2)add(u,v),add(v,u);
  40. tarjan(1);
  41. int tot=0;
  42. for(rg int i=1;i<=n;++i)if(yes[i])++tot;
  43. printf("%d\n",tot);
  44. for(rg int i=1;i<=n;++i)if(yes[i])printf("%d\n",i);
  45. return 0;
  46. }

11.7 NOIP总复习总结的更多相关文章

  1. NOIp知识点复习——最短路计数

    $Mingqi\_H$ NOIp 2017考挂了...gg 重新开始好了. 计划明年2月24号前复习完所有的NOIp知识点(毕竟很不熟练啊),之后到七月底前学习完省选的东西(flag?). 从现在开始 ...

  2. EF6 在原有数据库中使用 CodeFirst 总复习(三、重建迁移)

    本来原来学的时候,挺顺利的,没想到再次使用,还是遇到很多问题,导致更新失败,所以,只能重建迁移,免得看着乱乱的. 一.删除迁移,将数据恢复到(一)结束状态 1.删除文件夹 2.删除表 3.删除列 4. ...

  3. EF6 在原有数据库中使用 CodeFirst 总复习(五、生成发帖页面)

    有点与在原有数据库中使用 CodeFirst 远了,不过是总复习吗,总得全面点. 一.在用户表(Users)中插入两个用户 二.生成发帖界面 MVC生成的界面很多,也没使用Ajax,实际开发中很少会使 ...

  4. DAY25、面向对象总复习

    面向对象总复习:面向过程编程思想: 核心是 过程 二字, 过程指的是解决问题的步骤是,即先干什么再干什么. 基于该编程思想编写程序,相当于一条流水线,一种机械式的思维方式. 面向对象编程思想: 核心是 ...

  5. 11.7 NOIP模拟赛

    目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...

  6. python 学习第二周总复习

    目录 数据类型内置方法 数字类型内置方法 整型 浮点型 字符串类型内置方法 列表类型内置方法 元祖类型内置方法 字典类型内置方法 集合类型内置方法 布尔类型 数据类型总结 拷贝 浅拷贝 深拷贝 053 ...

  7. 11/1 NOIP 模拟赛

    11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #in ...

  8. NOIP专题复习1 图论-最短路

    一.知识概述 今天我们要复习的内容是图论中的最短路算法,我们在这里讲3种最短路求法,分别是:floyd,dijkstra,spfa. 那么我们从几道例题来切入今天讲解的算法. 二.典型例题 1.热浪 ...

  9. noip初赛复习总纲

    初赛复习总纲 目录 初赛复习总纲 计算机发展史 计算机的分类 计算机的应用 操作系统盘点 计算机的基本结构 中央处理器(**CPU**--**Central Processing Unit**) 存储 ...

随机推荐

  1. 水晶报表自定义纸张大小打印 (Crystal Report Print with custom paper size)

    System.Drawing.Printing.PrintDocument doc = new PrintDocument(); doc.PrinterSettings.PrinterName = & ...

  2. Linux ntpdate命令详解

    ntpdate命令用于同步更新互联网时间,或者NTP服务器时间 NTP服务器[Network Time Protocol(NTP)]是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源 ...

  3. HTML-head头部浅析

    HTML结构 在sublime或HBuildr新建HTML文件,输入html:5,按下tab键后,自动生成的代码大致如下: <!DOCTYPE html> <html lang=&q ...

  4. October 07th 2017 Week 40th Saturday

    Knowledge is a treasure but practice is the key to it. 知识是宝藏,但实践才是打开它的钥匙. Experience often comes fro ...

  5. SDN 第一次作业

    你会选择作 网络编程 方向的程序员吗?为什么? 答: 可能会选择吧.看了那篇文章感觉网络编程的程序员和其他的程序员都并不简单,网络编程的程序员可能更要对网络的知识更加了解.我现在也有机会能接触网络方向 ...

  6. Notepad++调用python

    ***首先确保在cmd下能直接运行python*** (博主的环境:win10 下2和3共存) 接下来进入主题,用Notepad++打开py文件,然后按 F5 键弹出运行窗口,输入以下内容: pyth ...

  7. HTML、jsp页面中radio,checkbox,select数据回显功能,默认被选中问题

    最近常常遇到各种复选框.单选框.下拉框的默认被选中的问题,开始也是绞尽脑汁的想办法,今天写一篇学习总结的博文来写一下学习总结. 单选框(radio)默认被选中: 一.jstl技术进行回显 <in ...

  8. EclEmma安装与使用

    安装 EclEmma 插件的过程和大部分 Eclipse 插件相同,我们既可以通过 Eclipse 标准的 Update 机制来远程安装 EclEmma 插件(图 1),也可以从站点(参阅参考资源)下 ...

  9. C++编译器符号表有哪些内容?

    http://blog.csdn.net/wangbingcsu/article/details/48340479 C++编译器符号表有哪些内容? 很早就想写一篇关于符号表的学习小结,可是迟迟不能下笔 ...

  10. oracle 禁用/启动job

    注意:dbms_job只能在job的所在用户使用,如果broken其它用户的job用dbms_ijob dbms_job只能在当期用户内创建job.修改和删除job,不能对其他用户的job进行操作;s ...