NENU ACM 2014-05-18 A题 && NENU 1081 Lucky

A - Lucky
Time Limit:1000MS     Memory
Limit:
131072KB     64bit IO
Format:
%lld & %llu

Submit Status Practice NENU
1081

Description

We say a n*m matrix r is lucky
if and only if for every i, j, k, l(0 <= i < k < n, 0 <= j < l
< m) r[i][j] + r[k][l] <= r[i][l] + r[k][j], and now you need to decide
whether a matrix is luck.

Input

The input contains several
test cases. The first line of each case contains two positive integers n and m(0
< n, m <= 2000), And then follow n lines and each line contains m
integers. All of the integers are no more than 10^9 and no less than
-10^9.

Output

If the matrix is lucky, please
print “yes” without double quotation and if not print “no” without double
quotation.

Sample Input

1 1
626
3 4
1382 1409 97 606
1548 1708 1973 1114
1626 381 75 799

Sample Output

yes
no

让人egg-pain的A题,我本来的思路是用两层循环找到一个点,再用两层循环找到另一个点,以这两个点为对角点建立一个矩形,依次判断条件 r[i][j]
+ r[k][l] <= r[i][l] + r[k][j]
是否成立,不过我很快发现这样的算法复杂度高达10^12(xiejj也用事实证明了暴搜行不通)。后来从AC的代码中发现了一条诡异的性质:如果一个大矩形的每个子矩形都满足上述条件,那么这个大矩形本身也满足这个条件,我自己也证明出来了,见页面底部。所以只需要用两层循环找到一个点,以这个点做单位矩阵,对每个单位矩阵判断就可以了。唉,不提了,说多了都是泪。。。。。AC过的代码如下:


 1 #include <iostream>
2 #include <string>
3 #include <algorithm>
4 #include <cstdio>
5 #include<math.h>
6 #include<cstdlib>
7 using namespace std;
8 int r[2010][2010];
9 bool flag=1;
10 int main() {
11 int n,m,i,j,k,l;
12 while(~scanf("%d%d",&n,&m)) {
13 if(n==0&&m==0) break;
14 for(i=0; i<n; i++)
15 for(j=0; j<m; j++)
16 scanf("%d",&r[i][j]);
17 for(i=0,k=i+1;k<n&&i<n; i++)
18 for(j=0,l=j+1;flag==1&&l<m&&j<m; j++)
19 //for(k=i+1; k<n; k++)
20 // for(l=j+1; flag==1&&l<m; l++)
21 if(r[i][j] + r[k][l] > r[i][l] + r[k][j]) flag=0;
22
23 if(flag==1) printf("yes\n");
24 else printf("no\n");
25 }
26
27
28 return 0;
29 }

性质证明:

x1+x5<=x2+x4 ...........(1)

x2+x6<=x3+x5............(2)

x4+x8<=x5+x7............(3)

x5+x9<=x6+x8............(4)

(1)+(2)+(3)+(3)得:

x1+x9<=x3+x7

即大矩阵满足性质,得证

这是大矩阵为正方形的情况,当其为矩形时,同理可证

时间: 2024-07-28 22:15:55

NENU ACM 2014-05-18 A题 && NENU 1081 Lucky的相关文章

[2014.05.18]文本编码转换专家v2.0

软件名称:文本编码转换专家最新版本:v2.0操作系统:XP/2003/Win7/Win2008软件介绍:文本编码转换专家,界面简洁易用,功能强大实用.自动识别文件编码,有效转换成目标编码.真正的多线程管理,效率更高,可控性更好. 下载地址:http://url.cn/RCbqB2 淘宝购买地址:http://item.taobao.com/item.htm?spm=a1z10.1.w4004-6234656621.4.pyRjHw&id=39050877481 [2014.05.18]文本编码转

我的福州之行——2014.05.28

在回程的动车上面,感觉这次行程还是让我挺疲惫的. 这次福州比赛只有我们一支外省队伍参赛.我还是挺好奇学院为什么让我们公费过来的,毕竟不同于acm比赛有着悠久的历史和集中式的训练.这应该是我们学校初次以学校名义接触这类比赛. 于我,安全只是一个小兴趣,并没有花太多时间在上面.另外一个师兄也是被另一个队友W召唤过来的,他们俩是真的有在做网络安全的.起初我就类似于陪人过来玩玩的心情. 对于带队老师,我就不吐槽了,人挺好,但是思维跟我不在一个层面上,总的来说,喜欢凑热闹,喜欢形式.按照妹子说:那是参与度

BNUOJ 34985 Elegant String 2014北京邀请赛E题 矩阵快速幂

题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=34985 题目大意:问n长度的串用0~k的数字去填,有多少个串保证任意子串中不包含0~k的某一个全排列 邀请赛上A的较多的一道题,比赛的时候死活想不出,回来之后突然就想通了,简直..... = =! 解题思路: 对于所有串我们都只考虑末尾最多有多少位能构成全排列的一部分(用l来表示),即最多有多少位不重复的数字出现,将问题转化为求末尾最多有k位能构成全排列的串的总数量 假设k为5,有一个

2014北京邀请赛E题-矩阵快速幂

题意:长度为n(1<=n<=10^18)的并且任意连续子串都不是0-k(1<=k<=9)的一个排列的字符串有多少种. 解法:矩阵快速幂.dp[i][j]表示i长度最后连续j个不同(即最后j个无重复,最后j+1个有重复)的字符串的个数.状态选好很重要.设计状态时最重要考虑是唯一性和可传递性,比赛时明明知道肯定是矩阵快速幂,但是一直没想到这个状态表示,自己设计的自己都不会转移. dp[i][j]有了后,后边加一个字符,这个字符可以是j之内的任意一个,也可以是j以外的,这样枚举每种情况,

acm集训训练赛A题【签到题】

一.题目 Description After winning gold and silver in IOI 2014, Akshat and Malvika want to have some fun. Now they are playing a game on a grid made of nhorizontal and m vertical sticks. An intersection point is any point on the grid which is formed by t

“玲珑杯”ACM比赛 Round #18 A 暴力水 C dp

“玲珑杯”ACM比赛 Round #18 计算几何你瞎暴力 题意:如果从一个坐标为 (x1,y1,z1)的教室走到(x2,y2,z2)的距离为 |x1−x2|+|y1−y2|+|z1−z2|.那么有多少对教室之间的距离是不超过R的呢? tags:坐标范围很小,瞎暴力 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring>

在MyEclipse配置自己安装的Tomcat(2014.08.18)

今天因为要在tomcat下运行一个java项目,第一次嘛,遇到了不少问题,总结分享一下: 第一次,我直接将 MyEclipse 生成的项目放到 tomcat 安装目录的 webapps 目录下,运行出现404,无法访问. 然后想了想,发现这是个错误的做法.应该先通过 MyEclipse 将项目部署到 Tomcat 下: 然后, MyEclipse 自带了 tomcat,我要配置自己安装的 TomCat : (请看参考资料:http://jingyan.baidu.com/article/4853

Sdut 2108 Alice and Bob(数学题)(山东省ACM第四届省赛D题)

题目地址:sdut 2608 Alice and Bob Alice and Bob Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Alice and Bob like playing games very much.Today, they introduce a new game. There is a polynomial like this: (a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*....

BNUOJ 34985 Elegant String 2014北京邀请赛E题 动态规划 矩阵快速幂

Elegant String Time Limit: 1000msMemory Limit: 65536KB 64-bit integer IO format: %lld      Java class name: Main We define a kind of strings as elegant string: among all the substrings of an elegant string, none of them is a permutation of "0, 1,-, k

2014 BNU 邀请赛E题(递推+矩阵快速幂)

Elegant String 题意:给定一个字符串,由0-k数字组成,要求该串中,子串不包含0-k全排列的方案数 思路:dp[i][j]表示放到i个数字,后面有j个不相同,然后想递推式,大概就是对应每种情况k分别能由那几种状态转移过来,在纸上画画就能构造出矩阵了,由于n很大,所以用快速幂解决 代码: #include <stdio.h> #include <string.h> const long long MOD = 20140518; int t; long long n; i