acm

acm算法总结zon列表

左心房为你撑大大i 提交于 2019-12-20 10:23:02
简单列了一点 1.1 基本数据结构 1. 数组 2. 链表,双向链表 3. 队列,单调队列,双端队列 4. 栈,单调栈 1.2 中级数据结构 1. 堆 2. 并查集与带权并查集 3. hash 表 自然溢出 双hash 1.3 高级数据结构 1. 树状数组 2. 线段树,线段树合并 3. 平衡树 Treap 随机平衡二叉树 Splay 伸展树 * Scapegoat Tree 替罪羊树 4. 块状数组,块状链表 5.* 树套树 线段树套线段树 线段树套平衡树 * 平衡树套线段树 6.可并堆 左偏树 *配对堆 7. *KDtree,*四分树 1.4 可持久化数据结构 1. 可持久化线段树 主席树 2. * 可持久化平衡树 3. * 可持久化块状数组 1.5 字符串相关算法及数据结构 1. KMP 2. AC 自动机 3. 后缀数组 4. *后缀树 5. *后缀自动机 6. 字典树 Trie 7. manacher 1.6 图论相关 1. 最小生成树 prim kruskal 2. 最短路,次短路,K短路 spfa dijkstra floyd 3. 图的连通 连通分量 割点,割边 4. 网络流 最大流 最小割 费用流 分数规划 5. 树相关 树上倍增, 公共祖先 树链剖分 树的分治算法(点分治,边分治,*动态?树分治) 动态树 (LCT,*树分块) 虚树 *prufer编码 7.

ACM程序设计大赛题目分类

一笑奈何 提交于 2019-12-13 11:40:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 第一类:基础算法 (1) 基础算法: 枚举,贪心,递归,分治,递推,构造,模拟 (2) 动态规划: 背包问题,树形dp,状态压缩dp,单调性优化,插头dp (3) 搜索: dfs,bfs,记忆化搜索,优化与剪枝,双广,A*,IDA*,跳舞链 第二类:数据结构 (1) 简单数据结构: 链表,栈和队列,串,树和二叉树,图,排序与检索 (2) 树形结构: 线段树,树状数组,字典树,伸展树,左偏树,动态树,lca&rmq,划分树,SBT (3) 字符串: kmp,AC自动机,后缀数组,最小表示法 (4) 其他: 并查集,散列表,块状链表,双向链表 第三类:图论 (1) 最短路: dijkstra,bellman-ford(spfa优化),floyd,heap+dijkstra,差分约束,第K最短路 (2) 生成树: prim,kruskal, 度限制最小生成树, 最优比率生成树, 次小生成树, 最小树形图,生成树的计数,树的划分,树的枚举 (3) 匹配问题: 二分图的最大匹配 (匈牙利算法),KM,2-SAT,同构 (4) 网络流: 最大流,最小费用最大流,最小割模型、网络流规约 (5) 其他: 拓扑排序,双连通分量,强连通分支及其缩点,图的割边与割点,无向图、有向图的最小环,欧拉路径,哈密顿路径,平面图,分层图思想

平头哥首席科学家谢源当选ACM Fellow

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-12 11:52:26
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 12月12日,国际计算机学会 (Association for Computing Machinery , 简称 ACM)正式公布了2019年ACM Fellow名单,阿里巴巴平头哥首席科学家、达摩院高级研究员谢源当选,这也意味着谢源成为IEEE(电气与电子工程师学会)、AAAS(美国科学促进会)、ACM(国际计算机学会) 三大国际顶级学会的会士(Fellow)。 ACM创立于 1947 年,是计算机领域影响力最大的专业学术组织,ACM 评选的图灵奖被公认为世界计算机领域的诺贝尔奖。ACM Fellow是ACM授予资深会员的最高荣誉,表彰对于计算机相关领域有杰出贡献的科学家。截止2019年,全球共有1221位学者当选ACM Fellow。据了解,本次当选的58名学者研究方向涵盖计算机体系结构、人工智能、无线网络以及量子计算等领域。 资料显示,谢源是计算机体系结构、3D芯片设计领域的权威专家,其研究领域主要包括计算机体系结构、集成电路设计、电子设计自动化、和嵌入式系统设计,已发表过300多篇顶级期刊和会议论文,于2014年当选IEEE Fellow ,于今年11月当选AAAS Fellow。 对于此次入选,ACM官方表示,谢源在计算机体系结构的设计技术和工具方面做出了杰出贡献。 上个月

ACMer菜鸟心得之ACM的输入

混江龙づ霸主 提交于 2019-12-09 23:41:33
  大一开始了解ACM,兴趣使然,看了些刘汝佳写的书,颇有心得,于是记录下来,不定时更新。   ACM的输入:    #define LOCAL #include <stdio.h> int main() { #ifdef LOCAL freopen("data.in","r",stdin); freopen("data.out","w",stdout); #endif printf("Hello World!\n"); return 0; } 这是一份比较典型的竞赛代码,其中采用的是重定向的方法,build该代码时,系统会在当前目录下自动生成data.in和data.out两个文件,顾名思义,输入部分保存在data.in中,输出部分保存在data.out中,再和OJ系统评判,重定向的部分被写在#ifdef和#endif之间,其意义为:只有定义了LOCAL,才能编译两条freopen语句。 另外,C语言里的很多缩写,知道全称后,你能对其有更深的理解,例如,stdio全称为Standard Input and Ouput(标准输入输出),stdlib全称为standard libarary(标准库)。 ACM的输入(凭我的阅历)有以下几种: 1.直接输入  //不多说 2.多组输入 多组输入分为两种,一种是输入一个案例后,立马输出该案例的结果 #include <stdio.h>

初学ACM

可紊 提交于 2019-12-09 20:53:43
题目重述: 问题描述 要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1. 不作任何处理; 2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入 一个自然数n 输出 一个数,表示满足条件的数的个数 样例输入 6 样例输出 6 提示 样例说明:满足条件的数是6,16,26,126,36,136 假设不考虑重复的情况,那么采用下面公式即可: 只需要一个数组,很容易写出下面这个程序: #include <iostream> #include <cstring> using namespace std; int ans[100005]; int main() { int n; cin>>n; for(int i=0; i<=n; i++) ans[i] = 1; for(int i=2; i<=n; i++) { for(int j=1; j<=i/2; j++) ans[i] += ans[j]; } cout<<ans[n]<<endl; return 0; } 这个程序已经可以AC南京邮电大学OJ的测试数据了,但却过不去FOJ 1207,原因是没有考虑重复生成的情况。 下面我们来看一个重复生成的情况: 60-(添加24)

ACM入门知识-----ACM赛事介绍

僤鯓⒐⒋嵵緔 提交于 2019-12-09 19:39:15
国际大学生程序设计竞赛(英文全称:International Collegiate Programming Contest(简称ICPC))是由国际计算机协会(ACM)主办的。ACM国际大学生程序设计竞赛已经发展成为全球最具影响力的大学生程序设计竞赛。(以下简称ACM-ICPC)。 ACM-ICPC以团队的形式代表各学校参赛,每队由至多3名队员组成。每位队员必须是在校学生,有一定的年龄限制,并且每年最多可以参加2站区域选拔赛。比赛期间,每队使用1台电脑需要在5个小时内使用C/C++、Java中的一种编写程序解决7到13个问题。程序完成之后提交OJ(在线评测系统)运行,运行的结果会及时通知参赛队。 最后的获胜者为正确解答题目最多且总用时最少的队伍。每道试题用时将从竞赛开始到试题解答被判定为正确为止,其间每一次提交运行结果被判错误的话将被加罚20分钟时间,未正确解答的试题不记时。与其它计算机程序竞赛(例如国际信息学奥林匹克,IOI)相比,ACM-ICPC的特点在于其题量大,每队需要在5小时内完成7道或以上的题目。另外,一支队伍3名队员却只有1台电脑,使得时间显得更为紧张。因此除了扎实的专业水平,良好的团队协作和心理素质同样是获胜的关键。 ACM-ICPC特点: 1.参赛队伍最多由三名参赛队员组成。 2.竞赛中命题10题左右,试题描述为英文,比赛时间为5个小时左右

ACM-数论- 威尔逊定理 hdu2973

不想你离开。 提交于 2019-12-07 12:42:07
这里是题面 题解:这个阶乘和(p-1)/p就想到了 威尔逊定理(p-1)!=p-1 (mod p) 当3*k+7为质数时:那么(3*k+6)!+1/(3*k+7)就是整数temp,后面的就是小于temp的一个数,取整即temp-1,答案就是1 当3*k+7为和数时:自己试一些数字进去,发现答案就是0或者0.x,取整后就是0 由此推断得出结论 当3*k+7为质数,那么答案要加一,否则不变. 代码: #include<iostream> #include<cstdio> #include<vector> using namespace std ; typedef long long ll; const int maxn= 3e6 + 10 ; const int k= 1e6 + 5 ; long long n,m; bool notprime[maxn]; vector < int > prime; void get_prime(){ notprime[ 0 ]= true ; notprime[ 1 ]= true ; for ( int i= 2 ;i<maxn;i++){ if (!notprime[i])prime.push_back(i); for ( int j= 0 ;j<prime.size()&&i*prime[j]<=maxn;j++){ notprime[i

重庆赛区ACM热身题8527.Do you like 玩游戏?

六眼飞鱼酱① 提交于 2019-12-06 20:04:09
重庆赛区ACM热身题8527.Do you like 玩游戏? 最近呢博主呢在忙于准备 acm的练习,在重庆的acm热身题里面我发现这个第三题的通过率是最低的, 本来以为acm程序设计大赛可以使用python 博主还高兴了一下,python毕竟在处理字符串这方面还是很占优势的,闲话不说了,先步入正题。我们首先分析题目这就是一个很简单的游戏,有点像贪吃蛇吧,它题目的意思就是生成一个地图 在外围我们发现他是用“=”和“|”框起来的,中心可以移动的区域为一个10x10 的空白区域。那么整个地图包括边界的区域我们就可以使用一个二维的字符串数组进行储存,那么我们第一个函数就是用来生成地图的,因为博主还是个在校大学生,正好这学期在学java那我就用java完成这道题目,看代码: static String[][] createMap() { String[][] map = new String[12][12]; for (int i = 0; i < 12; i++) { map[0][i] = "="; } for (int i = 0; i < 12; i++) { map[11][i] = "="; } for (int i = 1; i < 11; i++) { for (int j = 0; j < 11; j++) { map[i][j] = " "; } } for (int

重庆赛区ACM热身题 8531. KD's fear

孤街醉人 提交于 2019-12-06 19:58:49
重庆赛区ACM热身题 8531. KD’s fear 前面博主把这个热身赛上的提交通过率最低的一道题解决了,下面博主将在解决一下这道编程题里面的一道几何题把,首先看见acm群里面大家用什么什么向量,二分法求这个点是否在这个凸多边行内,其实哪有这么高深,我认为就用初高中的知识就够了 就是一个点与线之间的关系; 哦 对哈题目还没说,这个题目呢意思很简单就是内部机理就是判断一个点是否在这个多变形内; 首先呢我们来看一下这个图: 我们看哈 其实我们要保证这个M点(Boss所在坐标)要在这个凸多边形内部其实就只需要保证M点在跟这个多边形的每一条边保持在同一侧就行了 我们看哈 因为输入保证是逆时针输入所以我们以A点为起点首先我们以A→B这条边来看 M 点是在AB这条边的左边 所以呢就是要保证M点在其他的每条边的左边即可保证M点在这个凸多边型内。我们学过直线方程的都知道 要想判断一个点是否在这条直线上或者在这条直线右 或者左 那么即是将这个点带入这个方程看这个值与0之间的关系 如果大于0那么即是这个点在直线的右边,那么小于零即是在这个直线的左边,等于零呢就是在这个直线上。 有了这个逻辑那么就好办事了。两个点我们可以确定一个直线方程 ,我们用第一个点与 个点组成方程,第二个点又与第三个点组成方程,第三个点与第四个点组成方程,…… 直到第8个点我们与第一个点组成一个方程。

2016.12 ~ 2019.12 回归

大兔子大兔子 提交于 2019-12-06 13:46:20
博客竟然三整年没更新了,我也已经大二啦 17年为了留学考试放弃了省选,18年如愿以偿拿到公认世界top10的某所dream school的offer,拎着行李箱满腔热血地去了异国他乡。我就读的专业是计算机科学与数学,按照学校的说法是为对theoretical computer science感兴趣的本科生开设的专业。大一的算法与数据结构八个星期讲完了NOI涉及到的大多数知识点,但重点不在与写码而在于分析,比如算法终止性啦平摊分析的势能方法啦等等,学到怀疑人生。到了大学很难腾出时间刷题,大一ACM没能够找到队友,大二ACM晋级后申根签来不及办理没有能够参赛。用github pages建立了新的全英文技术博客但鲜有发布刷题记录,更多的精力放在了找实习。兴趣点逐渐转向了fintech,求职方向也从tech company转向了high frequency和quantitative trading。靠着吃OI的老本找实习还算顺风顺水。 今天为了找板子打开了这个博客,突然怀念起高中的时候每天午休偷偷抱着笔记本躲进空教室的角落刷题的时光,一看发现BZOJ竟然都已经关过一段时间啦,以前买过权限的账号也被我彻底遗忘…是时候重新开始啦,为了本科最后的ACM,为了面试,更为了自己的初心。 后天Google final round interview,rp++ 想要以后去苏黎世工作 来源: https: