2015-11-3-Training(for 2014th)

A:(hdu1081)

题意:

  求和最大的子矩阵

解决:

  先考虑一维数组,可以O(n)复杂度求出 和值最大的连续子序列。

  同理,对每一行维护前缀和,然后枚举从 l 列到 r 列,每行的 l 列到 r 列可以通过前缀和O(1)求出,然后对每行的 l 列和r 列之间的和值作为一维数组的元素,O(n)求出答案。

  总复杂度 :O(n3)

 1 #include <bits/stdc++.h>
 2
 3 const int MAXN = 133;
 4
 5 int n;
 6 int ma[MAXN][MAXN];
 7
 8 int main()
 9 {
10     while (~scanf("%d", &n)) {
11         for (int i = 1; i <= n; ++i) {
12             ma[i][0] = 0;
13             for (int j = 1; j <= n; ++j) {
14                 scanf("%d", &ma[i][j]);
15                 ma[i][j] += ma[i][j-1];
16             }
17         }
18         int res = -0x7fffffff;
19         for (int l = 1; l <= n; ++l) {
20             for (int r = l; r <= n; ++r) {
21                 int tmp = 0, ans = -0x7fffffff;
22                 for (int i = 1; i <= n; ++i) {
23                     int ele = ma[i][r] - ma[i][l-1];
24                     tmp += ele;
25                     ans = std::max(ans, tmp);
26                     if (tmp < 0) {
27                         tmp = 0;
28                     }
29                 }
30                 res = std::max(res, ans);
31             }
32         }
33         printf("%d\n", res);
34     }
35 }

B:(hdu1060)

题意:

  N^N的最左边一位数字

解决:

  A = lg(nn) = n * lg(n)

  则 10A = nn, 设p 为 A 的小数部分,则10p 的整数部分就是答案

C:(hdu1007)

题意:

  平面最近点对

解决:

  这个题目比较取巧,解法很多。

  可以用旋转卡壳,可以分治,也可以两次排序直接求

  有一点很重要的思想,如果两个点是平面最近点,则以这两个点为对角线的矩形中一定没有其他点。根据这个思想可以排序两次,用相邻点的距离维护最小值。

  复杂度:O(n*log(n))

D:(hdu4007)

题意:

  给定n个点,求边长为R的正方形最多可以框住多少点(可以在边框上)

解决:

  解法一:可以用扫描线,对每个点,以这个点为左下角点构造出一个矩形,则一共有1000个矩形,求个矩形面积交,线段树维护区间最大值即可。

  解法二:先对所有点按照横坐标排序,从左到右枚举点,作为矩形左边框的横坐标,二分出矩形框能框住的最右边的点。这些点的横坐标差值最大不超过R,将这些点的纵坐标放在一个数组里面,排序之后尺取法扫一遍。

  二者复杂度均为:O(n*log(n))

  

 1 #include <bits/stdc++.h>
 2
 3 struct Point{
 4     int x, y;
 5     bool operator < (const Point &tmp) const
 6     {
 7         return x < tmp.x;
 8     }
 9 }point[1000+10];
10
11
12
13 int n, R;
14 int t[1000+10];
15
16 int check(int l, int r)
17 {
18     int cnt = 0;
19     for (int i = l; i <= r; ++i)
20         t[++cnt] = point[i].y;
21     std::sort(t+1, t+1+cnt);
22     int i = 1, j = 1;
23     int res = 0;
24     int tmp = 0;
25     while (j <= cnt) {
26         if (t[j] - t[i] <= R) {
27             ++j;
28             ++tmp;
29         }
30         else {
31             ++i;
32             --tmp;
33         }
34         res = std::max(res, tmp);
35     }
36     return res;
37 }
38
39 int main()
40 {
41     while (~scanf("%d%d", &n, &R)) {
42         for (int i = 1; i <= n; ++i)
43             scanf("%d%d", &point[i].x, &point[i].y);
44         std::sort(point+1, point+1+n);
45         int res = 0;
46         for (int i = 1; i <= n; ++i) {
47             int l = i, r = n;
48             while (l <= r) {
49                 int mid = l + r >> 1;
50                 if (point[mid].x > point[i].x + R)
51                     r = mid - 1;
52                 else
53                     l = mid + 1;
54             }
55             res = std::max(res, check(i ,l-1));
56         }
57         printf("%d\n", res);
58     }
59 }

E:(hdu1176)

题意:

  天上会有n个馅饼掉下来,分别是在t时刻,x位置(0 <= x <= 10),人一开始在5位置,每时刻可以左移或者右移一个单位,求能接到馅饼最大值

解决:

  cake[t][x]为在t时刻x位置会有多少馅饼掉下来。

  dp[t][x] = max(dp[t-1][x-1], dp[t-1][x], dp[t+1][x]) + cake[t][x];

时间: 2024-10-12 09:16:58

2015-11-3-Training(for 2014th)的相关文章

2015.11.06 学习Ubuntu下常用命令

2015.11.06 学习Ubuntu下常用命令 1.关闭防火墙:ufw disable 2.开启防火墙:ufw enable 3.防火墙状态:ufw status 4.查看占用的端口:#lsof -i 5.查看某一个端口:#lsof -i:8080  或者是: #netstat -apn|grep 8080————接着:#ps -aux|grep 进程号 6.结束占用端口的进程:#killall 进程名 7.自己写一遍,记得牢!

2015 UESTC Winter Training #8【The 2011 Rocky Mountain Regional Contest】

2015 UESTC Winter Training #8 The 2011 Rocky Mountain Regional Contest Regionals 2011 >> North America - Rocky Mountain 开始时貌似是UVAlive挂了,无论交什么都WA,后来转战HDU 这次水题比较多,其中B题据说有更加高级的方法. G题WA了两发,才发现竟然没有输出Case!!! 未完成:D F H I J A - Iterated Difference 水题,模拟迭代即可

PCB设计软件CadSoft Eagle Professional v7.5 Multilingual +DownStream Products 2015.11

PCB设计软件CadSoft Eagle Professional v7.5 Multilingual Win64 1CDCadSoft Eagle Professiona是一款简单易用的印刷电路板设计软件,其中包含原理图编辑器.PCB编辑 器和自动布线器三个模块,方便设计者更方便操作.CadSoft Eagle Professiona支持中文版 DownStream Products 2015.11 1CD业界领先的PCB后处理解决方案CadSoft.Eagle.Professional.v7

分布式系统一周技术动态 2015.11.22

分布式系统实践 1. 直观理解paxos http://drmingdrmer.github.io/pdf/paxos-slide/paxos.pdf 要点: paxos协议一直以难以理解著称, 以至于该论文发表10年后才被人们认识到重要性, 这篇文章通过具体的例子来阐述paxos协议, 让人感觉到paxos协议不是发明出来的, 而是演化而来的, 让paxos协议不再那么难以理解了. 2. NoSQL数据库模型 http://darkhouse.com.cn/blog/4?hmsr=toutia

我关注的一周技术动态 2015.11.15

分布式系统实践 1. 一致性哈希算法 http://www.javaranger.com/archives/1781?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 要点: 一致性hash算法是解决分布式系统数据划分的有效手段, 解决了传统hash算法在机器扩容时需要大量移动数据的问题. 这篇文章对一致性hash算法做了简要的介绍, 如果你还不了解一致性hash算法, 那么请读读这篇文章吧 2. 巧用CAS解决数据一致

2015.11.04 学习 Ubuntu下安装gocode

2015.11.04 学习 Ubuntu下安装gocode 1.go get github.com/nsf/gocode,如果不成功 2.网页http://github.com/nsf/gocode,下载包,然后解压,解压后的文件名为gocode-master,修改为gocode. 3.复制gocode文件夹到go的安装目录~/go/github.com/nsf/gocode,(没有的话自行创建) 4.然后命令行执行go install github.com/nsf/gocode.确保安装目录的

2015.11.02 学习 Ubuntu下安装gosublime插件及其配置

2015.11.02 学习 Ubuntu下安装gosublime插件及其配置 1.Ctrl+shift+P 打开package control 输入pcip 回车 2.出现的框中输入gosublime,回车 3.preferences---package setting--gosublime--setting default 打开后在env{}中添加GOROOT和GOPATH 4.保存后全部复制到preferences---package setting--gosublime--setting

2015 UESTC Winter Training #6【Regionals 2010 &gt;&gt; North America - Rocky Mountain】

2015 UESTC Winter Training #6 Regionals 2010 >> North America - Rocky Mountain A - Parenthesis 给一个长度不多于1000的表达式,只包含小写字母,加法运算,省略乘号的乘法运算和括号,输出去掉多余括号的表达式 括号匹配可以使用栈操作,只有两种情况可以去掉这一对括号: 左括号的左边是左边界.加法符号.左括号,并且右括号右边是有右边界.加法符号.右括号 如果括号内没有加法运算(括号内的括号里,也就是下一级括

2015 UESTC Winter Training #7【2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest】

2015 UESTC Winter Training #7 2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest 据说这套题写出3题就是金牌水平了... Problem D. Group Stage 足球比赛,现在有n(2<= n <=100)支球队.要从中选拔m(1<= m <=n-1)支球队,每支球队互相比赛一场,即比赛n*(n-1)/2场,胜者得3分,平局各得1分.最后从大到小列出排名,如果有

http://blog.rainy.im/2015/11/25/extract-color-themes-from-images/

许多从自然场景中拍摄的图像,其色彩分布上会给人一种和谐.一致的感觉:反过来,在许多界面设计应用中,我们也希望选择的颜色可以达到这样的效果,但对一般人来说却并不那么容易,这属于色彩心理学的范畴(当然不是指某些伪神棍所谓的那种).从彩色图像中提取其中的主题颜色,不仅可以用于色彩设计(参考网站:Design Seeds),也可用于图像分类.搜索.识别等,本文分别总结并实现图像主题颜色提取的几种算法,包括颜色量化法(Color Quantization).聚类(Clustering)和颜色建模的方法(颜