汕头市赛srm10 T2
n个数,分组,数Ai要在至少含有Ai个数的组,求最多分多少组。
方法一:大的数应该尽量跟大的在一起,这样才能让小的出现很多很多组,所以从大到小排序,给当前序列中最大的数x分x个数。代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
//#include<iostream>
using namespace std; int n;
#define maxn 1000011
int a[maxn];
bool cmp(const int &a,const int &b) {return a>b;}
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d",&a[i]);
sort(a+,a++n,cmp);
int ans=,i;
for (i=;i<=n;i+=a[i]) ans++;
if (i>n+) ans--;
printf("%d\n",ans);
return ;
}
错误!“最大的数尽量跟大的在一起”不等于"给最大的数x分x个数“,有时一个大数可以多容纳一点大数来满足更多的小数组。有反例(TJM大爷提供)1 1 1 3 3 3 3,答案4,错误答案3。
方法二:贪心不行就dp。先把数从小到大排序,f[i]--前i个数分组最多,f[i]=max(f[j])+1,j∈[1,i-a[i]],重复地访问前缀最大可另开数组统计。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
//#include<iostream>
using namespace std; int n;
#define maxn 1000011
int a[maxn],f[maxn],Max[maxn];
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d",&a[i]);
sort(a+,a++n);
f[]=Max[]=;
for (int i=;i<=n;i++)
{
if (i-a[i]>=)
f[i]=Max[i-a[i]]+;
else f[i]=;
Max[i]=max(Max[i-],f[i]);
}
printf("%d\n",f[n]);
return ;
}
汕头市赛srm10 T2的更多相关文章
- 汕头市队赛 SRM1X T2 ——扫描线
绵津见-终 SRM 13 背景 “西瓜也是可以种在海上的!”——绵津见 然而种在海上的西瓜最需要防范的,是时不时会涌向瓜田的阵阵海浪. 幸好,身为海神的绵津见可以释放魔法“水平如镜”来阻止海浪拍打西瓜 ...
- 汕头市队赛 SRM16 T2
描述 猫和老鼠,看过吧?猫来了,老鼠要躲进洞里.在一条数轴上,一共有n个洞,位置分别在xi,能容纳vi只老鼠.一共有m只老鼠位置分别在Xi,要躲进洞里,问所有老鼠跑进洞里的距离总和最小是多少. 输入格 ...
- 汕头市队赛 SRM14 T2 最长上升子序列
最长上升子序列 (tree.pas/c/cpp) 128MB 1s 有一个长度为n的序列a[i],其中1到n的整数各自在a[i]中出现恰好一次. 现在已知另一个等长的序列f[i],表示a[i]中以第i ...
- 汕头市队赛 SRM13 T2
这道题很容易想到是二分 但是因为可能会爆LL 所以要加一波特判 #include<cstdio> #include<cstring> #include<algorithm ...
- 汕头市队赛 SRM10 T3 数学上来先打表
数学上来先打表 SRM 10 描述 给出 n个点(不同点之间有区别),求出满足下列条件的连边(双向边)方案:1.每条边连接两个不同的点,每两个点之间至多有一条边2.不存在三个点a,b,c使三个点间两两 ...
- 汕头市队赛 SRM10 T1 贪心只能过样例
贪心只能过样例 SRM 10 描述 给出n个数a[i](1<=a[i]<=n),问最多能把这些数分成几组,使得每个数a[i]所在的组至少有a[i]个数 输入格式 第一行一个整数n,接下来n ...
- 汕头市队赛 SRM10 T1模拟只会猜题意
模拟只会猜题意 SRM 10 描述 有一本n个单词的词典,求按下列方法能造出的不相同的词汇数目. 1.词典中的单词是一个词. 2.能分为两部分的,其中前一部分是一个词典词或者其非空前缀,后一部分是一 ...
- 汕头市队赛 SRM10 dp只会看规律 && bzoj1766
dp只会看规律 SRM 10 描述 平面上有n个点(xi,yi),用最少个数的底边在x轴上且面积为S的矩形覆盖这些点(在边界上也算覆盖) 输入格式 第一行两个整数n,S接下来n行每行两个整数xi,yi ...
- 10-18 noip提高组模拟赛(codecomb)T2贪心
T2:找min:一直找最小的那个,直到a[i]-x+1小于0,就找次小的,以此类推: 求max,也是一样的,一直到最大的那个,直到次大的比之前最大的大,就找次大的: 这个模拟,可以用上priority ...
随机推荐
- 序列化pickle模块
1.pickle模块 pickle.dumps() 和pickle.loads() import pickle f = open('112.pkl','w') a = {'name':2,2:3,3: ...
- LOJ#121. 「离线可过」动态图连通性(线段树分治)
题意 板子题,题意很清楚吧.. Sol 很显然可以直接上LCT.. 但是这题允许离线,于是就有了一个非常巧妙的离线的做法,好像叫什么线段树分治?? 此题中每条边出现的位置都可以看做是一段区间. 我们用 ...
- SEO & HTML语义化
SEO SEO的概念:搜索引擎优化,常见的搜索引擎有百度.谷歌等.优化的话,就是通过我们的处理,使得我们的网站在搜索引擎下有一个理想的结果. SEO的目的:当用户在搜索引擎上搜索关键词的时候,看到我们 ...
- 一键修改android 字体和图片大小.
项目中需要动态更改 app的字体和图片, 在查阅中找到的更改主题的解决办法,和单独的修改字体的方法. 这两种方法的确有效果但是实现麻烦,在修改字体的过程中,找到一个额外的方法, 修改字体的实现更改 ...
- tar.bz2
tar -xvjf gcc-4.1.0.tar.bz2 bzip2 -d gcc-4.1.0.tar.bz2
- 飞秋软件的OA消息接口服务器
由于单位使用了飞秋,同时也使用了OA,但OA的消息系统没有飞秋方便,所以大多数人还是在用飞秋沟通.但审批等流程又在OA上,所以做了个消息接口服务器,提取OA消息自动发送到飞秋上,大大方便了工作. 正好 ...
- 千万千万不要运行的 Linux 命令
文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,除非你是在虚拟机上运行(出现问题你可以还原),因为它们会实实在在的破坏你的系统.所以不在root等高级管理权限下执行命令是很好的习惯. 早晚有一天 ...
- ZGC,一个超乎想象的垃圾收集器
Z Garbage Collector,即ZGC,是一个可伸缩的.低延迟的垃圾收集器,主要为了满足如下目标进行设计: 停顿时间不会超过10ms 停顿时间不会随着堆的增大而增大(不管多大的堆都能保持在1 ...
- dropuser - 删除一个 PostgreSQL 用户帐户
SYNOPSIS dropuser [ option...] [ username] DESCRIPTION 描述 dropuser 删除一个现有 PostgreSQL 用户 和 该用户所有的数据库. ...
- Java中wait()方法为什么要放在同步块中?(lost wake-up 问题)
问题起源 事情得从一个多线程编程里面臭名昭著的问题"Lost wake-up problem"说起. 这个问题并不是说只在Java语言中会出现,而是会在所有的多线程环境下出现. 假 ...