DP.. f[i][j][k]表示左上结束节点是第i条副对角线上的第j个点,右下结束节点是第n*2-i条副对角线上的第k个点,构成回文的方案数. i那维滚动一下.时间复杂度O(n^3)空间复杂度O(n^2) #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include<algorithm> #define ui unsigned int using n…
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4098 [算法] 显然 , 回文路径中第i个字母的位置(x , y)必然满足 : x + y - 1 = i 用f[i][j][k]表示现在在第i步 , 左上的横坐标为j , 右下的横坐标为k , 有多少种方案使得两边路径上的字母序列相同 , DP即可 时间复杂度 : O(N ^ 3) 滚动数组 , 将空间复杂度优化为O(N ^ 2) [代码] #include<bits/stdc+…
[USACO15OPEN]回文的路径Palindromic Paths 题目描述 Farmer John's farm is in the shape of an N \times NN×N grid of fields (1 \le N \le 5001≤N≤500), each labeled with a letter in the alphabet. For example: ABCD BXZX CDXB WCBA Each day, Bessie the cow walks from…
5020: Palindromic Paths  Time Limit(Common/Java):10000MS/30000MS     Memory Limit:65536KByteTotal Submit: 8            Accepted:4 Description Given an N×N grid of fields (1≤N≤500), each labeled with a letter in the alphabet. For example: ABCD BXZXCDX…
P3126 [USACO15OPEN]回文的路径Palindromic Paths 看到这题题解不多,蒟蒻便想更加通俗易懂地分享一点自己的心得,欢迎大佬批评指正^_^ 像这种棋盘形的两边同时做的dp还有 P1006 传纸条, P1004 方格取数, T35377 大教室中传纸条 一.思路改进 对于这种题目最暴力的方法无非是分别枚举左上角和右下角两点坐标 (f[ i ][ j ][ k ][ l ] = f[ i-1 ][ j ][ k+1 ][ l ] + f[ i-1 ][ j ][ k ][…
题目链接:Palindromic Paths 题意: 给你一个n行m列的矩阵,这个矩阵被0或者1所填充,你需要从点(1,1)走到点(n,m).这个时候会有很多路径,每一条路径对应一个01串,你可以改变这个矩阵中某些位置的值,你需要保证改变之后每一条路径串都是回文串. 最后输出你最少需要改变多少位置 题解: 因为你要保证每一条路径都是回文路径,那么如下面这组样例: 3 5 1 0 1 0 0 1 1 1 1 0 0 0 1 0 0 起点位置(1,1)的值是1但是终点位置(n,m)的值是0,但是在一…
题目描述 农夫FJ的农场是一个N*N的正方形矩阵(2\le N\le 5002≤N≤500),每一块用一个字母作标记.比如说: ABCD BXZX CDXB WCBA 某一天,FJ从农场的左上角走到右下角,当然啦,每次他只能往右或者往下走一格.FJ把他走过的路径记录下来.现在,请你把他统计一下,所有路径中,回文串的数量(从前往后读和从后往前读一模一样的字符串称为回文串). 输入输出格式 输入格式: 第一行包括一个整数N,表示农场的大小,接下来输入一个N*N的字母矩阵. 输出格式: Please…
描述 Given an N×N grid of fields (1≤N≤500), each labeled with a letter in the alphabet. For example: ABCD BXZXCDXBWCBA Each day, Susa walks from the upper-left field to the lower-right field, each step taking her either one field to the right or one fi…
题目链接 http://codeforces.com/contest/1205/problem/C 题解 菜鸡永远做着变巨的梦 然而依然连div1BC题都不会做 要是那天去打cf怕是又要1题滚粗了.... 首先第一步显然是对于所有\(i+j\)为偶数的点(下称"偶点")求出\(a_{i,j}\)的值,对于所有\(i+j\)为奇数的点(下称"奇点")求出它们之间的相对关系.也就相当于强行令\(a_{1,2}=x\)之后求出所有奇点是\(x\)还是\(x\ \text{…
题目链接 问题分析 首先可以想到,坐标和为奇数的位置可以被唯一确定.同样的,如果假定\((1,2)\)是\(0\),那么坐标和为偶数的位置也可以被唯一确定.这样总共使用了\(n^2-3\)次询问. 那么接下来就需要在\(3\)步之内判断是否要翻转坐标和为偶数的位置. 如果仅仅只是这样简单的判断: printf( "? 1 1 2 3\n" ); fflush( stdout ); int x; scanf( "%d", &x ); if( x == 1 &a…