"贪心"的考试
先来落实比较简单的T3,T4
T3 团结的队伍 team
题目描述
众所周知,长郡信息组是一个团结友爱的优秀团队。为了弘扬团队精神,践
行社会主义核心价值观,秉承朴实沉毅的校训,信息组决定外出游玩(。。。。。。)。
jump:“你们想怎么玩?”
xzy:“要组队一起走。”
XYK:“我喜欢 2 个人组一队。”
LCF:“我太犇了,我要一个人走。”
llg:“Please call me Captain Farmer. I ‘ll lead the way ~”
LRH:“jump is a code farmer.”
dyc:“我要跟遥遥一起走~”
jump:“那我就写一个程序来帮你们分组~”
假设 cj 中学有 n 名 oier,每个人都有一个被称为“犇气”的数值,我们需要为
出去游玩的 cjoier 进行组队,每支队伍最多两个人(不要问我为什么是两个人)。
但是科学家发现,如果两只神犇呆在一起,他们的“犇气”就会发生剧烈的化学反
应,威胁世界和平。为了世界和平与中国的可持续发展,每支队伍的“犇气”之和
不能超过 C。现在 jump 要去屠题,没空解决这个问题,所以请你帮他求出信息
组最少需要组建多少支队伍。
输入数据
第一行包含两个数 n,C;分别表示人数和每支队伍的犇气上限。
接下来 n 行,每行一个数 ai,表示每个人的“犇气”值
输出数据
仅包含一个数,表示最小队伍数
输入样例
6 12
7 2 9 3 7 6
输出样例
4
数据规定
对于 30%的数据,1<=n<=1000
对于 100%的数据,1<=n<=300000,ai<=c 且保证 ai、c 均在 int 范围内。
思路:
这题实在是送分题,贪心入门题,类似我们做过的人过和....
我们把数据输入后,把这些数据按犇值排一遍序
然后我们设置一个头指针和尾指针,按照贪心的思想,我们要把犇值最大的和最小的相搭配;
如果2人的犇值之和大于最大值,我们就把尾指针向前移一个,同时sum++,相当于那个犇值较大的单独一个队;
如果2人犇值之和小于最大值,那么头指针向后移,尾指针向前移(题目规定最多2人一队)
输出
直接输出统计的sum
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m;
int a[];
int sum=;
int scan()
{
int as=,fin=;
char c=getchar();
while(c<''||c>''&&c!='-') c=getchar();
if(c=='-') fin=-;
while(c>=''&&c<='')
{
as=(as<<)+(as<<)+c-'';
c=getchar();
}
return as*fin;
}
int main()
{
freopen("team.in","r",stdin);
freopen("team.out","w",stdout);
n=scan();
m=scan();
int head=,tail=n;
for(int i=;i<=n;i++)
{
a[i]=scan();
}
sort(a+,a+n+);
while(head<=tail)
{
if(head==tail) sum++,head++,tail--;
else if(a[head]+a[tail]<=m) ++sum,head++,tail--;
else if(a[head]+a[tail]>m) ++sum,tail--;
}
cout<<sum;
return ;
}
/*
思路:
这题好像是贪心啊....
那么我们就sort一下
然后最大的和最小的匹配一下就可以了??
试试大样例吧
*/
代码在这里
T4 llg 的农场(可以去评测)
题目描述
llg 是一名快乐的农民,他拥有一个很大的农场,并且种了各种各样的瓜果蔬菜,到了每年秋天,他就可以把所有蔬菜水果卖到市场上,这样他就可以获利。但今年他遇到了一个难题——有许多鸟来到了他的农场偷吃他的瓜果蔬菜。不知所措的 llg 只好求助于 jump,万能的 jump 于是给了 llg 一些稻草人(据说可以驱鸟)。每个庄稼都可以看做是坐标系里面的一个点,当它处于某个稻草人的范围内时就可以视为被保护。可是每个稻草人的辐射范围有限,根据测定,每个稻草人的辐射范围都是一个半径为 R 的圆,如下图:

llg 很懒,所以他只打算把稻草人放在坐标系的 x 轴上,而任何庄稼(x,y)都满足 y>0。图中的小红点就是庄稼,蓝点即稻草人放的位置。现在请你来帮助 llg设计一个方案,用尽可能少的稻草人来保证所有庄稼都是安全的。若存在无法覆盖的庄稼或者 jump 给的稻草人不够覆盖所有庄稼,请输出-1。
输入数据
每个测试点含多组数据
每组数据第一行包含 n,R,C;分别表示庄稼的数量、稻草人的最大覆盖半径,命题人:黎锦灏
稻草人的数量。
接下来 n 行,每行包括两个数 xi,yi 表示一个点的坐标
输入以“0 0 0”结尾
输出数据
对于每组数据,请输出最小要用多少稻草人,才能保证覆盖所有庄稼。若无法覆
盖或数量不够,请输出-1。
输入样例
3 2 3
1 2
-3 1
2 1
3 2 4
1 3
-3 1
2 2
0 0 0
输出样例
2
-1
数据规定
对于 30%的数据,1<=n<=3000
对于 100%的数据, 1<=n<=50000,1<=数据组数<=10,其余数据均保证不会超过 int
的范围
思路:
solution说"这道题是用来 send meat 的水题。。。我也不知道这道题有什么部分分是可
以拿的。。。"
我也无语了.......

有数学知识可知
图中 ABCD 为庄稼的位置。假设稻草人半径为 2,那么能够覆盖 A 点(1,1)的
稻草人一定处在以 A 为圆心,R 为半径的圆与 x 轴的两个交点之间。
所以原题就转化了,我们现在的问题就是使每个区0间内有一个"圆心";
然后我们就储存每个区间的左端点和右端点
然后以左端点或右端点为依据来进行排序
如果是以最左端排序,那么我们就保存最小的右端点,如果有区间的左端点大于右端点
我们就对其进行更新,ans++;
输出
输出ans就可以了
反思
其实我的思路和题解的差不多,只是我数学实在是太suo了,想不到用区间来解决
#include<bits/stdc++.h>
using namespace std;
int n,r,c;
struct ss
{
double x,y;
}a[];
double dx,dy;
int scan()
{
int as=,fin=;
char c=getchar();
while(c<''||c>'')
{
if(c=='-') fin=-;
c=getchar();
}
while(c>=''&&c<='')
{
as=(as<<)+(as<<)+c-'';
c=getchar();
}
return as*fin;
}
bool cmp(ss i,ss j)
{
return i.x<j.x;
}
int main()
{
while()
{
n=scan();
r=scan();
c=scan();
int fin=;
if(n==&&r==&&c==) return ;
for(int i=;i<=n;i++)
{
a[i].x=scan();
a[i].y=scan();
if(a[i].y>r)
{
cout<<-<<endl;
fin=;
}
dx=sqrt(r*r*1.0-(a[i].y)*(a[i].y)*1.0);
a[i].y=a[i].x+dx;
a[i].x=a[i].x-dx;
}
if(fin==)
{
sort(a+,a+n+,cmp);//左端点排序..
int k,sum=;
k=;
for(int i=;i<=n;i++)
{
if(a[i].y<a[k].y) k=i;
if(a[i].x>a[k].y)
k=i,sum++;
}
if(sum+<c)
cout<<sum+<<endl;
else cout<<-<<endl;
}
}
}
O(∩_∩)O~~,一遍过
T1第一题 战役 battle
题目描述
公元 2045 年,C 国进入社会主义高级阶段,这引起了资本主义世界的恐慌。以 A 国为首的资本主义阵营集结了一支联军,企图迫使 C 国屈服。尽管 C 国热爱和平,但面对侵略势力,C 国举国抗击,打得联军节节败退。战役进行时,联军间谍破获了 C 国情报,得到了 C 国的粮草、装备部署情况。A 国统帅 LCF 企图摧毁 C 国的后勤供应。 C 国高层很快得知了联军的行动,当即派遣 ljh 将军和 LRH将军率兵紧急转移各大仓库的物资,并集中于一处重兵保护。现在已知所有的仓库的位置,而每个仓库都只储存了一种物资。(显然,有很多个仓库储存的是同一种物资。)A 国统帅 LCF 的思维比较简单,他认为只要储存某一种物资的所有仓库被摧毁,就可以断绝这种物资的供应,从而断绝 C 国的后勤供应。为了题目简单,我们不妨认为所有仓库集中在一条直线上(即 x 轴),现在ljh、LRH 将军急需在 x 轴上寻找一点作为物资集中地,然后把所有物资集中在此
处。现共有 n 种物资,m 个仓库,物资运输的花费等于这个仓库到选定集中点的距离的平方。两位将军忙着组织军队保护物资转移,于是设计转移方案的重任就交到你头上了,你需要最小化物资转移的花费,并确定将物资集中在何处。
输入数据
输入第一行为两个整数 n,m,即物资的种类和仓库的个数。
接下来的 m 行,每行两个整数 Xi,Pi,分别表示仓库 i 在 x 轴上的位置和仓库 i
储存的是第 Pi 种物资(1<=Pi<=n)。
输入保证每种物资都有仓库储存,注意可能有仓库位置可以重复。
输出数据
仅一行,输出选择的物资集中处的坐标(保留四位小数)
如果有多个坐标使得最小花费相同,请输出最小的那个坐标。
输入样例
3 5
-1 3
0 1
2 3
4 2
5 2
输出样例
2.0000
数据约定
对于 30%的数据,1<=n<=15,1<=m<=20,存储同一种物资的仓库不超过 10 种;
对于 100%的数据,1<=n<=20000,1<=m<=200000,|xi|<=200000
思路
这道题是由HL讲的,虽然有点蒙,但是还可以吧.....大致思路还是听懂了
后来看了下DTT的博客,也就差不多吧
"贪心"的考试的更多相关文章
- [csu1603]贪心
题意:有n门考试,对于考试i,不复习它能考si分,复习它的每小时能提高ai分,每过一小时ai会减小di,也就是说,连续复习某门科目每小时提高的分为ai, ai-di, ai-2di...,但每门考试最 ...
- NOIP2017赛前模拟(4):总结
题目: 1.打牌 给定n个整数(n<=1000000),按照扑克牌对子(x,x)或者顺子(x,x+1,x+2)打出牌···问最多可以打出多少次对子或者顺子?牌的大小<=1000000 2. ...
- CSP-S 95 (sb lsc yy赛)
sb lsc 终于改完题了!(心力交悴.png)
- 暑期集训日志(Day6~Day17)
章·十七:2019-07-28:为谁辛苦为谁甜 ·昨日小结 颓爆了QAQ,昨天又垫底了. 最简单一道题弃疗的我直接被甩倒了总榜垫底…… 我……不想说啥…… 我是渣比. 我不能颓废了. 醒来啊麦克白! ...
- csp-c模拟测试43「A·B·C」
B 题解 $f[i][(gcd(prime[j]*prime[k]\%P,P))]=\sum\limits_{k=1}^{k<=num} f[i-1][k]*phi(\frac{P}{prime ...
- 【BZOJ4868】[六省联考2017]期末考试(贪心)
[BZOJ4868][六省联考2017]期末考试(贪心) 题面 BZOJ 洛谷 题解 显然最终的答案之和最后一个公布成绩的课程相关. 枚举最后一天的日期,那么维护一下前面有多少天可以向后移,后面总共需 ...
- 【BZOJ4868】期末考试 [三分][贪心]
期末考试 Time Limit: 20 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description Input Output Samp ...
- [luogu] P3745 [六省联考2017]期末考试 (贪心)
P3745 [六省联考2017]期末考试 题目描述 有 \(n\) 位同学,每位同学都参加了全部的 \(m\) 门课程的期末考试,都在焦急的等待成绩的公布. 第 \(i\) 位同学希望在第 \(t_i ...
- nyoj 757 期末考试【优先队列+贪心】
期末考试 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没 交作业就会扣 ...
随机推荐
- python基础之闭包函数和装饰器
补充:全局变量声明及局部变量引用 python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 global关键字用来在函数或其 ...
- Ubuntu下配置LAMP + PhpStorm
本文仅作为一个记录,以下配置在Ubuntu 14.10 64-bit上验证通过. 安装Apache 2:sudo apt-get install apache2 安装成功能够后,通过浏览器访问loca ...
- Android面试收集录2 Broadcast Receiver详解
1.Broadcast Receiver广播接收器简单介绍 1.1.定义 Broadcast Receiver(广播接收器),属于Android四大组件之一 在Android开发中,Broadcast ...
- 算法:枚举法---kotlin
枚举法:效率低,循环所有的情况,找到正确答案 用于解决数学问题,还是很简单的. 比如,奥数里面: 算 法 描 述 题X题=题题题题题题 其中 算法描述题每一个为一个数字,请写出正确的数字. ok,我们 ...
- 学习网络请求返回json对应的model
原来泛型可以这样用: 网络返回基类,返回一个code,msg,body,其中body不确定,所以,我们把它写成泛型 import org.json.JSONObject; /** * 网络请求的基类 ...
- JWT应用
调试器库简介问一件T恤! 精心制作 JSON Web令牌简介 新:免费获得JWT手册并深入学习JWT! 什么是JSON Web Token? JSON Web Token(JWT)是一个开放标准(RF ...
- ajax跨域请求_url:http://XXX
利用别的项目提供的一个接口,传入用户名和密码,根据返回的结果判断登陆成功与否. 不经过后台,在js中用ajax实现.对ajax而言,发送跨域请求,与一般写法不同. 如果支持jsonp,则将dataTy ...
- 容器技术的落地还要依靠SDN
容器能够实现新应用程序的快速部署,代表着目前IT开发社区的最热门趋势之一.然而,想要实现容器部署生产环境,IT人员还需要使用SDN技术,在分布式微应用程序之间实现可扩展.可管理且安全的通信. 什么是容 ...
- Django 博客开发教程目录索引
Django 博客开发教程目录索引 本项目适合 0 基础的 Django 开发新人. 项目演示地址:Black & White,代码 GitHub 仓库地址:zmrenwu/django-bl ...
- lnmp一键安装环境中nginx开启pathinfo
问题及原理可参考:http://www.laruence.com/2009/11/13/1138.html 如果是用lnmp脚本一键安装的开发环境,可以通过如下方式开户pathinfo: 1.注释ng ...