博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[SRM] 10 CCZ的诗
阅读量:4680 次
发布时间:2019-06-09

本文共 1075 字,大约阅读时间需要 3 分钟。

QwQ为数不多的几次有部分分的OI赛制的SRM,感谢CCZ的一屋子部分分= =

 

A. 模拟只会猜题意

 

B. 贪心只能过样例

给出n个数a[i](1<=a[i]<=n),问最多能把这些数分成几组,使得每个数a[i]所在的组至少有a[i]个数

输入格式

第一行一个整数n,接下来n行每行一个整数分别是a[1],a[2],...,a[n]

输出格式

一行,输出答案,一个整数

分析

因为是按组分,所以顺序也就不重要了,先sort成递增

为了保证分组数最多,应该从大到小一个个满足(有点像弹飞绵羊呢)

方程为DP[i] = max( DP[i-arr[i]]+1 , DP[i-1] )

注意边界问题!

代码

1 #include
2 #include
3 #include
4 #define LL long long 5 using namespace std; 6 7 LL n; 8 LL DP[10000000]; 9 LL maxx[10000000];10 LL arr[10000000];11 12 int main(){13 scanf("%lld",&n);14 15 for(LL i = 1;i <= n;i++){16 scanf("%lld",&arr[i]); 17 }18 19 sort(arr+1,arr+1+n);20 21 for(LL i = 1;i <= n;i++){22 if(i-arr[i] < 0 || !i) maxx[i] = 0;23 else{24 25 maxx[i] = maxx[i-arr[i]]+1;26 27 if(i < n) maxx[i] = max(maxx[i],maxx[i-1]);28 }29 }30 31 printf("%lld",maxx[n]);32 33 return 0;34 }
贪心只能过样例

 

C. 数学上来先打表

 

D. DP只会找规律

转载于:https://www.cnblogs.com/Chorolop/p/7295258.html

你可能感兴趣的文章
南阳239----月老的难题『匈牙利算法』
查看>>
Linux中如何配置sudo用户
查看>>
关于集合set ---STL
查看>>
react-native redux使用指南
查看>>
IOS 手势事件的冲突
查看>>
Django学习手册 - cookie / session
查看>>
Java多线程系列---“JUC锁”03之 Condition
查看>>
如何在vue项目中使用md5加密
查看>>
WebApi2官网学习记录---单元测试
查看>>
设计模式总结(Java)—— 观察者模式
查看>>
第二次冲刺总结
查看>>
TCP三次握手原理与SYN攻击
查看>>
SpringBoot2.x集成WebSocket
查看>>
newFixedThreadPool固定线程使用
查看>>
Kruskal-Wallis Test and Friedman test
查看>>
011
查看>>
第一次的博客~
查看>>
iOS-绘图(Quartz2D)的简单使用(原创)
查看>>
D3.js的基础部分之数组的处理 映射(Map)(v3版本)
查看>>
mysql5.7.22安装步骤
查看>>