- 博客(75)
- 资源 (1)
- 收藏
- 关注
原创 【重构C++知识体系】类 虚类 纯虚类
类/*在C++中,我们通过类来定义自己的数据结构*/类的作用(思想)为了使C++遵守OOP基本法的数据抽象和封装.数据抽象:就是将”接口”和”实现”实现分离的编程技术.封装:隐藏对象的属性和实现细节,仅对外公开接口.拓展:(设计模式6大原则)[http://www.uml.org.cn/sjms/201211023.asp]
2016-03-18 16:05:56
9504
原创 【面试】数据结构
单链表先给出定义部分和相关调试部分#include <bits/stdc++.h>using namespace std;struct ListNode{ int v; struct ListNode *next;}*head;ListNode* insert(int v){ ListNode* p=head; if(head == NULL) {
2016-03-16 20:13:17
680
原创 Python 与 C++ 混合编程 实验
实验目的:实现Python调用C++ 输入法 API的目的实验环境:Ubuntu Kylin 15.10实验过程:开始的时候看到了一些C++与Python的混合编程,最终选用了拓展Python库的方案。并了解了一下Python的底层 (?)是否所有带有垃圾回收的语言的variable都是用的引用?编(C)写(P):wrapper.cppfoo用于测试 return list foo1用于测试形参
2015-11-27 16:37:06
990
原创 SGU 347 Join the Strings 字符串 排序 思维
SGU 347 Join the Strings题意:把n个字符串连起来使字典序最小思路:题目很简单但是这种思路真的非常重要 考虑已经连接的串字典序是最小的 那么交换任意两个都有可能使字典序变大 那么反向考虑 若使每次交换能使字典序变小 那就可以交换. 这样我们就能写出比较函数, 之后依此排个序就行了#include <bits/stdc++.h>using namespace std
2015-10-10 21:25:52
492
原创 UESTC 87 Easy Problem With Numbers 线段树区间更新 逆元 分解质因数
UESTC 87 Easy Problem With Numbers线段树 逆元 分解质因数
2015-10-09 16:12:54
809
原创 HDU 4902 Nice boat 线段树 区间更新
HDU 4902 Nice boat题意:一个序列, 两种操作. 1. 把一个区间全部更改为x2. 把一个区间比x大的数全部修改为gcd(ai,x)思路:lazy tagpushDown的原则是把该节点所有tag都推到子节点所以分情况讨论一下即可 最后到叶节点直接更新数列#include #define lson num<<1#define
2015-10-09 15:28:08
516
原创 Codeforces Round #271 (Div. 2) F - Ant colony 线段树 + GCD
Codeforces Round #271 (Div. 2) F - Ant colony题意:给定一个序列 有M个提问每次提问求 给定区间中有多少个数 不能整除区间中其他的数 至少有一次.思路:题意转化一下就是求区间中有多少个数能整除其他数.其实这个数就是区间的gcd 于是我们只要在求出区间中这个数的个数即可.对于后者 学习到一个新方法 记
2015-10-08 21:16:51
632
原创 Acdream 1019 Palindrome 树状数组 + 字符串hash
Acdream 1019 Palindrome这道题也算是卡了很久了 - -最近才发现有些细节没考虑到。思路是用两颗树状数组维护HASH前缀和 (一正一反两个反向)坑1:线段树不是MLE就是TLE坑2:在查出两个串后 多项式的幂是不一样的(s[3] * 1331 ^ 3 + s[4] * 1331 ^ 4 + s[5] * 1331 ^ 5 和 s[3] * 1331 ^
2015-10-03 13:16:12
510
原创 Aizu 2450 Do use segment tree (树链剖分)
Aizu 2450 Do use segment tree树链剖分 + 线段树区间更新,就是用线段树求区间最大连续子序列和。求区间最大连续子序列和 的 区间更新 都很好实现。要注意的是最后询问的时候多个区间合并的顺序和正反的问题(就是后面swap那儿)一开始线段树初始化那儿写残了调了好久 - ---------孙大大的板子好长啊 - -
2015-10-02 19:46:24
726
原创 SCU 4438 Censor(KMP / HASH)
过滤敏感词其实就是找子串 就是记录答案的时候不一样用一个类似于栈的容器记录已经匹配过的就行了 遇到匹配成功的出栈n个就行了KMP 为了出栈后能继续之前的匹配 多一个数组记录栈中当前元素的失配位置 - -KMP:#include using namespace std;const int MAXN = 5e6+10;struct KMP{ int f
2015-10-01 16:04:55
1338
原创 hdu5454 Excited Database (线段树)
hdu5454 Excited Database线段树区间更新 关键是想到和怎么用比赛是想的二维线段树之类的 苦于不知道怎么斜着更新所以就弃了题解上说的维护a[i]*i 和a[i] 其实是这样的:对于一个矩形的X+Y的值2 3 43 4 54 5 65 6 7x+y 2 3 4 56 7个数 1 2 3 32 1递增
2015-09-24 16:22:42
1120
原创 hdu5459 Jesus Is Here 递推
hdu5459 Jesus Is Here这道题题解上写的难度系数2 ,但是我们比赛的时候并没有写出来 - -思路:考虑s[n-2]与s[n-1]合并的时候应该需要什么,需要什么我们就求什么例如:s[5]+s[6] 我们把每个cff往后连算一对,假设我们已经把s[5]和s[6]的答案已经求出来了那么s[5]中的2个cff需要连到s[6]中的3个cff上,也就是说s[6]中的
2015-09-21 19:28:27
1241
原创 hdu5444 Elven Postman(SBT)
就是一颗SBT的插入 插入的时候路径。最后询问的时候输出该路径即可。比赛的时候读错题了 以为已经输出过的节点不能再输出了 浪费了很多时间。写了个BFS - -为了省编码时间最后改成求路径也是BFS搞的 - -好菜啊TAT#include using namespace std;const int MAXN=2000;struct Node{ N
2015-09-14 16:25:10
489
原创 hdu5443 The Water Problem(线段树)
求区间最大值 写了一颗线段树比赛的时候第一眼就看见了这个 - -但是手速太慢了还是写了8分多钟#include #define lson num<<1#define rson num<<1|1#define gl l,m,lson#define gr m+1,r,rson#define PARA int l=1,int r=n,int num=1usin
2015-09-14 16:20:20
495
原创 hdu5442 Favorite Donut(最大表示法+KMP)
头一次比赛中遇到最大(最小)表示法的题目因为这个算法可以把字典序最大(最小)的串的最小的起始位置求出来,所以以为正着跑一遍 反着跑一遍就OK了。其实反着跑的时候我是把字符串翻转的,所以求出来的其实是最大的起始位置 - -WA了N次 还以为是题意理解错了 - -#include using namespace std;int n;int f(char wo
2015-09-14 16:16:35
629
原创 hdu4644 BWT(KMP)
这道题首先还原了BWT(T)以后就是KMP了。至于怎么还原 还是网上找的资料(BWT简介)其实吧。。若没有资料感觉也是能找出规律的 首先排序求第一列是肯定的(不觉得和后缀数组构造很像?) 之后比一比就能找出来在不行就根据关系建一建并查集 - -#include using namespace std;const int MAXN = 2000010;st
2015-08-27 15:00:38
678
原创 hdu5371 Hotaru's problem (Manacher)
/*像我这种菜鸡果然还是要写写博客,不然有的题目真是过去就过去了的状态。自己在硬盘里的代码也不太好管理,等以后写个软件来搞就好了 - - */题意:给出一个串,找出满足以下条件的最长子串:1. the first part is the same as the thrid part,第一个部分和第三个部分一样。2. the first part and the second
2015-08-12 11:47:01
510
原创 Codeforces Round #296 (Div. 2) + 今天的收获
A:辗转相减转辗转相除 看到这样分的题大概就是跟gcd有关的吧 - -C:切玻璃每次输出最大的面积 只要找到最大的长区域和最大的宽区域就行我用的是线段树存点 但是别人的方法是 set存点 multiset存线段今天的收获(挖坑):rope.pb_ds.nth_element()求中位数是时候看看algorithm了 - -
2015-03-18 23:24:58
575
原创 spoj 3267 DQUIRY主席树
主席树的应用 若该位置的数出现过就把该版本的之前的位置-1 再把该版本的该位置+1,否则直接+1查询的时候 有点像zkw线段树那种 - -(哎呀..遭不住了啊..手真是贱啊..总是写错..花了一个小时debug真是菜啊TAT)#include #include #include #define lson st[num].ls#define rson st[n
2015-03-12 20:57:19
970
原创 hdu2665/poj2104;poj2761 区间第k小 函数式线段树
题目骗了啊!!什么 kth big number啊!! 明明是区间第k小啊!!-----------------------------------------THE 函数式 线段树 赶紧补基础 - -#include #include #include #define lson st[num].ls#define rson st[num].rsusing n
2015-03-11 18:17:44
588
原创 帮同学写的ATM机模拟(简单链表操作)
#include #include #include #include ///数据层typedef struct AC{ char name[50]; ///存账户名 char password[10]; ///存密码 double money; ///存余额 struct AC *nxt; ///下一个账户}Acco
2015-01-11 21:20:45
1384
1
原创 HDU 5122 树状数组应用
HDU 51222014北京站 J题题意: 给你一个1~N序列 随机选一个数 sort(向上交换 直到要交换的数比他大)问: 最好的情况要sort几次 才能变为升序列大的 在后面的 肯定要先换 不然就会档着后面的数所以用树状数组逆序插入 插入之前先查找 如果出现了比他小的数就ans++#include #include #inc
2014-11-30 17:05:56
586
原创 Linux 下的对拍程序..
while true; do ./make>tmp.in #出数据 ./tmptmp.out #被测程序 ./tmp2tmp2.out #正确(暴力)程序 if diff tmp.out tmp2.out; then #比较两个输出文件 printf AC #结果相同显示AC else echo WA #结果不同显示WA,并退出 #cat tmp.out tmp2.out exi
2014-10-22 13:35:30
3348
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人