![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM——cpp
華灯初上
Java / 网络安全
笔名:Zheng Ying
展开
-
字符串专项——字典树(Trie)
字典树(Trie)也称为前缀树。核心思想是通过多个字符串的公共部分来减少搜索时间,以空间换时间。本篇实现以数组的形式编写字典树字典树核心思想图:class Node { public Node[] children; public int flag; private final int CHARNUM = 26; public Node(){ children = new Node[CHARNUM]; for(int i=0; i.原创 2020-08-06 20:17:46 · 141 阅读 · 0 评论 -
cpp 生成随机数
rand()单纯的rand()会返回一个0至RAND_MAX之间的随机数值,而RAND_MAX的值与int位数有关,最小是32767。不过rand()是一次性的,因为系统默认的随机数种子为1,只要随机数种子不变,其生成的随机数序列就不会改变。#include<cstdlib> //默认从1开始 for(int i=0;i<100;i++){ ...转载 2019-03-26 21:11:46 · 11052 阅读 · 0 评论 -
Data Type
Data type of cpp & python & javaCppInteger (usual used)类型charshortintlonglong long32 bits1224864 bits12448规则:short至少16位;int不得少于short;long至少32位,且不得少于int;long ...原创 2019-03-16 10:29:05 · 172 阅读 · 0 评论 -
c++ copy()函数 algorithm
复制过程是左闭右开的,而且第三个参数是提供另一个有序组的头地址。原创 2018-10-16 18:46:48 · 8226 阅读 · 0 评论 -
C++ 变量类型查询
#include<typeinfo>#include<typeinfo>#include<iostream>using namespace std;int main(){ int a; char b; cout<<"a: "<<typeid(a).name()<<endl;原创 2018-10-06 19:54:33 · 5342 阅读 · 0 评论 -
贪心专项——后悔
此类问题都是先假设所有的工作都能完成,然后从头开始检测每一个任务的合法性。P2949 工作调度 Work Schedulinghttps://www.luogu.org/problem/P2949贪心策略:根据工作的结束时间进行排序(如果结束时间相同,再根据价值排序)。 之后从头开始扫描,判断第 iii 个任务能否在截止时间完成,如果能,则直接加入堆中,如果不能,则将堆中的最小值拿出,...原创 2019-08-07 17:01:51 · 189 阅读 · 0 评论 -
贪心专项——训练
HDU-1009https://vjudge.net/problem/HDU-1009简单贪心 直接从J[i]F[i]\frac{J[i]}{F[i]}F[i]J[i]最大的开始取即可。/** *HDU - 1009 *@author Hongchuan CAO */import java.util.Arrays;import java.util.Scanner;import ...原创 2019-08-05 23:18:45 · 172 阅读 · 0 评论 -
贪心专项——排序
题目链接https://www.luogu.org/problem/P1209每次贪心从间隔最大的两个之间断开/** * P1209 * @author Hongchuan CAO */import java.util.Arrays;import java.util.Scanner;import java.util.logging.Logger;public class M...原创 2019-08-03 20:59:23 · 211 阅读 · 0 评论 -
排序专项——基础
主要记录各种排序算法排序算法基础:(强烈推荐)https://www.cnblogs.com/onepixel/articles/7674659.html#!comments基础参考上面的链接即可。本文主要是代码实现。1. Bubble Sort (冒泡排序)...原创 2019-07-31 15:53:55 · 128 阅读 · 0 评论 -
Java Collections
总结一下 Java collections 在oj中使用创建数组//不可改变 int size=10; int[] data = new int [size];//可变ArrayList<Integer> staff = new ArrayList<Integer>();ArrayList//ConstuctorArrayList() ;Arra...原创 2019-05-09 14:47:36 · 314 阅读 · 0 评论 -
搜索专项——DFS
八皇后问题https://www.luogu.org/recordnew/show/19470456这个问题首先想到的是爆搜每个节点可能的情况,利用回溯进行寻找,,但这样的时间复杂度为O(2n)O(2^n)O(2n) 肯定指数爆炸我们可以对于每层进行一次遍历恰好每行每列各放置一个皇后, 如果用C[x]表示第x行皇后的列编号, 则问题变成了全排列生成问题。而0~n的排列一共只有n! ,至少...原创 2019-05-30 00:01:16 · 109 阅读 · 0 评论 -
图专项——最短路变式
https://vjudge.net/problem/POJ-2263其中将总路径中的最短变为寻找一条道路中的最大运输量。只需要改变搜索最短路中的松弛条件即可/*** POJ-2263* spfa* @author Hongchuan CAO**/#include<iostream>#include<cstdlib>#include<cstdio&...原创 2019-06-13 19:58:20 · 126 阅读 · 0 评论 -
二分专项
二分搜索二分搜索的板子:(左闭右开)对于其他的二分情况可以参考https://blog.csdn.net/CCSGTC/article/details/80586181在二分过程中,始终维持左闭右开的条件void solve(){ sort(heig,heig+n); int left = 0, right = 1000000001; // [0,1000000001) ...原创 2019-06-18 20:12:17 · 119 阅读 · 0 评论 -
动规专项——最长公共子序列(LCS)
先来一个大佬的讲解:(强烈推荐)https://blog.csdn.net/v_july_v/article/details/6695482LongestCommon SubsequenceEquation of state transition:if(x[i]==y[j]):f[i][j]=f[i−1][j−1]+1if(x[i]==y[j]): f[i][j]=f[i-1][j-1]+...原创 2019-06-14 23:54:47 · 99 阅读 · 0 评论 -
搜索专项——宽搜
最短路宽搜/***BFS*poj 2376*@author Hongchuan CAO*/#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<string>#include<queue>#inclu...原创 2019-06-20 21:11:46 · 224 阅读 · 0 评论 -
动规专项——最长不下降子序列(LIS)
LIS 裸题: https://vjudge.net/problem/HDU-1257我第一次做这个题并没有想到用动规,可以直接用单调栈来进行维护其中的搜索第一个小于它的元素可以使用upper_bound()二分查找 O(logn)O(logn)O(logn)复杂度 O(n2)O(n^2)O(n2) 每个元素最多进栈一次。0ms/** * HDU 1257 * LIS (single...原创 2019-06-16 22:00:30 · 217 阅读 · 0 评论 -
动规专项——背包问题
背包问题可以去看一下背包九讲0-1背包https://www.luogu.org/problemnew/show/P1048记忆化搜索代码:/*** memory search* P1048* @author Hongchuan CAO*/#include<iostream>#include<cstdlib>#include<algorit...原创 2019-06-17 22:55:38 · 231 阅读 · 0 评论 -
数在机器中的形式
判断机器的大小端大小端的存储。其中指针指向的起始位置在低地址。图片来源测试代码bool Judge_BigEndian(){ char x = 0x11; char *point = (char*)(&x); for(int i=0;i<4;i++){ printf("%x ",point[i]); } if (poi...原创 2019-09-04 14:48:10 · 141 阅读 · 0 评论 -
排序专项——快速排序
QuickSort题目https://www.luogu.org/problemnew/show/P1177快速排序的具体思路就是找一个基准,首先将这个基准放到对应的位置,然后将小于基准的都放到左边,大于基准的放到右边。然后再递归左右区间。这个代码会RE,可能是递归深度太大,爆栈了。import java.util.Scanner;public class Main{ priv...原创 2019-05-29 22:34:22 · 133 阅读 · 0 评论 -
图专项——最短路(多源多汇)
多源多汇HDU - 2066多个起点(与家临界的城市),多个终点(目的城市)把家和目标城市分别看成一个点注意:1.多组数据,每次开始先把之前的数据清空2.边会重复输入,需要保留最小的/** * HDU 2066 * vector + dijkstra (priority_queue) * more start & more end * @author Hongc...原创 2019-06-13 08:55:13 · 812 阅读 · 0 评论 -
JAVA 高精度计算
高精度计算 用cpp实现较为复杂 但对于java 的Biginteger 和 Big Decimal来说就容易许多了。先来一道题:http://codeforces.com/gym/101848/problem/A总结一下各种类型的精度:对于超过18位的运算,及时long 也不能精确表达式。(在cpp中 unsign long 是long 的两倍)好在java中有两个 Big ...原创 2019-05-08 20:25:39 · 2849 阅读 · 0 评论 -
Codeforces Round #548 (Div. 2)
http://codeforces.com/contest/1139A Even Substrings求偶数。只要保证个位能够被2整除就是偶数。所以从后向前遍历。#include<iostream>#include<string>#include<cstdlib>using namespace std;void cfA(){ in...原创 2019-03-30 17:08:17 · 431 阅读 · 0 评论 -
Longest Increasing Subsequence(LIS)
eg:HDU-1257最长上升序列a1<a2<a3<⋯<ana_1<a_2<a_3< \dots < a_na1<a2<a3<⋯<an最长不下降序列a1≤a2≤a3≤⋯≤ana_1 \leq a_2 \leq a_3 \leq \dots \le...原创 2019-03-20 23:35:13 · 103 阅读 · 0 评论 -
二分
第一种二分先来一个简单二分查找 lower_bound的实现在单调递增序列中,寻找大于ai的第一个元素(详细见挑战程序设计P139)#includeusing namespace std;int n,k; //寻找大于等于k的最小值int a[10000];void input()//输入函数{cin&gt;&gt;n&gt;&gt;k;for(int i=0;i&lt;n;i+...原创 2019-03-17 11:12:37 · 99 阅读 · 0 评论 -
HDU - 2112 HDU Today
HDU TodayHDU - 2112经典最短路先将字符串对应到数。对于map中没有的字符串其值为0因为没有考虑到起点和顶点相同的情况(准确说是考虑过,但是想错了,,,emmm)wa死我了。。。。经典dijkstra。#include<iostream>#include<string>#include<map>#include<cs...原创 2019-03-11 21:21:33 · 162 阅读 · 0 评论 -
最大连续和
给一个长度为 nnn 的序列 A1,A2,…,AnA_1,A_2,\dots ,A_nA1,A2,…,An,求存在i,ji,ji,j使得AiAi+1…Aj尽量大A_iA_{i+1} \dots A_j 尽量大AiAi+1…Aj尽量大Method_1暴力法直接暴力搜索i,ji,ji,j,并暴力搜索序列A1,A2,…,AnA_1,A_2,\dots ,A_nA1,A2,…...原创 2019-03-08 09:05:02 · 181 阅读 · 0 评论 -
STL总结
STLSTL总结vectorqueuepriority_queuemaplistSTL总结总结一下常用STL用法本文只提供一些常用方法,具体实现请读者自行尝试vector可变数组#include&amp;amp;amp;amp;amp;amp;lt;vector&amp;amp;amp;amp;amp;amp;gt;vector&amp;amp;amp;amp;amp;amp;lt;int&amp;amp原创 2019-01-01 09:51:57 · 165 阅读 · 0 评论 -
mod % 取模
因为取模问题 被疯狂RE,,,特此记录Java基本原理: dividend % dividor = dividend - dividend / dividor * dividor;很明显,返回值会出现负数。java 支持整型,浮点型的modCPP基本原理:(与Java一致) dividend % dividor = dividend - dividend / dividor...转载 2019-05-11 15:37:56 · 2087 阅读 · 0 评论 -
矩阵快速幂 JAVA实现
快速幂,顾名思义就是快速求幂。快速幂理解:https://www.cnblogs.com/CXCXCXC/p/4641812.htmleg: 求21002^{100}2100如果每次乘2,总共需要乘100次。如果利用快速幂,每次计算 20,21,22,23…2^0,2^1,2^2,2^3 \dots20,21,22,23… 可以将复杂度降低为 lognlog nlogn pr...原创 2019-05-18 17:26:21 · 1588 阅读 · 0 评论 -
图专项——树形DP
题目https://www.luogu.org/problemnew/show/P1040这是一个典型的树形DP用root[i][j]root[i][j]root[i][j]表示区间iii到jjj构成二叉树根的位置用sorce[i][j]sorce[i][j]sorce[i][j]表示区间iii到jjj构成二叉树能取得的最大得分用d[i]d[i]d[i]表示第iii点的分数状态转移方程为...原创 2019-05-29 12:38:04 · 141 阅读 · 0 评论 -
图专项——最短路
首先列出两个最短路的裸题:本文以这个作为讲解:https://vjudge.net/problem/POJ-1847https://vjudge.net/problem/hdu-2544最短路的算法有Dijkstra,Bellman-Flody,SPFA,Flody较为常用的就是Dijkstra,FlodyDijkstra 利用邻接表存图Flody利用邻接矩阵存图cpp 代码(以...原创 2019-06-01 09:51:39 · 127 阅读 · 0 评论 -
矩阵快速幂
快速幂基础https://www.cnblogs.com/CXCXCXC/p/4641812.html矩阵快速幂的基础https://blog.csdn.net/wust_zzwh/article/details/52058209矩阵快速幂,顾名思义就是加快矩阵求幂。先来一个矩阵快速幂的裸题:https://vjudge.net/problem/POJ-3233矩阵快速幂的步骤:...原创 2019-05-31 20:26:42 · 153 阅读 · 0 评论 -
cpp技巧——数据输入输出
刷oj,输入输出要熟练掌握,否则会浪费时间。输入scanf():可以输入多种类型的数据。getchar()、getche()、getch():这三个函数都用于输入单个字符。gets():获取一行数据,并作为字符串处理。 (以’\n’结束)cin.getline为cpp功能,读入用c特性即可。scanf在 scanf 中,从键盘输入的一切数据,不管是数字、字母,还是空格、回...转载 2019-05-31 16:45:36 · 3407 阅读 · 0 评论 -
DFS——全排列
全排列(主要是为记录一下next_permutation())全排列最直接的就是dfs并且剪枝CPP的STL提供了next_permutation(),prev_permutation()两个全排列函数具体参考https://blog.csdn.net/howardemily/article/details/68064377题目链接https://www.luogu.org/proble...原创 2019-05-28 15:42:48 · 123 阅读 · 0 评论 -
图专项——无向图最小环
最小环裸题:https://vjudge.net/problem/HDU-1599首先这一定是一个简单环。考虑环上编号最大的结点 u。f[u-1][x][y] 和 (u,x), (u,y)共同构成了环。在Floyd的过程中枚举u(其中的i,j都是小于u的),计算这个和的最小值即可。import java.util.Scanner;public class Main{ p...原创 2019-05-31 10:00:57 · 1487 阅读 · 0 评论 -
CPP文件读入/字符串处理
文件读入写出#include<fstream> //用这一个即可#include<istream>#include<ostream>//写出ofstream out; out.open("Hello.txt", ios::in|ios::out|ios::binary) ;out.close();//读入ifstream in; i...转载 2019-05-31 08:18:55 · 2702 阅读 · 0 评论 -
图专项——二分图
二分图:节点由两个集合组成,且两个集合内部没有边的图。通俗一点就是:如果两个集合中的点分别染成黑色和白色,可以发现二分图中的每一条边都一定是连接一个黑色点和一个白色点。可以通过DFS 或者 BFS 遍历该图题目连接https://www.luogu.org/problemnew/show/P1330题解:每一条边都有且仅有一个被它所连接的点被选中。可以通过二分图解决。由于此题中可能存在多...原创 2019-05-23 16:13:07 · 159 阅读 · 0 评论 -
并查集
Union Find (并查集)并查集的表示一维数组s中的每个元素 s[i] 表示该元素 i 的父亲。我们用一维数组来存储并查集,数组的元素s[i]表示的是结点的父亲的位置。数组元素的下标 i 则是结点的标识。如:s[5]=4,表示:结点5 的父亲 是结点4。在线并查集首先初始化所有节点的父节点,因为开始我们假设每个节点都是一个等价类,所以每个元素的父节点就是自己。for(int...原创 2019-01-10 15:19:09 · 145 阅读 · 0 评论