2019.7.25

T1.匹配

  一看就是KMP的嘛,但是忘了。

    啊,要背模板的啦!

     啊?!暴力72分?!?!?!       Get!

     正解就是一般的KMP,把a串与b串接起来(之间加一点乱七八糟),然后get_next;

    没了。

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 #define RE register
 4 using namespace std;
 5 inline int R(){
 6     RE char c=getchar();int x=0,t=1;
 7     while(c<'0'||c>'9'){if(c=='-') t=-1;c=getchar();}
 8     while(c>='0'&&c<='9') {x=(x<<3)+(x<<1)+c-'0';c=getchar();}
 9     return x*t;
10 }
11 const int maxn=5000010;
12 int la,lb,lc;
13 char a[maxn],b[maxn],c[maxn],d;
14 int nxt[maxn];
15 void get_nxt(){
16     int p=0;nxt[1]=0;
17     for(int i=2;i<=lc;i++){
18         while(p&&c[p+1]!=c[i]) p=nxt[p];
19         if(c[p+1]==c[i]) p++;
20         nxt[i]=p;
21     }
22 }
23 int main (){
24 //        freopen("in1.txt","r",stdin);
25     int t;
26     t=R();
27     while(t--){
28         la=R(),lb=R();
29         scanf("%s",a+1);
30         cin>>d;
31         for(int i=1;i<=lb;i++)
32             b[i]=a[i];
33         b[++lb]=d;
34         for(int i=1;i<=la;i++) c[i]=a[i];
35         lc=la;
36         c[++lc]='~';
37         c[++lc]='!';
38         for(int i=1;i<=lb;i++) c[i+lc]=b[i];
39         lc+=lb;
40         get_nxt();
41         printf("%d\n",nxt[lc]);
42     }
43     return 0;
44 }
View Code        

T2.回家

  考场:一看就是tarjan跑点双缩点,再干.......(dfs或拓扑或最短路或lca),但终究码力不行,码一半放弃了。

  正解:就是这样的,缩点后建成圆方树,再跑dfs压栈

         某大佬提出:缩点后建树,再跑O(n)的lca(只记录父亲)。可行

         又有大佬提出:跑最短路,边双缩点,据说不对,90分。

       论加强码力的重要性。。。

      等等!要开八倍空间!!!!!!!!!!!

         圆方树开二倍,无向边开二倍,然后边开4倍,点开2倍。

 

  1 #include<bits/stdc++.h>
  2 #define ll long long
  3 #define RE register
  4 using namespace std;
  5 const int N=2e5+100;
  6 const int maxn=N*2;
  7 const int maxm=N*4;
  8 inline int R(){
  9     RE char b=getchar();int x=0,t=1;
 10     while(b<'0'||b>'9'){if(b=='-') t=-1;b=getchar();}
 11     while(b>='0'&&b<='9') {x=(x<<3)+(x<<1)+b-'0';b=getchar();}
 12     return x*t;
 13 }
 14 int n,m;
 15 struct Edge{
 16     int f,nxt,to;
 17 }ed[maxm],edg[maxm];
 18 int head[maxn],ecnt;
 19 void addedge(int f,int to){
 20     ed[++ecnt].f=f;
 21     ed[ecnt].to=to;
 22     ed[ecnt].nxt=head[f];
 23     head[f]=ecnt;
 24 }
 25 int headg[maxn],egcnt;
 26 void add(int f,int to){
 27     edg[++egcnt].f=f;
 28     edg[egcnt].to=to;
 29     edg[egcnt].nxt=headg[f];
 30     headg[f]=egcnt;
 31 }
 32 void input_(){
 33     n=R(),m=R();
 34     for(int i=1,a,b;i<=m;i++){
 35         a=R(),b=R();
 36         if(a==b) continue;
 37         addedge(a,b);
 38         addedge(b,a);
 39     }
 40 }
 41 int sta[maxn],tp,root;
 42 int dfn[maxn],low[maxn],num;
 43 bool vis[maxn],cut[maxn];
 44 
 45 int dcc_num;
 46 vector<int> dcc[maxn];
 47 void tarjan(int x){
 48     sta[++tp]=x;
 49     int flag=0;
 50     dfn[x]=low[x]=++num;
 51     for(int i=head[x];i;i=ed[i].nxt){
 52         int v=ed[i].to;
 53         if(!dfn[v]) {
 54             tarjan(v);
 55             low[x]=min(low[x],low[v]);
 56             if(low[v]>=dfn[x]){
 57                 flag++;
 58                 if(root!=x||flag>1) cut[x]=1;
 59                 int temp;
 60                 dcc_num++;
 61                 do{
 62                     temp=sta[tp--];
 63                     dcc[dcc_num].push_back(temp);
 64                 }while(temp!=v);
 65                 dcc[dcc_num].push_back(x);
 66             }
 67         }
 68         else  low[x]=min(low[x],dfn[v]);
 69     }
 70 }
 71 
 72 int pos[maxn],biao[maxn];
 73 void work_(){
 74     num=dcc_num;
 75     for(int i=1;i<=n;i++)
 76         if(cut[i]) pos[i]=++num,biao[num]=i;
 77     for(int i=1;i<=dcc_num;i++){
 78         for(int j=0;j<dcc[i].size();j++){
 79             if(cut[dcc[i][j]]) add(i,pos[dcc[i][j]]),add(pos[dcc[i][j]],i);
 80             else pos[dcc[i][j]]=i;
 81         }
 82         dcc[i].clear();
 83     }
 84 }
 85 
 86 bool ok=0;
 87 void dfs(int x) {
 88     vis[x]=1;
 89     if(x==pos[n]) {ok=1;return ;}
 90     if(ok) return ;
 91     for(int i=headg[x];i;i=edg[i].nxt){
 92         int v=edg[i].to;
 93         if(vis[v]) continue;
 94         if(biao[v]) sta[++tp]=biao[v];
 95         dfs(v);
 96         if(biao[v]&&!ok) tp--;
 97         if(ok) return ;
 98     }
 99     return ;
100 }
101 void clear_(){
102     memset(ed,0,sizeof ed);
103     memset(edg,0,sizeof edg);
104     tp=0,ecnt=egcnt=num=0,ok=dcc_num=0;
105     memset(cut,0,sizeof cut);
106     memset(dfn,0,sizeof dfn);
107     memset(low,0,sizeof low);
108     memset(head,0,sizeof head);
109     memset(headg,0,sizeof headg);
110     memset(pos,0,sizeof pos);
111     memset(biao,0,sizeof biao);
112 }
113 int main(){
114 //    freopen("in_B.txt","r",stdin);
115     int t=R();
116     while(t--){
117         clear_();
118         input_();
119         root=1,tarjan(1);//dian shuang
120 //    for(int i=1;i<=dcc_num;i++){
121 //            for(int j=0;j<dcc[i].size();j++)
122 //                printf("%d ",dcc[i][j]);
123 //            puts("");
124 //        }
125 //        for(int i=1;i<=n;i++) if(cut[i]) cout<<i<<" ";
126 //        puts("");
127 //        puts("");
128             
129         work_();
130         tp=0;
131         memset(vis,0,sizeof vis);
132         dfs(pos[1]);
133         memset(vis,0,sizeof vis);
134         int ans=0;
135         while(tp){
136             int tmp=sta[tp--];
137             if(!vis[tmp]&&tmp!=1&&tmp!=n){
138                 ans++;vis[tmp]=1;
139             }
140         }
141         printf("%d\n",ans);
142         for(int i=1;i<=n;i++) if(vis[i]) printf("%d ",i);
143         puts("");
144     }
145     return 0;
146 }
View Code

 

 

 

T3.寿司

  不会,先搁着吧。

转载于:https://www.cnblogs.com/sdfzjdx/p/11244648.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的笔记本的鼠标又乱跑了!寻求帮助!

我打算做个纪录&#xff0c;看看究竟是什么幽灵。 2005/3/3 19点左右。 2005/3/15 19点左右 在家 2005/3/25 20:30左右 在家 05/04/01 19:40 在家 哪位网友遇到类似问题吗&#xff1f;有何高招&#xff1f;

帮你免于失业的十大软件技术!

能跟上关键技术的发展&#xff0c;是你在就业市场和未来保持优势的最佳手段。你对我们列出的十门技术精通吗&#xff1f;哪怕是大略精通&#xff1f; 我不知道你的具体工作是什么。如果你是某冷门领域的专家而变得不可或缺&#xff0c;或者你们的公司十分稳固&#xff0c;以你…

gentoo安装记录[20050216]

原作者: * 20050216: 我明天 (17 号) 要去武汉陪 gf 几天, 顺便找找工作 (如果你有武汉的工作信息, 记得一定给我发信或者直接联系我! 非常非常感谢先!!), 可能有几天上不来了, 所以赶紧把这帖子搞定啦! 大家有啥想法/意见的就跟帖提, 我回来改 * 20050215: 完成内核安装/内核…

centos 6.2安装mysql_CentOS 6.2下安装MySQL_服务器知识学堂-中关村在线

2.开始安装MySQL5首先我们应该先用下面的命令安装MySQL&#xff1a;yum install mysql mysql-server然后我们需要创建MySQL系统的启动键链接启动MySQL服务器&#xff0c;这样以便于MySQL在系统启动时自动启动chkconfig --levels 235 mysqld on/etc/init.d/mysqld start为MySQL …

注册Windows Phone Marketplace经验

简介 经过漫长漫长的等待以后&#xff0c;终于注册成功Windows Phone Marketplace&#xff0c;把经验分享一下。 登记注册 打开https://windowsphone.create.msdn.com/Register/ &#xff0c;使用live id&#xff08;msn id&#xff09;登陆&#xff0c;然后按照向导一步步注册…

Java Apple_GitHub - izhaorui/AppleLogin-java: 苹果登录 Sign in with Apple 服务端校验

APP端苹果登录java后端校验主要校验苹果授权登录token 是否正确主要方法public RSAPublicKeySpec build(final String n, final String e) {final BigInteger modulus new BigInteger(1, Base64.decodeBase64(n));final BigInteger publicExponent new BigInteger(1, Base64.…

微软中文网,越办越好了!

哎呀&#xff01;这几天研究多了些微软中文网站&#xff0c;发现越来越多有用的东西了&#xff0c;中文网站真是越来越好了&#xff0c;不光是微软的技术&#xff0c;很多企业级的开发相关的很多有用的资料&#xff0c;而且无论是翻译还是我们可爱的MVP们文字表述的都非常的到位…

iOS应用日志:开始编写日志组件与异常日志

经营你的iOS应用日志&#xff08;一&#xff09;&#xff1a;开始编写日志组件 对于那些做后端开发的工程师来说&#xff0c;看LOG解Bug应该是理所当然的事&#xff0c;但我接触到的移动应用开发的工程师里面&#xff0c;很多人并没有这个意识&#xff0c;查Bug时总是一遍一遍的…

java程序cpu突然飚高_Java 定位导致CPU飙升的代码过程

线上的一个日志实时输出的程序曾经出过这样一个问题&#xff0c;刚开始上线java程序占用的CPU的资源很少,但是到了整点的时候,CPU直线飙高&#xff0c;直接到达100%根本没有要下降的趋势&#xff0c;唯一的方法只能杀掉它了&#xff0c;后面在借助jstack与top排查到线程然后定位…

如何在 Web 发布规则中使用证书进行 SSL 身份验证

概要 本文介绍如何设置 Internet Security and Acceleration (ISA) Server 2000 来发布需要客户端使用证书进行身份验证的 Web 站点。对于使用基于证书的身份验证作为建立安全套接字层连接的唯一方法的 Web 站点&#xff0c;这是必需的。在 ISA Server 的 Web 发布规则中指定证…

java代码情书_程序员们的爱情表白书

下面看看我们程序员是如何用自己的语言说出爱你。就算闷呆&#xff0c;也要闷呆得很性感。java程序员的情书我能抽象出整个世界&#xff0e;&#xff0e;&#xff0e;但是我不能抽象出你&#xff0e;&#xff0e;&#xff0e;因为你在我心中是那么的具体&#xff0e;&#xff0…

motorola 企业移动解决方案

&#xff08;一&#xff09;moto数据采集解决方案 数据采集和查询&#xff0c;可随时随地记录并传输各种形式的数据 安全便捷接入企业数据库&#xff0c;实现数据前后台无缝整合 终端小巧&#xff0c;方便携带&#xff1b;快速、低成本的实现高效移动远程管理 &#xff08;二&a…

使用乱序标签来控制HTML的输出效果

在HTML的元素中&#xff0c;有一个比较特殊的元素form。我们用它来收集表单数据并提交给服务器&#xff0c;并且理论上说来它是没有任何的UI被呈现的。当然如果我们在body元素后紧跟一个form&#xff0c;这样一来似乎看不出来有什么UI呈现的问题&#xff0c;可是当form存在于别…

百度地图离线sdk java_百度地图SDK java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK...

错误信息java.lang.UnsatisfiedLinkError: Couldn‘t load BaiduMapSDK_v3_2_0_15 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.baidudemo-1.apk"],nativeLibraryDirectories[/data/app-lib/com.example.baidudemo-1, …

杭电2019多校第一场,Problem I,String 2019

题目描述 Tom has a string containing only lowercase letters. He wants to choose a subsequence of the string whose length is k and lexicographical order is the smallest. Its simple and he solved it with ease.But Jerry, who likes to play with Tom, tells him …

2024年最新Python爬虫入门『最强教程』新鲜出炉!

近年来&#xff0c;大数据成为业界与学术界最火热的话题之一&#xff0c;数据已经成为每个公司极为重要的资产。互联网大量的公开数据为个人和公司提供了以往想象不到的可以获取的数据量。而掌握网络爬虫技术可以帮助你获取这些有用的公开数据集。 爬虫能干什么呢&#xff1f;一…

如何使编译的EXE程序能多个运行?

如何使编译的EXE程序能多个运行?方法很简单,把这句话加到EXE对应的INI文件中去allowmultipleinstancesTrue不错吧!:)转载于:https://www.cnblogs.com/Qia_sky/archive/2005/05/18/158119.html

java实现多对多关系的方法_Hibernate一对多关联双向关联代码实现分享

1、创建实体类(Customer.java、Orders.java)package wck.stu.vo.oneToMany_single;import java.util.HashSet;import java.util.Set;public class Customer {private String id "";private String cName "";private String bank "";private S…

使用LUA构建页面

Android&#xff0c;LUA&#xff0c;CoronaCard 使用CoronaCard引擎构建页面&#xff0c;只需要嵌入CoronaView&#xff0c;就可以构建灵活多样的页面。 微游手柄游戏厅 4.0版本&#xff0c;全面改版&#xff0c;使用LUA语言&#xff0c;通过CoronaCard引擎构建。 一 界面效果&…

C#实现Singleton (转载)

您要在 C# 中构建应用程序。您需要只有一个实例的类&#xff0c;并且需要提供一个用于访问实例的全局访问点。您希望确保您的解决方案高效&#xff0c;并且能够利用 Microsoft? .NET 公共语言运行库功能。您可能还希望确保解决方案是线程安全的。 实现策略 尽管 Singleton 是一…