一点总结-关于debug比赛
上午的题目是:
1. main里面定义的变量必须手动初始化,使用memset或者其他,函数外或者函数内,会进行初始化为0.
2. 最长回文子串的马拉车manacher算法,不会写!
3. 数字三角形dp,水题。
4. x + y = z,注意判断长度,使用dp,dfs也可以,这是2个字符,还有一个长字符串是否由几个字符串组成。
5. maximize rectangle,最大矩形,使用stack优化,或者左边,右边,预处理,最后再扫一遍处理。
6. 多字符串匹配,trie树,我实在没见过这样的写法, c语言的写法,真是看的是不舒服。
上午真做的水,感觉还是hack练得少,需要在cf上多多联系hack。
下面复习一下kmp算法和manacher算法。
kmp 一些点,不注意,很容易出错。
这个题目,使用kmp,https://leetcode.com/problems/repeated-substring-pattern/
题解在这里 http://bookshadow.com/weblog/2016/11/13/leetcode-repeated-substring-pattern/
vector<int> p;
void getnext(string s) {
int n = s.size();
p.clear();
p.resize(n);
for (int i = ; i < n; i++) {
int k = p[i - ];
while(k && s[k] != s[i])
k = p[k - ];
if(s[k] == s[i]) k++;
p[i] = k;
}
}
void match(string o, string s) {
getnext(s);
for (int x : p)
cout << x << " ";
cout << endl;
int j = ;
for (int i = ; i < o.size(); i++) {
while(j && o[i] != s[j])
j = p[j - ];
if(o[i] == s[j]) j++;
if(j == s.size()) {
cout << i - (int)s.size() + << endl;
j = p[j - ];
}
}
}
manacher 注意最后下边和长度的理解,感觉某一点不注意,就出错了。
string manacher(string s) {
string t = "#";
for (auto x : s) {
t = t + x + "#";
}
//cout << t << endl;
int n = t.size();
vector<int> dp(n, );
int id = , mx = ;
int res = ;
for (int i = ; i < n; i++) {
if(i < mx)
dp[i] = min(dp[id * - i], mx - i);
else dp[i] = ;
int left = i - dp[i], right = i + dp[i];
while(left >= && right < n && t[left] == t[right]) {
dp[i]++; left--; right++;
}
if(mx < i + dp[i]) {
id = i;
mx = i + dp[i];
}
if(dp[i] > dp[res])
res = i;
}
for (int i = ; i < n; i++)
cout << dp[i] << " ";
cout << endl;
return s.substr(res / - (dp[res] - ) / , dp[res] - );
}
一点总结-关于debug比赛的更多相关文章
- NOIP2017普及组比赛总结
期中考总结&NOIP2017总结 2017年11月11日,我第二次参加NOIP普及组复赛.上一年,我的得分是250分,只拿到了二等奖.我便把目标定为拿到一等奖,考到300分以上. 早上8点多, ...
- 从零开始山寨Caffe·零:必先利其器
工作环境 巧妇有了米炊 众所周知,Caffe是在Linux下写的,所以长久以来,大家都认为跑Caffe,先装Linux. niuzhiheng大神发起了caffe-windows项目(解决了一些编译. ...
- Visual Studio调试之断点进阶篇
Visual Studio调试之断点进阶篇 在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常.程序中 ...
- Windows Phone开发(43):推送通知第一集——Toast推送
原文:Windows Phone开发(43):推送通知第一集--Toast推送 好像有好几天没更新了,抱歉抱歉,最近"光荣"地失业,先是忙于寻找新去处,唉,暂时没有下文.而后又有一 ...
- Gradle入门学习---认识buildeTypes和dependencies
Gradle是Android Studio默认的构建工具,如果是基本的APP开发,不会涉及到Gradle太多内容,毕竟它的诞生就不是专为Android服务的. 日常开发需要涉及到使用Gradle的场景 ...
- CSS 变量教程
一.变量的声明 声明变量的时候,变量名前面要加两根连词线(--). body { --foo: #7F583F; --bar: #F7EFD2; } 上面代码中,body选择器里面声明了两个变量:-- ...
- wp推送消息笔记
最近想给应用添加推送消息,主要是toast消息,所以就打算去了解一下wp消息推送机制以及实现方法,过程中,查了许多资料,也遇到过一些问题,做完后,自己就做个小笔记,总结一下,好记性不如烂笔头嘛,以后可 ...
- 原生css 中变量的使用
前两天看到阮大神的一篇在css中使用变量的文章,整理了一下. 这个重要的 CSS 新功能,所有主要浏览器已经都支持了.本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大. 一.变量的声明 ...
- 『SpringMVC』<context:include-filter>&<context:exclude-filter>爬坑
原文地址:https://segmentfault.com/a/1190000012972619 大家好,我是猪弟,猪在我心中从来不是蠢的代名词,而是懒的代名词,本次准备记录一个在开发测试过程中遇到的 ...
随机推荐
- Memcached概述
Memcached Memcached是一套分布式的内存对象缓存系统,使用C语言编写,作为数据库的前端cache,缓存数据库查询结果能够减轻数据库负载. 类似一张巨大的hash表,缓存的对象以key- ...
- Eclipse启动Tomcat时,45秒超时解决方案
在Eclipse中启动Tomcatserver时,常常因为系统初始化项目多,导致出现45秒超时的Tomcatserver启动错误,出现以下的错误. 曾经我们一般通过找到XML配置文件,将相应Timeo ...
- oracle 有用站点
使用oradebug修改数据库scn – 提供专业ORACLE技术咨询和支持@Phone13429648788 - 惜分飞 Solaris上使用DTrace进行动态跟踪 老熊的三分地-Oracle及数 ...
- careercup-高等难度 18.6
18.6 设计一个算法,给定10亿个数字,找出最小的100万个数字.假定计算机内存足以容纳全部10亿个数字. 解法: 方法1:排序 按升序排序所有的元素,然后取出前100万个数,时间复杂度为O(nlo ...
- 认清Linux中标准输入和标准输出的双重含义
按照惯例,UNIX系统shell使用文件描述符0与进程的标准输入(一般是键盘)相关联,文件描述符1与标准输出(一般是显示器)相关联,文件描述符2与标准出错输出(一般是显示器)相关联. 在依从POSIX ...
- C#中String和string有什么区别
在C#中,string 是 System.String 的别名,所以基本上在使用时是没有差别的. 习惯上,我们把字符串当作对象时(有值的对象实体),我们用string.而我们把它当类时(需要字符串类中 ...
- Linux 命令 alternatives和update-alternatives
参考: http://lionbule.iteye.com/blog/717722 http://manpages.ubuntu.com/manpages/oneiric/man8/update-al ...
- HttpSolrServer-采用静态工厂方法,创建HttpSolrServer单实例
HttpSolrServer线程安全,如果使用下面构造器,必须对所有的请求重用相同的实例.如果实例在运行中创建的,它可能会导致连接泄漏.推荐的做法就是保持每个solr服务url的HttpSolrSer ...
- Java快速入门
Java 是什么? Java 的特点: 面向对象 平台无关(跨平台): 简单 安全 体系结构 - 中性 可移植 健壮 多线程 解释型 高性能 分布式 动态 Java环境设置: Java SE可免费提供 ...
- Ubuntu快速显示桌面的方法
在Ubuntu环境下,按下Ctrl+D就能最小化所有窗口,立刻显示桌面,类似xp下的显示桌面按钮功能.不过这是需要经过快捷键设置的.以下是设置方法: 1.找到"系统设置" 2.进入 ...