SJTU
2017-03-11 本文已影响21人
yingtaomj
很多题不告诉输入的数量和数据的规模
2009
- 计算两天天数之差(模拟题)
- 算矩阵积分(没有题)
- 数组操作
- 大小字母出现次数
这一年大概是这么多年最简单的一次了。
2010
题目链接:http://blog.csdn.net/acm_jl/article/details/51106974
- 后缀子串排序
string array[100]
len = str.length();
arr[i] = str.substr(len-i-1,len);
sort(arr,arr+len);//in algorithm
cout<<a[i]<<endl;
- 不带括号的四则运算,把所有结果当做加数存在数组里,不能把全部输入当做字符串处理,必须边输入边处理。
计算所有乘除法,把结果依次保存在数组里,最后把数组剩下的数全部相加。 - 依次计算把每一点作为左上角定点的矩形满足条件的最小矩形面积。循环,不用DFS。
没有ac,永远不懂九度的OJ。。
2010推免
- 大数相乘(调代码调到吐)
- ???
- 只会暴力,从i=1...100000遍历,感觉和清华http://ac.jobdu.com/problem.php?pid=1491有点像。
- 插入排序
计算最长非递减子序列,剩下的就是要插入的数了。(感觉是对的?) - 内存分配
为什么上交特喜欢这种考TLE的题……qwq
2012推免
- 不能用三个数的平方和表示的数的格式为:(4^n)(8m+7),遍历n和m,注意剪枝(我也不知道有没有TLE)
- 马遍历棋盘,没有搜到。
2013
题目链接:
- http://www.cskaoyan.com/thread-204732-1-1.html
- http://www.cskaoyan.com/forum.php?mod=viewthread&tid=204732&extra=page%3D1%26filter%3Ddigest%26digest%3D1
- 字典序排序一些二值对,输入形式(k,v)
int Comp(const void*p1,const void*p2)
{
struct Node*c=(Node*)p1;
struct Node*d=(Node*)p2;
if(c->x!=d->x)
return c->x-d->x;
else return d->y-c->y;
}//结构体排序
qsort(node,length,sizeof(node[0]),cmp)
-
计算阶乘结尾的0的个数,找规律,求出N的阶乘的所有因式(1,2,3,...,N)分解中5的指数
-
用高精度整数保存十进制整数的小数部分,记为n,对n执行:1.将n自乘以16,保存n的最高位到结果数组ret[]里面;2.将n的最高位置为0;3.若n不为0或者以上操作已经执行了32次,则返回1,否则算法结束,最后只需要按照相应的格式打印结果即可
2014
题目链接:http://www.cskaoyan.com/thread-240783-1-3.html
next_permutation
- 能否通过调整字符串的顺序使相同字符串间隔大于指定k。
首先扫描整个输入,记录每一个字符串的后面和它相同的有多少个。
若满足所有字符个数-1>=(出现最多次字符的次数-1)*指定k+出现最多次字符的个数-1
,则可以。
寻找从指定位置开始是否有**,a.find(" ", place) != string::npos
- 读取不知道规模的矩阵,用
getchar()
。只是从上到下扫描,不知道怎么简化??
2015考研
题目链接:http://www.cskaoyan.com/thread-247894-1-3.html
- 计算素数的个数(应该没啥简便方法……?)
- 利用后缀树得到字符串里最长重复子串:将所有后缀序列
sort
排序,最长的公共前缀就是想要的答案。复杂度O(n)
- 椭圆周长。没有可用的公式,要自己推导。
2015推免
题目链接:http://www.cskaoyan.com/thread-594266-1-2.html
- 求和的组合方式,DFS,用
cnt[i]
记录每一个数用了多少次。递归关键点:
for (i = pos;i<all; i++)//pos是寻找的起点
{
cnt[i]++;//cnt[i]记录第i个数用了几次
DFS(tot + a[i], pos);
pos++;//在下一次DFS时,前进一位开始找
//比如之前是11111现在是122222
cnt[i]--;
}
- 字符串的处理,输出除去输入中的'A','I','E','O','U'(即元音),且出现过的字母、下划线不再重复出现,且单词之间至多只能有一个空格。
- 求一个数由2的幂次组合相加的种类数。和第一题不一样,是找规律的题。不用递归,用数组存储。
2016
题目链接: http://www.cskaoyan.com/thread-595986-1-1.html
- 求第一个字符串的所有子串中包含第二个子串的个数。看清题意!
三重循环,先截取不同长度的子串,然后从左向右依次strcmp。如果找到则停止。 - 包含括号、可以检查输入是否合法的计算器。设数字和操作符这两个栈,加减一个优先级,乘除一个优先级。考虑读取小数的情况。操作符优先级高的进栈,否则先处理栈中的操作符,直到待处理的操作符优先级高才进栈。
- 任意阶魔方阵。遍历会超时。有规律。
2017
题目链接:http://www.cskaoyan.com/thread-642276-1-1.html
- 实现
atoi
函数,题目没有说,但是要考虑负数、0、数字字母组合 情况。 - 寻找一个序列的最长之字形的长度,如1 5 3 6 1的长度为5,1 3 5的长度为2。
- Sum of Fibonacci。用
a[i]
保存斐波那契数列,用递归计算方法数。
if (a[i]>n) //优化点
return;
if (sum<n)
{
dfs(i + 1, sum + a[i]); //选取a[i]
dfs( i + 1, sum); //不选取a[i]
}