Wannafly模拟赛5 A Split 【贪心】
2017-11-05 18:17
253 查看
题目:https://www.nowcoder.com/acm/contest/18/A
题意:
你有一个大小为��的����������,每次你可以从你已有的����������中选择一个大小不为1的����������,设他的大小为��,然后把它分裂成��和��−��,其中1≤��<��,这样你获得的收益是��∗(��−��)给定��,��,求最少分裂几次才能得到至少��的收益
分析:
最后分的大小尽量平均得到的M最大。二分分的次数,然后判断是否可以使得收益>=M即可。
题意:
你有一个大小为��的����������,每次你可以从你已有的����������中选择一个大小不为1的����������,设他的大小为��,然后把它分裂成��和��−��,其中1≤��<��,这样你获得的收益是��∗(��−��)给定��,��,求最少分裂几次才能得到至少��的收益
分析:
最后分的大小尽量平均得到的M最大。二分分的次数,然后判断是否可以使得收益>=M即可。
#include <iostream> #include <algorithm> #include <string> #include <vector> #include <map> #include <set> #include <queue> #include <cstdio> #include <cstring> #include <cmath> using namespace std; const int N=1e3+9; typedef long long LL; typedef pair<int,int> pii; int a ; int solve(int s,int x) { for(int i=0;i<x;i++)a[i]=s/x; for(int i=0;i<s%x;i++)a[i]++; int ans=0; int sum=0; for(int i=0;i<x;i++){ ans+=sum*a[i]; sum+=a[i]; } return ans; } int main() { int s,m; scanf("%d%d",&s,&m); for(int i=1;i<s;i++){ if(solve(s,i+1)>=m){ printf("%d\n", i); return 0; } } printf("-1\n"); return 0; }
相关文章推荐
- Wannafly模拟赛5 A Split
- Wannafly模拟赛5 A split 二分
- Wannafly模拟赛3 监视任务(贪心+线段树)
- Wannafly模拟赛5 A Split
- Wannafly模拟赛3-F 监视任务(贪心+线段树区间更新)
- Wannafly模拟赛4 B.Distance 最大曼哈顿距离
- Nowcode Sum(Wannafly模拟赛4)
- 【2018.3.31】模拟赛之二-ssl2407 负进制【贪心】
- [NOIP模拟赛]肥得更高 (堆,桶排序,贪心)
- Wannafly模拟赛 矩阵 [矩阵hash+二分]
- Wannafly模拟赛4 B.Distance 最大曼哈顿距离
- Wannafly挑战12 D矩阵计数 - 贪心
- 10-18 noip提高组模拟赛(codecomb)T2贪心
- Wannafly模拟赛3-B 贝伦卡斯泰露(DFS)
- Wannafly模拟赛4 B.Distance 最大曼哈顿距离
- Wannafly模拟赛4 C Sum(树状数组)
- #bzoj2932#【重庆市NOIP模拟赛】旅行(贪心 DP是不可以的!)
- Wannafly模拟赛3 绝对半径2051(尺取)
- Wannafly模拟赛4 B.Distance 最大曼哈顿距离
- Wannafly模拟赛5 D Aria 全排列