这段时间在NOI题库上刷了刷题,来写点心得和题解

一、寻找平面上的极大点

2704:寻找平面上的极大点

总时间限制: 
1000ms 
内存限制: 
65536kB
描述
在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x>=a,y>=b;
用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。
给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。
编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。
本题规定:n不超过100,并且不考虑点的坐标为负数的情况。
输入
输入包括两行,第一行是正整数n,表示是点数,第二行包含n个点的坐标,坐标值都是整数,坐标范围从0到100,输入数据中不存在坐标相同的点。
输出
x轴坐标最小到大的顺序输出所有极大点。
输出格式为:(x1,y1),(x2,y2),...(xk,yk)
注意:输出的每个点之间有","分隔,最后一个点之后没有",",少输出和多输出都会被判错
样例输入
5
1 2 2 2 3 1 2 3 1 4
样例输出
(1,4),(2,3),(3,1)
提示
这个题一看水水的贪心( ⊙ o ⊙ )!于是开心的去刷代码去了。。。
大体思路就是:先读入所有的坐标,然后从大到小排序(此处不排序会使后面的处理无法最优),然后顺序扫描一遍所有的点,然后与当前的极大点进行比较,如果被覆盖就continue,否则加入存极大点的数组,由于之前从大到小排序,所以不会出现什么问题,最后倒序输出就好了O(∩_∩)O~~
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;struct data{int x,y;};int cmp(data x,data y){if (x.x>y.x)return 0;elseif (x.x==y.x){if (x.y>y.y)return 0;elsereturn 1;}elsereturn 1;}int cmp1(data x,data y){if (x.x>y.x)return 1;elseif (x.x==y.x){if (x.y>y.y)return 1;elsereturn 0;}elsereturn 0;}
int main()
{int n;int i,j; bool f=false;data d[1000]={0};data dandan[1000]={0};int a,b;int k=0;scanf("%d",&n);for (i=1;i<=n;i++)scanf("%d%d",&dandan[i].x,&dandan[i].y);sort(dandan+1,dandan+n+1,cmp1);
//    for (i=1;i<=n-1;i++)
//   cout<<"("<<dandan[i].x<<","<<dandan[i].y<<")"<<",";
//  cout<<"("<<dandan[n].x<<","<<dandan[n].y<<")"<<endl;for (i=1;i<=n;i++){a=dandan[i].x;b=dandan[i].y;f=false;for (j=1;j<=k;j++)if (d[j].x>=a && d[j].y>=b){f=true;break;}if (f)continue;else{k++;d[k].x=a;d[k].y=b;}}sort(d+1,d+k+1,cmp);for (i=1;i<=k-1;i++)cout<<"("<<d[i].x<<","<<d[i].y<<")"<<",";cout<<"("<<d[k].x<<","<<d[k].y<<")";
return 0;
}

由于当时编程时光顾着看旁边的蛋神颓Agar了,分心代码写的有点残。。。

二、电池的寿命
这个题比刚刚就恶心了点,但是代码也短了,果然是短小啊;-)

2469:电池的寿命

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms 
内存限制: 
65536kB
描述

小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电。为了保证能够长时间玩游戏,他买了很多5号电池,这些电池的生产商不同,质量也有差异,因而使用寿命也有所不同,有的能使用5个小时,有的可能就只能使用3个小时。显然如果他只有两个电池一个能用5小时一个能用3小时,那么他只能玩3个小时的游戏,有一个电池剩下的电量无法使用,但是如果他有更多的电池,就可以更加充分地利用它们,比如他有三个电池分别能用3、3、5小时,他可以先使用两节能用3个小时的电池,使用半个小时后再把其中一个换成能使用5个小时的电池,两个半小时后再把剩下的一节电池换成刚才换下的电池(那个电池还能用2.5个小时),这样总共就可以使用5.5个小时,没有一点浪费。

现在已知电池的数量和电池能够使用的时间,请你找一种方案使得使用时间尽可能的长。

输入

输入包含多组数据。每组数据包括两行,第一行是一个整数N (2 ≤ N ≤ 1000),表示电池的数目,接下来一行是N个正整数表示电池能使用的时间。

输出

对每组数据输出一行,表示电池能使用的时间,保留到小数点后1位。

样例输入
2
3 5
3
3 3 5
样例输出
3.0
5.5
大体思路:先计算所有的电池的总量,然后进行比较,如果总量减去最大的那个,比最大的小,就可以用所有小的和最大的打车轮战,来耗最大的电量,这时最大的用电量就是  总和减去最大的值;如果比最大的大,那么用电量就是总量的一半,此处是可以证明的,但就不多提了
下面看代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
int dc[1100]={0};
int main()
{int n;while (scanf("%d",&n)==1){int i;int sum=0;double ans=0.0;//cin>>n;memset(dc,0,sizeof(dc));for (i=1;i<=n;i++){scanf("%d",&dc[i]);sum+=dc[i];}sort(dc+1,dc+n+1);if (sum-dc[n]>dc[n])ans=sum*1.0/2.0;elseans=sum*1.0-dc[n]*1.0;printf("%0.1f\n",ans);}return 0;
}

三、最大子矩阵和

1768:最大子矩阵

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms 
内存限制: 
65536kB
描述
已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。

比如,如下4 * 4的矩阵

0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2

的最大子矩阵是

9 2
-4 1
-1 8

这个子矩阵的大小是15。

输入
输入是一个N * N的矩阵。输入的第一行给出N (0 < N <= 100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵中的N2个整数,整数之间由空白字符分隔(空格或者空行)。已知矩阵中整数的范围都在[-127, 127]。
输出
输出最大子矩阵的大小。
样例输入
4
0 -2 -7 0 9 2 -6 2
-4 1 -4  1 -18  0 -2
样例输出
15
然而,看到这个题出现在贪心中,其实,其实我是拒绝的,所以我还是用了个DP,因为不会用贪心做他。。。
然而这个题其实和最大子矩阵和有异曲同工之妙,就是稍稍复杂了些
闲话少说,代码:
#include<iostream>
#include<cstring>
using namespace std;
int a[101][101],b[101];
int dp(int a[],int n)
{int sum=0,max=0;for (int i=1; i<=n; i++){sum+=a[i];if (sum<0)sum=0;if (sum>max)max=sum;}return max;
}
int main()
{int i,j,n;cin>>n;for (i=1; i<=n; i++)for (j=1; j<=n; j++)cin>>a[i][j];int sum=0,max=0;for (i=1; i<=n; i++)for (j=i; j<=n; j++){memset(b,0,sizeof(b));for (int l=1; l<=n; l++)for (int k=i; k<=j; k++)b[l]+=a[k][l];sum=dp(b,n);if (max<sum)max=sum;}cout<<max<<endl;return 0;
}  

以后还会刷的,顺便提一句,我发现高中时间好紧( ⊙ o ⊙ )啊!不努力不行啊,╮(╯▽╰)╭

转载于:https://www.cnblogs.com/DaD3zZ-Beyonder/p/5346283.html

NOI题库刷题日志 (贪心篇题解)相关推荐

  1. 北邮oj题库刷题计划(更新ing)

    北邮oj题库刷题计划(更新ing) 83. A + B Problem 84 Single Number 85. Three Points On A Line 120 日期 121 最值问题 122 ...

  2. 基于科目分类的题库刷题小程序系统

    基于科目分类的题库刷题小程序系统 使用场景 在线答题,是一种在线练习.考试.测评的智能答题系统,适用于企业培训.学生练习.评测考核.知识竞赛.模拟考试等场景. 简介 考研刷题小程序云开发实战.题库小程 ...

  3. 大学计算机基础-题库刷题-精选

    题库刷题: 写在前面: 这个是我准备应对学校转专业考试而刷的题库, 也是大学计算机的题库,同样适用于大学计算机这门课的期末考试. 精选了一些重要的题目. 目录 题库刷题: 写在前面: 题目1:(接下来 ...

  4. BFE——JS题库刷题经历

    我原先以为我的js虽然学的不算好,但也绝对还行.直到我在这个题库里写了两道题... 怎么说呢,这个题库里的题是真的好,可以让我们以刷题的方式掌握很多js平时注意不到的知识点,下面是我这段时间刷题的经历 ...

  5. 大一python题库刷题训练_python实现合工大试题库自动刷题

    1 #coding= utf-8 2 importre3 importrequests4 importxlrd5 6 save_url = "http://tkkc.hfut.edu.cn/ ...

  6. 掌中题库刷题神奇微信小程序介绍

    微信小程序无需安装.便于传播,安卓与ios平台都可以使用. "掌中题库"微信小程序,针对个人或单位用户进行复习备考.业务学习.党建活动.继续教育而设计. 程序功能实用,界面简约,尤 ...

  7. 自建题库刷题小程序,添加更丰富的练习设置,模糊选项、自动切题、夜间模式、答题音效、答对移除错题、练习完交卷后统计正确率

    土著刷题微信小程序v1.6,主要迭代练习设置,开发了较为实用的设置,练习交卷后,对练习结果进行统计本次练习的正确率,并且列出本次答错的试题,接下来就逐一介绍v1.6主要迭代开发的功能. 模糊选项设置 ...

  8. pythone二级题库 + 刷题软件 (超详细解析,看完必过) 第十一套

    刷题软件(模拟python二级考试) 操作题刷题软件 1.计算机完成一条指令所花费的时间称为一个(). A.指令周期 B.存取周期 C.执行速度 D.执行时序 一般把计算机完成一条指令所花费的时间统称 ...

  9. pythone二级题库 + 刷题软件 (超详细解析,看完必过) 第十套

    刷 题软件(模拟python二级考试) 操作题刷题软件 1.某系统结构图如下图所示,该系统结构图的深度是()<img src=10-1-3> A.4 B.2 C.3 D.1 本题考查知识点 ...

最新文章

  1. 【Ubuntu】使用过的ubuntu工具记录
  2. c#如何实现在两个窗体(Form)间传输数据或变量
  3. JavaScript实现按位的isPowerOfTwo算法(附完整源码)
  4. Vi编辑器的使用方法
  5. mysql 单块读 多块读_dbfilesequentialread等待事件
  6. 武汉新增职位数同比下降44.25%,这些企业却在猛招人,“来多少,要多少”
  7. 海南航空宁波到重庆的变态机票
  8. Erlang 之父两点忠告:不要在疲惫时写代码、先思考再编程
  9. xsehll不能删除字符的解决方案
  10. 怎么用spss做冗余分析_【攻略】手把手教你怎么用SPSS做统计分析
  11. 转载:Gabor 特征总结
  12. linux温度监控软件,PSensor:Linux下硬件温度监控软件
  13. 论文译文——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  14. Linux系统裁剪与定制
  15. Android GB905协议详解
  16. YOLOF训练自己的数据集(目标检测,cvpods版本)
  17. Eigen类型与ROS中tf相关消息类型进行相互转换工具
  18. SSL 1580——泽泽在埃及
  19. 《飞机大战》(有注释 附源码)
  20. 火狐浏览器最新版的比较

热门文章

  1. linux下有图形开发工具,从Linux图形工具制作图像幻灯片
  2. WAdmin 开源啦!!!
  3. xp锁定计算机快捷方式,XP系统怎么锁定界面快捷方式到任务栏
  4. 各种神经网络的应用领域,脉冲神经网络发展前景
  5. 什么是域名被墙?域名被墙了如何解决?
  6. YaCy—基于P2P的分布式开源搜索引擎
  7. 获取本小程序的appID
  8. ThinkPHP框架漏洞总结
  9. 鱼c论坛 python课后题pdf,我与python的第一次亲密接触_课后测试题及答案.pdf
  10. 怎样恢复安装计算机,计算机安装双系统后如何修复系统引导 修复系统引导的方法...