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 ...
随机推荐
- 联想电脑win7旗舰版环境下的如何成功配置AppServ
联想电脑win7旗舰版环境下的如何成功配置AppServ 毕业设计中需要用Mysql数据库,并且想找一个方便Mysql数据库编程的开发工具,百度搜索了一下,AppServ集成环境安装包能快速搭建环境. ...
- Weblogic环境下hibernate、antlr类加载冲突问题分析及解决方案
公司应用项目在客户部署时经常遇到此类问题,为避免实施部署时增加配置量,花了点时间找到了此问题的终极解决办法(方案二.修改org.hibernate.hql.ast.HqlLexer的源代码).在此进行 ...
- appium for windows 环境搭建
服务环境: 1 安装Nodejs 下载nodejs安装包(http://nodejs.org/download/)安装 测试安装是否成功:运行cmd,输入node -v 2 安装android的SKD ...
- 利用doScroll在IE浏览器里模仿DOMContentLoaded
稍微了解一点框架的事件绑定的都知道 window.onload 事件需要在页面所有内容(包括图片.flash.iframe等)加载完后,才执行,但往往我们更希望在 DOM 一加载完就执行脚本,而各大框 ...
- CocoaPods最佳实践探讨
近期在项目中首次使用了CocoaPods.从软件工程的角度来看,我对目前常见的CocoaPods使用方法有些意见,建议做一些改进.先说一下我建议的最佳实践,后面再分析为什么要这样做.并且希望大家根据自 ...
- 06.Hibernate实体类生命周期
前言:Session接口是Hibernate向应用程序提供的操作数据库的主要接口,它提供了基本的增删查改方法,而且Session具有一个缓存它是Hibernate的一级缓存.站在持久化层的角度 ...
- hdu 1043 Eight 经典八数码问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 The 15-puzzle has been around for over 100 years ...
- .NET设计模式(5):工厂方法模式(Factory Method)(转)
工厂方法模式(Factory Method) ——.NET设计模式系列之五 Terrylee,2004年1月2日 概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实 ...
- 如何理解JS项目
JS API(DOM/PhoneGap/Cordova/NodeJS/Library/Android/MongoDB....)最基础,可以看懂一行代码. -------> JS OOP, JS语 ...
- Javascript 图片延迟加载之理论基础
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...