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 ...
随机推荐
- 你自认为理解了JavaScript?
关于Dmitry Baranovskiy 的博客中一篇文章(http://dmitry.baranovskiy.com/post/91403200),其中有五段小代码,用来测试是否理解 JavaScr ...
- 在线自动下载最新版本jquery
<script src="http://code.jquery.com/jquery-latest.js">
- 【转载】Web应用工作原理
问题描述: Web应用工作原理 问题解决: 参考资料:http://blog.csdn.net/lcore/article/details/8964642 ...
- asp.net 创建文字特效
相信word 中的 艺术字 功能大家都不陌生.今天, 我们就利用C#来制作几款自己的艺术字, 可能会对我们了解字体图像的制作原理有一些帮助. 至于有没有使用价值我保持沉默. 一. 投影效果 程序运行效 ...
- js弹出图片原图效果
1.将js方法独立出来common.js function openwin(src){ var basePath = document.getElementById("basePath&qu ...
- Python - 装饰器使用过程中的误区
曾灵敏 - APRIL 27, 2015 装饰器基本概念 大家都知道装饰器是一个很著名的设计模式,经常被用于AOP(面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,Web权限校验, C ...
- 翻译 - 元编程动态方法之public_send
李哲 - MAY 20, 2015 原文地址:Metaprogramming Dynamic Methods: Using Public_send 作者:Friends of The Web的开发者V ...
- Find the smallest number whose digits multiply to a given number n
Given a number ‘n’, find the smallest number ‘p’ such that if we multiply all digits of ‘p’, we get ...
- HDU 2669 Romantic(扩展欧几里德, 数学题)
题目 //第一眼看题目觉得好熟悉,但是还是没想起来//洪湖来写不出来去看了解题报告,发现是裸的 扩展欧几里得 - - /* //扩展欧几里得算法(求 ax+by=gcd )//返回d=gcd(a,b) ...
- POJ 1006 Biorhythms (中国剩余定理)
在POJ上有译文(原文右上角),选择语言:简体中文 求解同余方程组:x=ai(mod mi) i=1~r, m1,m2,...,mr互质利用中国剩余定理令M=m1*m2*...*mr,Mi=M/mi因 ...