SPOJ 274 Johnny and the Watermelon Plantation(TLE)
O(n^3)的时间复杂度,改了半天交了二三十遍,TLE到死,实在没办法了……
跪求指点!!!
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm> using namespace std; const int MAXN = ;
const int INF = << ; int mat[MAXN][MAXN];
int SubSum[MAXN][MAXN];
int tempS[MAXN];
int N, K;
int maxI, maxJ;
int hang[MAXN], cntH;
int lie[MAXN], cntL; //预处理左上角[1,1]右下角[i,j]的所有矩阵和
void init()
{
memset( SubSum, , sizeof(SubSum) );
for ( int i = ; i <= maxI; ++i )
{
int tmps = ;
for ( int j = ; j <= maxJ; ++j )
{
tmps += mat[i][j];
SubSum[i][j] = SubSum[i - ][j] + tmps;
}
}
return;
} void solved()
{
int ans = INF;
for ( int i = ; i < cntH; ++i ) //枚举矩形上边界
for ( int j = i; j < cntH; ++j ) //枚举矩形下边界
{
int stL = hang[i], edL = hang[j];
tempS[] = ;
int st = ;
//扫描法,参考刘汝佳训练指南p.48 LA 2678
for ( int m = ; m <= cntL; ++m )
{
int k = lie[m - ];
tempS[m] = SubSum[edL][k] - SubSum[edL][k-] - SubSum[stL-][k] + SubSum[stL-][k-];
tempS[m] += tempS[m - ];
if ( tempS[st - ] > tempS[m] - K ) continue;
while ( tempS[st] <= tempS[m] - K ) ++st;
ans = min( ans, ( lie[m - ] - lie[st - ] ) * ( edL - stL ) );
}
}
printf( "%d\n", ans );
return;
} int main()
{
//freopen( "in.txt", "r", stdin );
int T;
scanf( "%d", &T );
while ( T-- )
{
memset( mat, , sizeof(mat) );
scanf( "%d%d", &N, &K );
maxI = ;
maxJ = ;
cntL = , cntH = ;
bool flag = false;
for ( int i = ; i < N; ++i )
{
int x, y, f;
scanf("%d%d%d", &x, &y, &f );
hang[cntH++] = x; //行列离散化
lie[cntL++] = y;
maxI = max( maxI, x );
maxJ = max( maxJ, y );
mat[x][y] = f;
if ( f >= K ) //特殊情况,只覆盖一个点
{
flag = true;
}
} if ( N == || flag )
{
puts("");
continue;
} sort( hang, hang + cntH );
sort( lie, lie + cntL );
cntH = unique( hang, hang + cntH ) - hang;
cntL = unique( lie, lie + cntL ) - lie; init();
solved();
}
return ;
}
SPOJ 274 Johnny and the Watermelon Plantation(TLE)的更多相关文章
- Codeforces Round #647 (Div. 2) C. Johnny and Another Rating Drop(数学)
题目链接:https://codeforces.com/contest/1362/problem/C 题意 计算从 $0$ 到 $n$ 相邻的数二进制下共有多少位不同,考虑二进制下的前导 $0$ .( ...
- Codeforces 1361C - Johnny and Megan's Necklace(欧拉回路)
Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉这个题作为 D1C 还是蛮合适的-- 首先不难发现答案不超过 \(20\),所以可以直接暴力枚举答案并 check 答案是否 ...
- 刷题防止Time Limit Exceeded(TLE)技巧
1.C++ 不要使用cin,cout,该使用scanf和printf 2.Java 不要使用Scanner,改用BufferedReader 3.Python 在文件开始的地方加入 import ps ...
- 利用TLE数据确定卫星轨道(1)-卫星轨道和TLE
1.卫星轨道 太空中卫星和天体在各种引力的作用下都在一定的轨道中周期转动着,但实际的轨道是很复杂的,一般的项目也达不到那么精确的需求(其实精确的卫星参数数据也不可能随便公开的),所以采用一阶近似的开普 ...
- LeetCode(62)Unique Paths
题目 A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). ...
- 【LeetCode】696. Count Binary Substrings 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:暴力解法(TLE) 方法二:连续子串计算 日 ...
- 【SPOJ】Distinct Substrings/New Distinct Substrings(后缀数组)
[SPOJ]Distinct Substrings/New Distinct Substrings(后缀数组) 题面 Vjudge1 Vjudge2 题解 要求的是串的不同的子串个数 两道一模一样的题 ...
- 【SPOJ】QTREE6(Link-Cut-Tree)
[SPOJ]QTREE6(Link-Cut-Tree) 题面 Vjudge 题解 很神奇的一道题目 我们发现点有黑白两种,又是动态加边/删边 不难想到\(LCT\) 最爆力的做法,显然是每次修改单点颜 ...
- 【SPOJ】Count On A Tree II(树上莫队)
[SPOJ]Count On A Tree II(树上莫队) 题面 洛谷 Vjudge 洛谷上有翻译啦 题解 如果不在树上就是一个很裸很裸的莫队 现在在树上,就是一个很裸很裸的树上莫队啦. #incl ...
随机推荐
- TF-IDF与余弦相似性的应用(三):自动摘要
有时候,很简单的数学方法,就可以完成很复杂的任务. 这个系列的前两部分就是很好的例子.仅仅依靠统计词频,就能找出关键词和相似文章.虽然它们算不上效果最好的方法,但肯定是最简便易行的方法. 今天,依然继 ...
- word检视意见导出(VBA)
Private Sub CommandButton1_Click() 'Dim Cmt As Comment Dim excelApp As Object Dim xlsWbk, objWdApp A ...
- Cannot install ubuntu or other linux flavours on citrix Xen server
Citrix Xen sucks! When u try to install linux stuff on its Xen servers, u will get an error complain ...
- angular 嵌套实现树结构 ng-repeat ng-include
效果图 ang.html <!doctype html><html lang="en"><head> <meta charset=& ...
- 运用socket实现简单的服务器客户端交互
Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意 ...
- matrix_2015_1 138 - ZOJ Monthly, January 2015
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3844 第一个,n个数,每次操作最大数和最小数都变成他们的差值,最后n个数相 ...
- Android系统Recovery工作原理
Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作 http://blog.csdn.net/mu0206mu/article/d ...
- HDOJ 1398 Square Coins 母函数
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- 比较IE6的不同之处,与IE8 IE11 比较
文档申明为 <!DOCTYPE html> IE6或者IE特有的一些东西 1.盒子模型 IE6:(使用 !DOCTYPE 声明指定 standards-compliant 模式) mar ...
- wifidog源码分析 - 用户连接过程
引言 之前的文章已经描述wifidog大概的一个工作流程,这里我们具体说说wifidog是怎么把一个新用户重定向到认证服务器中的,它又是怎么对一个已认证的用户实行放行操作的.我们已经知道wifidog ...