Codeforces Round #477 (rated, Div. 2, based on VK Cup 2018 Round 3) D 贪心
http://codeforces.com/contest/967/problem/D
题目大意:
有n个服务器,标号为1~n,每个服务器有C[i]个资源。现在,有两个任务需要同时进行,令他为x1,x2.
运行任务的条件:
①每个服务器只能同时运行一个任务
②任务可以同时分配到多个服务器中执行。假设任务x1分配到a个服务器中,则每个服务器都需要使用x1/a的资源(该资源可以为小数)
问能否满足以上条件,使得x1,x2同时在服务器中运行?
思路:
将所有服务器按照资源增序排列,定义dp(i)表示从第i个服务器到第n个服务器的资源提供量, 即dp[i] = (n - i + 1) * c[i];
接下来,暴力一遍1~n,
在满足dp(i)>=x1的时候,就贪心的取最少的满足c(i) * cnt >= x1
然后再利用dp去找满足x2的条件即可。
//看看会不会爆int!数组会不会少了一维!
//取物问题一定要小心先手胜利的条件
#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker,"/STACK:102400000,102400000")
#define LL long long
#define ALL(a) a.begin(), a.end()
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define haha printf("haha\n")
const int maxn = 1e6 + ;
int n, x1,x2;
vector<pair<int, int> > ve;
int dp[maxn];
pair<int, int> ans1, ans2; bool check(int i, int x1, int x2){
int cnt1 = x1 / ve[i].fi;
if (x1 - cnt1 * ve[i].fi > ) cnt1++;
if (dp[i + cnt1] >= x2) {
ans1 = mk(i, i + cnt1 - );
ans2.fi = i + cnt1;
int cnt2 = x2 / ve[i+cnt1].fi;
if (x2 - cnt2 * ve[i+cnt1].fi > )
cnt2++;
ans2.se = ans2.fi + cnt2 - ;
return true;
}
return false;
} bool solve(){
bool flag = false;
for (int i = ; i < ve.size(); i++){
if (dp[i] >= x1){
if (check(i, x1, x2)) flag = true;
}
}
if (flag == false){
swap(x1, x2);
for (int i = ; i < ve.size(); i++){
if (dp[i] >= x1){
if (check(i, x1, x2)) {
flag = true;
swap(ans1, ans2);
}
}
}
}
if (flag){
puts("Yes");
printf("%d %d\n", ans1.se - ans1.fi + , ans2.se - ans2.fi + );
for (int j = ans1.fi; j <= ans1.se; j++)
printf("%d ", ve[j].se);
cout << endl;
for (int j = ans2.fi; j <= ans2.se; j++)
printf("%d ", ve[j].se);
cout << endl;
return true;
}
return false;
} int main(){
cin >> n >> x1 >> x2;
for (int i = ; i <= n; i++){
int a; scanf("%d", &a);
ve.pb(mk(a, i));
}
sort(ALL(ve));
for (int i = ve.size()-; i >= ; i--){
dp[i] = (ve.size() - i) * ve[i].fi;
}
if (solve() == false) puts("No");
return ;
}
Codeforces Round #477 (rated, Div. 2, based on VK Cup 2018 Round 3) D 贪心的更多相关文章
- Codeforces Round #477 (rated, Div. 2, based on VK Cup 2018 Round 3) F 构造
http://codeforces.com/contest/967/problem/F 题目大意: 有n个点,n*(n-1)/2条边的无向图,其中有m条路目前开启(即能走),剩下的都是关闭状态 定义: ...
- Codeforces Round #477 (rated, Div. 2, based on VK Cup 2018 Round 3) E 贪心
http://codeforces.com/contest/967/problem/E 题目大意: 给你一个数组a,a的长度为n 定义:b(i) = a(1)^a(2)^......^a(i), 问, ...
- 【枚举】【二分】Codeforces Round #477 (rated, Div. 2, based on VK Cup 2018 Round 3) D. Resource Distribution
题意:有两个服务要求被满足,服务S1要求x1数量的资源,S2要求x2数量的资源.有n个服务器来提供资源,第i台能提供a[i]的资源.当你选择一定数量的服务器来为某个服务提供资源后,资源需求会等量地分担 ...
- Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1)A. Protect Sheep
http://codeforces.com/contest/948/problem/A A. Protect Sheep Bob is a farmer. He has a large pastu ...
- Codeforces Round #470 (rated, Div. 1, based on VK Cup 2018 Round 1) 923D 947D 948E D. Picking Strings
题: OvO http://codeforces.com/contest/947/problem/D 923D 947D 948E 解: 记要改变的串为 P1 ,记目标串为 P2 由变化规则可得: ...
- Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1) C.Producing Snow
题目链接 题意 每天有体积为Vi的一堆雪,所有存在的雪每天都会融化Ti体积,求出每天具体融化的雪的体积数. 分析 对于第i天的雪堆,不妨假设其从一开始就存在,那么它的初始体积就为V[i]+T[1. ...
- 【推导】【贪心】Codeforces Round #472 (rated, Div. 2, based on VK Cup 2018 Round 2) D. Riverside Curio
题意:海平面每天高度会变化,一个人会在每天海平面的位置刻下一道痕迹(如果当前位置没有已经刻划过的痕迹),并且记录下当天比海平面高的痕迹有多少条,记为a[i].让你最小化每天比海平面低的痕迹条数之和. ...
- 【推导】Codeforces Round #472 (rated, Div. 2, based on VK Cup 2018 Round 2) B. Mystical Mosaic
题意:给你一个棋盘的最终局面. 你的一次操作可以选择一些行和列,将它们的交叉点染黑,不能重复选择某行或者某列.问你是否能经过数次操作之后,达到目标局面. 就枚举所有黑点,如果该点行列都没被标记,就给它 ...
- Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1)
A. Protect Sheep time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
随机推荐
- 剑指offer :跳台阶
这题之前刷leetcode也遇到过,感觉是跟斐波拉契差不多的题. 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解 ...
- golang 反射
参考:|--http://blog.51cto.com/speakingbaicai/1707637 |--https://studygolang.com/articles/6324 反射是在gola ...
- 团队作业4 Alpha冲刺《嗨!你的快递》
仓库地址:https://git.coding.net/day_light/ourexpressmaster1.git 张新宇 1第一天日期:2018/6/13 1.1今日任务 进行核心功能数据匹 ...
- SQL Server 无法连接到本地服务器
未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接: 解决办法: 在服务中启动SQL Server (MSSQLSERVER)这个服务.
- js 算法
var str=‘abscdf’; function solution(str){ var arr=new Array(); if(str.length%2==0){ for(i=0;i<str ...
- [2017BUAA软工]第1次个人作业
软工第1次个人作业 一.快速看完整部教材,列出你不懂的5-10个问题,发布在你的个人博客上. 1.文中提到"积累问题领域的知识和经验(例如:对医疗或金融行业的了解)."然而我们如何 ...
- API接口测试中需要注意的地方
1.检查接口返回的数据是否与预期结果一致. 2.检查接口的容错性,假如传递数据的类型错误时是否可以处理.例如是支持整数,传递的是小数或字符串呢? 3.接口参数的边界值.例如,传递的参数足够大或为负数时 ...
- C++ STL 常用算术和生成算法
C++ STL 常用算术和生成算法 accumulate() accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值. #include<numeric> ...
- 【刷题】洛谷 P3613 睡觉困难综合征
题目背景 刚立完Flag我就挂了WC和THUWC... 时间限制0.5s,空间限制128MB 因为Claris大佬帮助一周目由乃通过了Deus的题,所以一周目的由乃前往二周目世界找雪辉去了 由于二周目 ...
- javascript和php使用ajax通信传递JSON
JS和PHP直接通信常用ajax完成,以实现js上UI的动态变化.通信使用JSON或者XML传递数据.下面详细描述两者直接JSON字符串的传递. 下面案例是要传递这样的json数据: { " ...