1048: [HAOI2007]分割矩阵】的更多相关文章

1048: [HAOI2007]分割矩阵 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 623  Solved: 449[Submit][Status][Discuss] Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每次分割都只能沿着数字间的缝隙进行)原矩阵中每一位置上有一个分值,…
题目链接:BZOJ - 1048 题目分析 感觉这种分割矩阵之类的题目很多都是这样子的. 方差中用到的平均数是可以直接算出来的,然后记忆化搜索 Solve(x, xx, y, yy, k) 表示横坐标范围 [x, xx], 纵坐标范围 [y, yy] 的矩阵切成 k 块的最小 sigma((Vi - Ave)^2) . 然后再递归将矩阵分得更小,直到 k 为 1 的时候直接返回相应的值. 代码 #include <iostream> #include <cstdlib> #incl…
http://www.lydsy.com/JudgeOnline/problem.php?id=1048 题意:给出一个a×b(a,b<=10)的矩阵,带一个<=100的权值,现在要切割n-1次变成n个矩形(n<=10),求 $$\sqrt{\frac{1}{n}\sum_{i=1}^{n}(sum[i]-\mu)}, \mu = \frac{\sum_{i=1}^{n} sum[i]}{n}, sum[i]表示矩阵的和$$ 的最小值 #include <cstdio> #i…
Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每次分割都只能沿着数字间的缝隙进行)原矩阵中每一位置上有一个分值,一个矩阵的总分为其所含各位置上分值之和.现在需要把矩阵按上述规则分割成n个矩阵,并使各矩阵总分的均方差最小.请编程对给出的矩阵及n,求出均方差的最小值.Input 第一行为3个整数,表示a,b,n(1Output 仅一个数…
Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1184  Solved: 863[Submit][Status][Discuss] Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每次分割都只能沿着数字间的缝隙进行)原矩阵中每一位置上有一个分值,一个矩阵的总分为其所含各位置上分值之和.…
http://www.lydsy.com/JudgeOnline/problem.php?id=1048 #include<cmath> #include<cstdio> #include<algorithm> using namespace std; ][]; int n,m,k; double ans=1e9; double average; ][][][][]; ][][][][]; double dfs(int xl,int yl,int xr,int yr,i…
[BZOJ1048][HAOI2007]分割矩阵 题面 bzoj 洛谷 题解 \(dp[a][b][c][d][num]\)表示将矩形\((a,b,c,d)\)分成\(num\)个的最小方差,然后转移即可 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> #i…
P2217 [HAOI2007]分割矩阵 题目描述 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每次分割都只能沿着数字间的缝隙进行) 原矩阵中每一位置上有一个分值,一个矩阵的总分为其所含各位置上分值之和.现在需要把矩阵按上述规则分割成n个矩阵,并使各矩阵总分的均方差最小. 请编程对给出的矩阵及n,求出均方差的最小值. 输入输出格式 输入格式: 第一行为3…
题目描述 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每次分割都只能沿着数字间的缝隙进行) 原矩阵中每一位置上有一个分值,一个矩阵的总分为其所含各位置上分值之和.现在需要把矩阵按上述规则分割成n个矩阵,并使各矩阵总分的均方差最小. 请编程对给出的矩阵及n,求出均方差的最小值. 输入输出格式 输入格式: 第一行为3个整数,表示a,b,n(1<a,b<=1…
Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个), 这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每次分割都只能沿着数字间的缝隙进行) 原矩阵中每一位置上有一个分值,一个矩阵的总分为其所含各位置上分值之和. 现在需要把矩阵按上述规则分割成n个矩阵,并使各矩阵总分的均方差最小.请编程对给出的矩阵及n,求出均方差的最小值. Input 第一行为3个整数,表示a,b,n(1<a,b<=…
标准差=√(Σ(xi-xba)2/n)=Σ(xi)2+xba*n-2*xba*sum.只需最小化每个分割出来的矩阵的平方和即可. #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> using namespace std; #define INF 2000000000 typedef double db; int mem[11][11][11][11][11],a[11…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1048 题解:搞清题意之后来个记忆化爆搜就行了. 代码: #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> #include<iostream> #include<vector> #includ…
发现最近好少写博客啊(其实是各种摆去了) 更一点吧 这道题要求最小化均方差,其实凭直觉来说就是要使每个块分的比较均匀一点,但是单单想到想到这些还是不够的, 首先f[i][j][k][l][t]表示以(i,j)为左上角,(k,l)为右下角,一共分割的t次的矩形的最小xx, 其中xx是某个与最小均方差挂钩的东西, 通常这种要求推式子的题目都要从小的情况推广到所有情况. 这道题也是一样的, 对于一个被分为x1和x2的矩形而言(分割了一次),用X表示平均数, 那么X=权值和/块数, 那么方差为:[(X…
水题盛宴啦啦啦……做起来真的极其舒服,比某些毒瘤题好太多了…… 数据范围极小 --> 状压 / 搜索 / 高维度dp:观察要求的均方差,开始考虑是不是能够换一下式子.我们用\(a_{x}\)来表示第 \(x\) 个矩阵的总值,则式子为: \(ans = sqrt \frac{{\left ( \sum_{1}^{n} a_{x} - \bar{x} \right )^2}}{n}\) 转化一下,化成: \(ans = sqrt \frac{{\left ( -n\bar{x}^2 + \sum_…
传送门 首先均方差公式: $\sigma = \sqrt{\sum_{i}^{K}\frac{(sum[i]-\bar{sum})^2}{n}}$ 其中 $\bar{sum}$ 为小矩阵的平均值,显然 $\bar{sum}=\frac{\sum_{i}^{K}sum[i]}{K}$ 所以就是要最小化 $(sum[i]-\bar{sum})^2$ 看到数据这么小,搜就完事了 直接 $dfs(xa,ya,xb,yb,k)$ 表示以 $(xa,ya)$ 为左下角,$(xb,yb)$ 为右上角的子矩阵内…
int n,m,tim; int mp[N][N], sum[N][N]; double ave,dp[N][N][N][N][N]; inline double DP(int a,int b,int c,int d,int t){ if(dp[a][b][c][d][t]) return dp[a][b][c][d][t]; if(t == 1) return sqr((double)(sum[c][d] + sum[a-1][b-1] - sum[c][b-1] - sum[a-1][d])…
DP/记忆化搜索 暴力枚举分割方案?……大概是指数级的?大约是20!的方案= =? 但是我们看到a.b.n的范围都很小……所以不同的状态数只是$10^5$级别的,可以记忆化搜索求解 比较水的一道题…… /************************************************************** Problem: 1048 User: Tunix Language: C++ Result: Accepted Time:132 ms Memory:2544 kb *…
[BZOJ1048]分割矩阵(记忆化搜索,动态规划) 题面 BZOJ 洛谷 题解 一个很简单的\(dp\),写成记忆化搜索的形式的挺不错的. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> using namespace std; inline int read() {…
Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每次分割都只能沿着数字间的缝隙进行)原矩阵中每一位置上有一个分值,一个矩阵的总分为其所含各位置上分值之和.现在需要把矩阵按上述规则分割成n个矩阵,并使各矩阵总分的均方差最小.请编程对给出的矩阵及n,求出均方差的最小值. Input 第一行为3个整数,表示a,b,n≤10 Output 仅…
目录: 一.DP 二.图论 1.最短路 2.强连通分量 三.利用单调性维护 四.贪心 五.数据结构 1.并查集 六.数学 1.计数问题 2.数学分析 七.博弈 八.搜索 ////////////////////////////////// 一.DP: 1003: [ZJOI2006]物流运输trans (参见 http://hi.baidu.com/aekdycoin/item/88a8be0bf621c6314ac4a3d5 ) 首先对于某个时间段[i,j],我们可以轻松暴力删点以后求1-n的…
我实在是太弱了...不滚粗只能刷BZOJ了...这里来记录每天刷了什么题吧. 2015-8-13: 正式开始! 1030[JSOI2007]文本生成器                       | ac自动机+DP 1042 [HAOI2008]硬币购物                        | 容斥原理+背包 1045 [HAOI2008] 糖果传递                       | 数学+中位数 1047 [HAOI2007]理想的正方形               …
每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余方程 NOIP2007统计数字 NOIP2013火柴排队 NOIP2013花匠 2016.06.05 Uva 组装电脑 12124 - Assemble Uva 派 (Pie,NWERC 2006,LA 3635) 2016.06.19 Uva 网络(Network,Seoul 2007,LA 39…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
1048: [HAOI2007]分割矩阵 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1218  Solved: 890[Submit][Status][Discuss] Description 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每次分割都只能沿着数字间的缝隙进行)原矩阵中每一位置上有一个分值…
决定从头到尾干一波BZOJ!可能会写没几题就停下吧,但还是想学学新姿势啦. 1001. [BeiJing2006]狼抓兔子 即求 $(1, 1)$ 到 $(n, m)$ 的最小割.跑 dinic 即可. #include <bits/stdc++.h> using namespace std; inline int read() { , f = ; char ch = getchar(); ; ch = getchar(); } + ch - ; ch = getchar(); } retur…
BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2007]轮状病毒:找规律 + 高精: [BZOJ1003][ZJOI2006]物流运输:最短路 + DP: [BZOJ1004][HNOI2008]Cards:Burnside 引理 + DP: [BZOJ1005][HNOI2008]明明的烦恼:prufer编码 + 高精: [BZOJ1007][…
2021.11.02 eleveni的水省选题的记录 因为eleveni比较菜,所以eleveni决定从绿题开始水 --实际上菜菜的eleveni连绿题都不一定能水过/忍不住哭了 [P2217 HAOI2007]分割矩阵 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题看着像dfs,实际上就是dfs+dp #include<cstdio> #include<iostream> #include<algorithm> #include<cst…
No.1. 初始化状态 No.2. 合并多个向量为一个向量 No.3. 合并多个矩阵为一个矩阵 No.4. 借助vstack和hstack实现矩阵与向量的快速合并.或多个矩阵快速合并 No.5. 分割向量 No.6. 分割矩阵 No.7. 使用vsplit和hsplit对矩阵进行快速垂直分割及水平分割 No.8. 分割的应用:从矩阵中抽出最后一列,然后将其转化成向量…
常量: np.pi π 创建矩阵数组 import numpy as np # array=np.array([[1,2,3],[5,6,7]]) #定义一个2行3列的矩阵数组.2行=2维 # print(array.ndim) #返回矩阵数组的维数 # print(array.shape) #返回矩阵数组的维数和列数.(2, 3) # print(array.size) #返回矩阵数组的元素总个数 # # array1=np.array([[1,2,3],[5,6,7]],dtype=np.i…
1000-1009 1000A+B Problem 这个还要写??? 1001 狼抓兔子 平面图最小割转化为对偶图最短路 #include<bits/stdc++.h> #define id(i , j , k) ((k) * (N - 1) * (M - 1) + ((i) - 1) * (M - 1) + (j)) #define PII pair < int , int > #define st first #define nd second //This code is w…