prt

2048(游戏)

两盒软妹~` 提交于 2019-12-23 20:39:10
玩法: 即模仿市场上的2048游戏。 效果图: 实现原理: 就当是一个非常复杂的模拟题,整理好思路,搭好大体结构不难写。 重点是如何判断方块是否合并那里,还有检测是否游戏结束。 分数用一个全局变量储存,每次更新出性方块时加分。 为方块分数加了个等比例增加的#号,要不玩起来难受的要死。 - 源代码: #include<stdio.h> #include<time.h> #include<stdlib.h> #include<conio.h> int a[4][4], SCORE = 0, prt; int num() { return rand()%4; } int scan() { int i, j, t = 0; for(i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { if (a[i][j] == 0) { return 1; } } } return 0; } void crt() { SCORE += 2; int i,j; for(;1;) { i = num(); j = num(); printf("%d %d", i, j); if (a[i][j] == 0) { a[i][j] = 2; break; } } } void frmt() { int i, d; for (i = 0; i < 4; i++) { for

回文自动机[学习笔记]

佐手、 提交于 2019-12-09 11:17:04
回文自动机一一处理回文串问题的有力武器 这几天一直沉迷字符串数据结构 看了很多大佬的回文自动机学习笔记,稍微有点理解了,整理一下吧 1.概念 \(\quad\) a.大概: 同其他自动机一样,回文自动机是个DAG,它用相当少( \(O(n)\) )的空间复杂度就存储了这个字符串的所有回文串信息。一个回文自动机包含不超过 \(|S|\) 个节点,每个节点都表示了这个字符串的一个不重复的回文子串,同时一个节点会有不超过字符集大小的边连向其他节点,以及一条fail边连向这个点的fail...这些都会在下面介绍 \(\quad\) b.森林: 和别的自动机不太一样,回文自动机是有两棵树的森林:其中一棵是长度为偶数的回文串集合,另一棵是长度为奇数的回文串集合,这两棵树的根节点分别表示长度为0(空串)和-1(无实际含义,便于运算)的回文串; \(\quad\) c.边:自动机中每条有向边都有一个字符类型的权值,起点的串左右分别加上这个字符得到的就是终点的串。举个栗子:设一条边权为 \(c\) 的边连接的两个点分别是 \(A,B\) , \(A\) 表示回文串 \(aba\) ,则 \(B\) 表示的回文串就是 \(cabac\) 。特别的,如果 \(A\) 是那个长度为 \(-1\) 的根, \(B\) 串就是这条边的权值。。。 \(\quad\) d.点:当你插入一个字符的时候

Scala函数传名调用

老子叫甜甜 提交于 2019-12-07 06:21:05
Scala的解析器在解析函数参数时有两种方式 传值调用(call-by-value):先计算参数表达式的值,再应用到函数内部 传名调用(call-by-name):将未计算的参数表达式直接应用到函数内部 在进入函数内部前,传值调用方式就已经将参数表达式的值计算完毕;而传名调用是在函数内部进行参数表达式的值计算的,这样每次使用传名调用时,解释器都会调用一次表达式的值。 例如: 上面代码中我们定义了prt方法, 该方法在变量名和变量类型使用 => 符号来设置传名调用。执行以上代码,输出结果如下: 在main方法中通过prt(param1())调用prt方法,通过传名调用的方式将param1()方法传递给prt的参数t,由于是传名调用,所以在prt方法中每使用一次t都会调用一次param1()方法。因此打印了两次param1()方法中的获取参数。 来源: CSDN 作者: 聒噪鱼 链接: https://blog.csdn.net/Spider_Lily/article/details/78774242

[BZOJ 1552] 排序机械臂

不打扰是莪最后的温柔 提交于 2019-11-27 08:14:34
Splay大法是坠吼滴! 1552: [Cerc2007]robotic sort Time Limit: 5 Sec Memory Limit: 64 MB Submit: 436 Solved: 186 [ Submit ][ Status ][ Discuss ] Description Input 输入共两行,第一行为一个整数N,N表示物品的个数,1<=N<=100000。第二行为N个用空格隔开的正整数,表示N个物品最初排列的编号。 Output 输出共一行,N个用空格隔开的正整数P1,P2,P3…Pn,(1 < = Pi < = N),Pi表示第i次操作前第i小的物品所在的位置。 注意:如果第i次操作前,第i小的物品己经在正确的位置Pi上,我们将区间[Pi,Pi]反转(单个物品)。 Sample Input 6 3 4 5 1 6 2 Sample Output 4 6 4 5 6 6 HINT Source HNOI2009集训Day6 还算水的一道区间维护题目, 操作涉及区间翻转所以要用无旋 $Treap$ 或者$Splay$ . 主要思路是每次先建出这棵平衡树, 维护以结点为根的子树的大小, 最小值和最小值所在的子树(左/右/根), 然后每次根据保存的最小值的位置去查找并根据子树大小计算它所在的下标. 然后每次找到之后将其作为区间右端点,