脑洞
文章平均质量分 69
matrix5247
这个作者很懒,什么都没留下…
展开
-
poj3213
传送门 http://poj.org/problem?id=3213 题目大意:两个矩阵(N 矩阵乘法最低复杂度就是N^3的啊,要计算每一个的话,妥妥超时,但这题规定,只有可能一个地方出错,可以通过求出前一个矩阵的列和,后一个矩阵的行和,进行简化,十分巧妙。 #include #include #include #include #include #i原创 2016-05-25 16:06:24 · 578 阅读 · 0 评论 -
codeforces714e Sonya and Problem Wihtout a Legend
题意:一串数字,要求变成严格的上升子序列的最小花费,花费为abs(a-temp)题解:做这题之前,可以先去做做hdu5256 考虑两个位置i,j(i= j - i ,也就是说a[j] - j >= a[i] - i 那么考虑新的数列a[i] - i,只要保证这个数列是上升的就可以(可以存在相等) 首先把a[i]都变原创 2016-09-14 14:12:12 · 858 阅读 · 0 评论 -
codeforces 545D. Queue
题意:给你一个序列,如果这个数比他前面所有数字的总和大于等于,那么他就是开心的,否则就是不开心,让你重新更改顺序,使开心的人最多题解:首先,排序,对于开心的,留下来,不开心的,扔到最后,这还可能使后面开心的变多。int a[100010];int main(){ int n; cin>>n; for(int i=0;i<n;i++){ scanf("原创 2016-09-07 21:11:01 · 329 阅读 · 0 评论 -
hdu5489 Removed Interval
题意:长度为n(题解:对于某一位,可以假设出现在最终的序列中,那么可以算出以这个数为头后面的LIS(可以从后往前处理),然后还可以算出以这个数结尾(类似于O(nlogn)计算LIS),去掉前L个的LIS,两者相加-1就可以算出最终的LIS 需要注意的是,如果L出现在最后位置时的情况int a[100010];///存从后往前处理时的LISint b[100010原创 2016-09-21 13:54:00 · 336 阅读 · 0 评论 -
51nod 1624取余最长路
题意:3*n(n题解:如果是普通的不需要膜的话,就是普通的dp,但是有膜以后,会产生后效性,因此,就不会dp了 如果暴力的话,复杂度n^2 换个角度,也就是找两个拐点,使得sum[1][x]+sum[2][y]-sum[2][x-1]+sum[3][n]-sum[3][y-1]最大就可以 考虑优化,对于sum[2][y]-原创 2016-10-10 21:36:33 · 549 阅读 · 0 评论 -
51nod 1503 && codeforces570e Pig and Palindromes
题意:n*m的格子,每个格子上有一个字符,从(1,1)走到(n,m)只能向下和向右,问走过的字符串是回文的个数有多少题解:比较容易想到是dp,dp[step][x1][y1][x2][y2],表示第step步到(x1,y1)和(x2,y2)共有多少种方案 但这样的话,时间空间都爆炸 可以用滚动数组优化掉一维,但空间还是会爆炸原创 2016-10-12 17:11:08 · 311 阅读 · 0 评论 -
51nod 1605 棋盘问题
题意:n*m的棋盘,每次可以将x(x==1 || x是质数),如果x*x内都是1的话,将他们都变成0,问先手赢还是后手赢题解:博弈,没有sg函数,刚开始想可能会和前后顺序有问题 有点儿想不到了 然后发现,x只能是1或者质数,所有x肯定是奇数,那x*x肯定也是奇数 如果当前有奇数个1,那么变后就有偶数个1原创 2016-10-08 16:03:19 · 253 阅读 · 0 评论