一点总结-关于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 大家好,我是猪弟,猪在我心中从来不是蠢的代名词,而是懒的代名词,本次准备记录一个在开发测试过程中遇到的 ...
随机推荐
- 依赖注入框架Autofac的简单使用
http://www.cnblogs.com/liping13599168/archive/2011/07/16/2108209.html Autofac是一款IOC框架,比较于其他的IOC框架,如S ...
- BigPipe
BigPipe是一个重新设计的基础动态网页服务体系.大体思路是,分解网页成叫做Pagelets的小块,然后通过Web服务器和浏览器建立管道并管理他们在不同阶段的运行.这是类似于大多数现代微处理器的流水 ...
- 使用mysqladmin ext 了解MySQL运行状态 转
https://yq.aliyun.com/articles/11210?spm=0.0.0.0.HpobXF 1. 使用-r/-i参数 使用mysqladmin extended-status命令可 ...
- error C2440:“类型转换":无法从“void (__thiscall Play1::* )(int *)”转换为“cocos2d::SEL_CallFucN
转自:http://zhidao.baidu.com/link?url=VfSSkA0xfTVwNKaKh4tqW_sXlcsK-Rb16nEtQw5zaq5_306lnwJN3Kdb-rFp-r4L ...
- Android精品课程—PullToRefresh 下拉刷新
http://edu.csdn.net/course/detail/1716 TableLayout http://edu.csdn.net/course/detail/2262 Android开发之 ...
- set与hash_set
原文:http://blog.csdn.net/morewindows/article/details/7029587 STL系列之六 set与hash_set set和hash_set是STL中比较 ...
- 微软发布屏蔽Win10升级的官方办法
微软发布屏蔽Win10升级的官方办法 导读 微软似乎从来就没有像现在这么焦燥过,当然了,攸关生死,他要还是能"蛋"定得住,那才真叫怪了.你看,为了推广Windows 10,一向傲娇 ...
- memcached缓存批量更新解决方案探讨
众所周知,Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. 俺所在的公司经营的主要是基于web和wap两个平台的手机游戏门户网站,分布式缓存解决方法正好有 ...
- Linux 命令 alternatives和update-alternatives
参考: http://lionbule.iteye.com/blog/717722 http://manpages.ubuntu.com/manpages/oneiric/man8/update-al ...
- Android学习笔记⑦——UI组件的学习AdapterView相关1
AdapterView是一个非常重要的组件之一,他非常灵活,所以得好好学...AdapterView本身是一个抽象类,派生出来的子类用法也十分相似,只是界面有一定的区别,因此本节把他们归为一类 Ada ...