一点总结-关于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 大家好,我是猪弟,猪在我心中从来不是蠢的代名词,而是懒的代名词,本次准备记录一个在开发测试过程中遇到的 ...
随机推荐
- MySQL 5.7 深度解析: JSON数据类型使用
http://www.actionsky.com/docs/archives/156 2015年12月25日 杨涛涛 JSON (JavaScriptObject Notation) 是一种轻量级 ...
- Servlet 3.0 新特性
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发 ...
- 《嵌入式Linux基础教程》补充阅读建议电子数目下载
第二章 <Linux内核设计与实现(原书第三版)> <深入理解Linux内核(第三版)> <深入理解Linux虚拟内存管理> 其他与Linux相关的电子书下载地址: ...
- 关于测试Windows电脑端口的命令 —— telnet用法
telnet服务在win7默认是打开的,如果没有打开要在电脑中打开. 命令格式:telnet ip port 例如:telnet 127.0.0.1 80 或者 telnet www.XXX.com ...
- Tfs服务器迁移(更改IP)后客户端(vs2013)配置方法
一.前言 公司开发项目需要进驻客户现场,局域网中的tfs代码服务器有时会有修改ip的情况发生.服务器ip修改后在vs2013中更改服务器ip地址非常麻烦,有些时候需要将代码重新进行映射.多次试验后将可 ...
- python3.x爬取美团信息
在之前的文章中,笔者有提到,我们要在实践中去学习python,笔者有天就想着要不要爬点东西呢,跃跃欲试的节奏啊,想来想去,想到美团了,那么首先笔 者想给自己确定一个目标,就是我要爬什么样的数据,我要爬 ...
- Xutils3的使用
Xutils是前两年很火的一个三方库(githup地址),是一个工具类,分为4个模块:DbUtils.HttpUtils.ViewUtils. BitmapUtils,还有一个非常使用功能就是LogU ...
- iOS retain、strong、weak、assign
iOS retain.strong.weak.assign strong与weak是由ARC新引入的对象变量属性xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和a ...
- 自定义 404 与 500 错误页面,URL 地址不会重定向(二)
上一篇是使用了全局过虑器来实现,还可以使用 HttpApplication 来处理. 参考文章: http://www.cnblogs.com/dudu/p/aspnet_custom_error.h ...
- iOS 中的加密方式
iOS 中的加密方式 1 加密方式主要有: Base64,MD5,RSA,DES,AES,钥匙串存储,Cookie 2 各加密方式的比较 2.1 Base64 2.1.1 基本原理:采用64个基本的 ...