Codeforces 798D
这两天后缀数组整多了整点有意思的,随机算法。
题意给你两个数组,让你求一个排列使得这个排列对应的两个数组前n/2+1个数之和的二倍大于每个序列总和。
下面先贴下这题正解
二维贪心,按a从大到小排,把第一个拿着,以后每两个里面选一个a的性质可以满足。
b的话就在两个里面选一个b较大的,这样可以保证有一半的b都大于另一半的b。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
typedef long long ll;
int n,ans[N],cnt;
struct node
{
int a,b,id;
bool operator <(const node &b)const{
return a>b.a;
}
}q[N];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&q[i].a),q[i].id=i;
for(int i=;i<=n;++i)scanf("%d",&q[i].b);
sort(q+,q++n);
ans[++cnt]=q[].id;
for(int i=;i<=n;i+=)
{
if(q[i].b>q[i+].b)
ans[++cnt]=q[i].id;
else ans[++cnt]=q[i+].id;
}
cout<<cnt<<endl;
for(int i=;i<=cnt;++i)
cout<<ans[i]<<" ";
return ;
}
下面就是随机化了。。。祝大家新年快乐。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
typedef long long ll;
int n,ans[N],cnt;
ll sa,sb,ssa,ssb;
struct node
{
int a,b,id;
}q[N];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%d",&q[i].a),q[i].id=i,sa+=q[i].a;
for(int i=;i<=n;++i)scanf("%d",&q[i].b),sb+=q[i].b;
while()
{
random_shuffle(q+,q++n);
ssa=ssb=;
for(int i=;i<=n/+;++i){
ssa+=q[i].a;ssb+=q[i].b;
}
if(ssa*>sa&&ssb*>sb){
cout<<n/+<<endl;
for(int i=;i<=n/+;++i)cout<<q[i].id<<" ";
return ;
}
}
return ;
}
Codeforces 798D的更多相关文章
- Codeforces 798D Mike and distribution - 贪心
Mike has always been thinking about the harshness of social inequality. He's so obsessed with it tha ...
- CodeForces - 798D Mike and distribution 想法题,数学证明
题意:给你两个数列a,b,你要输出k个下标,使得这些下标对应的a的和大于整个a数列的和的1/2.同时这些下标对应的b //题解:首先将条件换一种说法,就是要取floor(n/2)+1个数使得这些数大于 ...
- Codeforces 798D - Mike and distribution(二维贪心、(玄学)随机排列)
题目链接:http://codeforces.com/problemset/problem/798/D 题目大意:从长度为n的序列A和序列B中分别选出k个下表相同的数要求,设这两个序列中k个数和分别为 ...
- Codeforces 798D Mike and distribution (构造)
题目链接 http://codeforces.com/contest/798/problem/D 题解 前几天的模拟赛,居然出这种智商题..被打爆了QAQ 这个的话,考虑只有一个序列怎么做,把所有的排 ...
- 【codeforces 798D】Mike and distribution
[题目链接]:http://codeforces.com/contest/798/problem/D [题意] 让你选一个下标集合 p1,p2,p3..pk 使得2*(a[p1]+a[p2]+..+a ...
- Mike and distribution CodeForces - 798D (贪心+思维)
题目链接 TAG: 这是我近期做过最棒的一道贪心思维题,不容易想到,想到就出乎意料. 题意:给定两个含有N个正整数的数组a和b,让你输出一个数字k ,要求k不大于n/2+1,并且输出k个整数,范围为1 ...
- Codeforces 798D Mike and distribution
题目链接 题目大意 给定两个序列a,b,要求找到不多于个下标,使得对于a,b这些下标所对应数的2倍大于所有数之和. N<=100000,所有输入大于0,保证有解. 因为明确的暗示,所以一定找个. ...
- Codeforces 798D Mike and distribution(贪心或随机化)
题目链接 Mike and distribution 题目意思很简单,给出$a_{i}$和$b_{i}$,我们需要在这$n$个数中挑选最多$n/2+1$个,使得挑选出来的 $p_{1}$,$p_{2} ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
随机推荐
- XML & JSON---iOS-Apple苹果官方文档翻译
技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong //转载请注明出处--本文永久链接 ...
- 原创:HTML 头像截取上传 JS+PHP 整合包~
关于: 关于头像上传这个东西,网上一搜乱七八糟的一堆然而很少很少有自己中意的插件一怒之下就自己写一个... 用法: <!DOCTYPE html> <html lang=" ...
- Flask 的一个小应用程序
传说这是Flask 的最小应用程序:hello.py from flask import Flask app = Flask(__name__) @app.route('/') def hello_w ...
- Mysql储存过程7: case
#用在储存过程中: create procedure k() begin declare number int; )); case number then select '>0'; else s ...
- flask插件系列之flask_cors跨域请求
前后端分离在开发调试阶段本地的flask测试服务器需要允许跨域访问,简单解决办法有二: 使用flask_cors包 安装 pip install flask_cors 初始化的时候加载配置,这样就可以 ...
- Git远程操作详解【转】
转自:http://www.ruanyifeng.com/blog/2014/06/git_remote.html 作者: 阮一峰 日期: 2014年6月12日 Git是目前最流行的版本管理系统,学会 ...
- Ubuntu 10.04 分辨率调整
最近学长们看了我的本本都在问我,显卡驱动是不是出现什么问题了···分辨率这么差.当时我的分辨率是1024X768,于是我就想修改我的屏幕分辨率改成1280X800.本来很简单的事情,我做起来却非常的曲 ...
- Hashtable之Properties
properties的使用:1.Hashtable的实现类,线程安全.与HashMap不同,Hashtable不允许使用null作为key和value2.和HashMap一样,Hashtable也不能 ...
- linux---centos7 安装chromedriver
1.安装浏览器 指定yum 源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.re ...
- JavaScript(获取或设置html元素的宽,高,坐标),确定和判断鼠标是否在元素内部,二级导航菜单鼠标离开样式问题解决
设置: document.getElementById('id').style.width=value document.getElementById('id').style.height=va ...