GDCPC2016 参赛总结
2016-05-08 20:21
281 查看
校赛初赛差一名整体进入省赛,被前面的队伍拉去参加,遇见了两位东校这边的师兄,然后最近也就频繁出现在广州(大雾)摆出一副努力打算法的样子,更加努力的展开自己的脑洞.
在东校图书馆看到了很多心仪的CS书目,想到了不久以后能回迁之后的美好场景哈哈哈哈,另外早上食堂的青菜简直得我心意哈哈哈哈~
言归正传,大一第一次有幸参加省赛,除了get一套衣服和get挺喜欢的麦当劳午饭之外,更多的是见识广东算法界的大腿们,以及看看别的学校,尽管在综合名声上没有中大出名,可是在最后的排名上却一点也不弱.
一开始是热身赛,敲了一个线段树的模板之后再给队友热身,过了一个二分查找的变形题和另一个水题之后也算热身了,事实证明这次省赛中没有用到线段树23333
另外赛后题解说可以用余弦定理求圆周角来判断2333
f[0] = a,f[1] = b,f
= f[n-1] xor f[n-2]给出a,b,n,求f
立马转战K发现已经有很多人过了,我已开始觉得10^6数组找循环,木洪一看之后说了一句,异或两次不就回来了吗…..orz然后迅速签到转战下一题
木洪很清晰的分类成%4 ==0 和2的两种,然后写了一个构造测试了一下过了
题意是1~N的中序遍历,求第N个数(n<10^9)
佳录建议删除最后一层之后再来左右分别搜索.然后过了样例之后很快过了这题.
一个小时不到1A四题,形势一片大好
这时午饭来了,我看了看翻译摩尔电码的题,拿过电脑开始敲.然而贡献了一个WA默默退下.
题意是多个账户赚钱,银行每笔转账要收取手续费,求最后每个人数目相同时候的最大值.
显然二分..佳录敲了一遍没过样例,木洪抢过去敲,把k%去掉后就过了这题
全队万念俱灰的时候发现我理解错题意了,并不是两个相同的字母间只要一个空格…
于是删了我的第一次交的代码6行,6A…校赛后再度拖累罚时QAQ
最后七道题走人了,最多的一支队过了九题.不知道能不能拿个几等奖.不过这次省赛的最后经验是同志依旧需努力..搞了半小时的C题最后题解也没听懂…DE题更是可怕到无人通过.
这个世界还是很大的.
算法的世界也是很大的.
赛后问了一下诗源,以及在队群里面讨论一下,对于10^10的数据量有log(n)的算法.
大概意思是枚举+容斥.
比如长度为4的 ABCD这种除4,ABAB除2,AAAA不用除.然后相加.
最后省赛67名收尾.同志仍需努力呐.
另外附上参赛前对0607年省赛题型算法的笔记:
来着郭嵩山 张子臻老师的 国际大学生程序设计竞赛例题解(五)
set 和 map 底层用红黑树实现
字典树不区分大小写
更新的函数挺有意思的
想起校赛双重hash..<<=4成longlong后map
重定向输入
不进位线段求和
自定义减法操作,sum[x,y] = sum[0,y] - sum[0,x]
求sum[0,x]开数组 c[i][j] 表示 [0,x] i 位出现j 的数字次数
闭包冲突
string map读入超时可以char*读入..然后转换成string
floyd 处理后判断冲突,二进制判断特别漂亮
通配符查询
dp w[i][j] 代表待匹配串 前i位 能否匹配串的 前j位
0位数组越界处理
字符串结合第n大
cmp x+y
二分
最长波动(一增一减)子序列
DP思路和LIS一致..
儿童节快乐
线段树��…
插入<
计数问题..找规律DP…(看怎么插入)
排序身高差不同
脑洞构造一前一后一前一后+证明
模拟统计Accept
任务安排问题,求最小late
搜索+剪枝
贪心优化:总是选择准备就绪且最后期限最小的任务
(二分图)的最长距离
转化为两个凸包旋转边界线
用余弦定理求点到直线距离
N个机械臂并行读取N-1条信息
机械臂之间不会交叉
两个指针向右扫描的方法在O(n)时间计算距离
枚举多余的机械臂,机械臂与对应记录只差做求和的预处理,从左向右累加,再从右向左一次,中间结果全部记录下来.a[i]表示前i个机械臂读取前i个记录的花费,b[i]表示i+1后机械臂读取第i个记录后的花费
m*n子矩阵中的不同元素
id化处理数据,cmp中排序id,元素序号..
枚举行,用最先出现的列来优化,每一次将原先的不同元素减一,优化列数不同元素+1
树+叶子环=>最优汉密尔顿圈
枚举圈经过root的情况
记忆化搜索
计算n个节点k个叶子树的数目
运用题目介绍的编码,发现一一对应关系
然后转化为用n-k种编码生成长度n-2的字符串
递推求解
另外组合数
移动石头,先根的到败
题目写的像博弈,但是没有博弈性质
求和各自的深度..dfs
猴子分香蕉
每次取走y个剩下的整除(分成)x(堆),取走一堆.求第k小的解
逆推+BFS,为了使得搜索结果有序,维护一个最小堆
由于对n的单调性,用C个指针(为了后移)优化
路重建
dijkstra,将不需要重修的定义为0.
无向图中的简单路
管道种类多(15种…)
减少边数:删除二度顶点
用四位二进制表示四个方向连边数量
07校选拔
字符串查重
等腰直角三角形左顶点排序后分类讨论求面积并
有趣的是longlong输出,小数部分讨论输出
最大流
拆点
两个集合最小距离
DP
不会交叉匹配
在东校图书馆看到了很多心仪的CS书目,想到了不久以后能回迁之后的美好场景哈哈哈哈,另外早上食堂的青菜简直得我心意哈哈哈哈~
言归正传,大一第一次有幸参加省赛,除了get一套衣服和get挺喜欢的麦当劳午饭之外,更多的是见识广东算法界的大腿们,以及看看别的学校,尽管在综合名声上没有中大出名,可是在最后的排名上却一点也不弱.
一开始是热身赛,敲了一个线段树的模板之后再给队友热身,过了一个二分查找的变形题和另一个水题之后也算热身了,事实证明这次省赛中没有用到线段树23333
A
拿到题之后开始做A,给出四边形的四条边长和对角线长,判断是否共圆.一开始我和队友脑洞太大,猜了一堆错的推论,最后队长也猜了一个没证出来的方法,求出四个三角形外接圆的半径然后判断是否相等,估计是我离高三比较近的缘故2333贡献了一个正弦定理+余弦定理求半径.然后就过了这道题.另外赛后题解说可以用余弦定理求圆周角来判断2333
K
队长敲A的时候翻了翻题目,发现K才是真正的水题..f[0] = a,f[1] = b,f
= f[n-1] xor f[n-2]给出a,b,n,求f
立马转战K发现已经有很多人过了,我已开始觉得10^6数组找循环,木洪一看之后说了一句,异或两次不就回来了吗…..orz然后迅速签到转战下一题
B
构造每个点读数都为3的图.木洪很清晰的分类成%4 ==0 和2的两种,然后写了一个构造测试了一下过了
J
作为跟着大部队走的姿态,J题过题量较大,两个队友看了看都说是水题然后就开始啃了,题意是1~N的中序遍历,求第N个数(n<10^9)
佳录建议删除最后一层之后再来左右分别搜索.然后过了样例之后很快过了这题.
一个小时不到1A四题,形势一片大好
这时午饭来了,我看了看翻译摩尔电码的题,拿过电脑开始敲.然而贡献了一个WA默默退下.
F
我退下后佳录说F题可以做.题意是多个账户赚钱,银行每笔转账要收取手续费,求最后每个人数目相同时候的最大值.
显然二分..佳录敲了一遍没过样例,木洪抢过去敲,把k%去掉后就过了这题
I
摩尔电码的翻译..我贡献了4个WAQAQ然后转交木洪再来了一个全队万念俱灰的时候发现我理解错题意了,并不是两个相同的字母间只要一个空格…
于是删了我的第一次交的代码6行,6A…校赛后再度拖累罚时QAQ
G
博弈题,Alice知道Bob的权值求最小值.两个队友伟大的脑洞!!!猜出了公式!!!!!…在最后讲题的时候…发现是一个纳什均衡!!!居然猜出了公式!!!最后七道题走人了,最多的一支队过了九题.不知道能不能拿个几等奖.不过这次省赛的最后经验是同志依旧需努力..搞了半小时的C题最后题解也没听懂…DE题更是可怕到无人通过.
这个世界还是很大的.
算法的世界也是很大的.
C
环形墙壁,n块最多k色求涂法赛后问了一下诗源,以及在队群里面讨论一下,对于10^10的数据量有log(n)的算法.
大概意思是枚举+容斥.
比如长度为4的 ABCD这种除4,ABAB除2,AAAA不用除.然后相加.
最后省赛67名收尾.同志仍需努力呐.
另外附上参赛前对0607年省赛题型算法的笔记:
来着郭嵩山 张子臻老师的 国际大学生程序设计竞赛例题解(五)
2006
字符串查重set 和 map 底层用红黑树实现
字典树不区分大小写
更新的函数挺有意思的
void visit ( tree *p,char *s,int bj)//insert: bj = 1,delete bj = 0 { char c = (*s) -'a'; if (p->node[c])p=p->node[c]; else { if( !bj ) return;//insert p->node[c] = new tree; p=p->node[c]; } if(s[1])visit(p,s+1,bj); else { if(p->bj != bj) ans += bj ? 1:-1; p->bj = bj; } }
想起校赛双重hash..<<=4成longlong后map
重定向输入
freopen("message.in","r",stdin); freopen("message.out","r",stdout);
不进位线段求和
自定义减法操作,sum[x,y] = sum[0,y] - sum[0,x]
求sum[0,x]开数组 c[i][j] 表示 [0,x] i 位出现j 的数字次数
闭包冲突
string map读入超时可以char*读入..然后转换成string
char* 处理 strstr(str,const char*) != 0;//not conclude strcmp (char* , const char*) == 0;//same file stream filein.oef();
floyd 处理后判断冲突,二进制判断特别漂亮
&2
通配符查询
dp w[i][j] 代表待匹配串 前i位 能否匹配串的 前j位
0位数组越界处理
m[i]\[j] = ( !j ) ?(expression1):expression(2)
字符串结合第n大
cmp x+y
2007
二分图的完全最优匹配二分
最长波动(一增一减)子序列
DP思路和LIS一致..
儿童节快乐
线段树��…
插入<
计数问题..找规律DP…(看怎么插入)
排序身高差不同
脑洞构造一前一后一前一后+证明
模拟统计Accept
任务安排问题,求最小late
搜索+剪枝
贪心优化:总是选择准备就绪且最后期限最小的任务
(二分图)的最长距离
转化为两个凸包旋转边界线
用余弦定理求点到直线距离
N个机械臂并行读取N-1条信息
机械臂之间不会交叉
两个指针向右扫描的方法在O(n)时间计算距离
枚举多余的机械臂,机械臂与对应记录只差做求和的预处理,从左向右累加,再从右向左一次,中间结果全部记录下来.a[i]表示前i个机械臂读取前i个记录的花费,b[i]表示i+1后机械臂读取第i个记录后的花费
m*n子矩阵中的不同元素
id化处理数据,cmp中排序id,元素序号..
枚举行,用最先出现的列来优化,每一次将原先的不同元素减一,优化列数不同元素+1
树+叶子环=>最优汉密尔顿圈
枚举圈经过root的情况
记忆化搜索
计算n个节点k个叶子树的数目
运用题目介绍的编码,发现一一对应关系
然后转化为用n-k种编码生成长度n-2的字符串
递推求解
另外组合数
c(i,j) = c(i-1,j-1) + c(i-1,j)
移动石头,先根的到败
题目写的像博弈,但是没有博弈性质
求和各自的深度..dfs
猴子分香蕉
每次取走y个剩下的整除(分成)x(堆),取走一堆.求第k小的解
逆推+BFS,为了使得搜索结果有序,维护一个最小堆
由于对n的单调性,用C个指针(为了后移)优化
路重建
dijkstra,将不需要重修的定义为0.
无向图中的简单路
管道种类多(15种…)
减少边数:删除二度顶点
用四位二进制表示四个方向连边数量
07校选拔
字符串查重
等腰直角三角形左顶点排序后分类讨论求面积并
有趣的是longlong输出,小数部分讨论输出
最大流
拆点
//寻找增广路径 int find() { int queue[maxn + 10], head, tail; int x, loop; fill(tag, tag + n ,0) }
两个集合最小距离
DP
不会交叉匹配
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析