codeforces Div.2 #429 B.Godsend C. Leha and Function
原题链接:B:Godsend
大意:
一串数列。A,B 轮流取一些数字。 A 先走,每次从中抽取和为奇数的串,(抽完后自动缩为一个新串)。B 每次从中取和为偶数的串。最后一个无法操作的人输。
思路:
博弈论水题。若和为奇数,那么 A 赢,若和为偶数, A 一开始若能从中抽走奇数,那么 B 输,否则 A 输。
比赛时hack看到的代码写法实在太多了。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mem(s,t) memset(s,t,sizeof(s))
//#define D(v) cout<<#v<<" "<<v<<endl
#define inf 0x3f3f3f3f
#define pb push_back
//#define LOCAL
inline void read(int &x){x=0;char p=getchar();while(!(p<='9'&&p>='0'))p=getchar();while(p<='9'&&p>='0')x*=10,x+=p-48,p=getchar();
}
int a[1000];
const int mod=1e9+7;
int main() {int ans=0,f=0;int n;cin>>n;for(int i=0;i<n;i++){int x;cin>>x;if(x&1) f=1;ans+=(x%2);}if(ans&1) puts("First");else if(ans%2==0 && f) puts("First");else puts("Second");return 0;
}
C.Leha and Function
大意:
题目包装得很多。对于一个数列,F(n,k)F(n,k) 表示数列中的第 {1,2,3,…n} 个数中选取 k 个数,k 个数中最小数的数学期望。
现在给出两个数列,A,B ,即为上述数列,B 为 k 的集合。
现在求 最大。
看了一下样例是倒序匹配,实际上贪心地想想也是对的。
逆序和大于等于乱序和大于等于顺序和
写法一:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mem(s,t) memset(s,t,sizeof(s))
#define D(v) cout<<#v<<" "<<v<<endl
#define inf 0x3f3f3f3f
#define pb push_back
//#define LOCAL
inline void read(int &x){x=0;char p=getchar();while(!(p<='9'&&p>='0'))p=getchar();while(p<='9'&&p>='0')x*=10,x+=p-48,p=getchar();
}
int a[200005],b[200005],c[200005];
int main() {int m;read(m);for(int i=0;i<m;i++) read(a[i]);for(int i=0;i<m;i++){read(b[i]);c[i]=b[i];}sort(a,a+m,[&](int x,int y){return x>y;});sort(b,b+m);for(int i=0;i<m;i++) printf("%d%c",a[lower_bound(b,b+m,c[i])-b]," \n"[i==m-1]),b[lower_bound(b,b+m,c[i])-b]--;//找到位置,然后这个位置的bi--,防止影响下次查找return 0;
}
写法二:pair
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mem(s,t) memset(s,t,sizeof(s))
#define D(v) cout<<#v<<" "<<v<<endl
#define inf 0x3f3f3f3f
#define pb push_back
//#define LOCAL
inline void read(int &x){x=0;char p=getchar();while(!(p<='9'&&p>='0'))p=getchar();while(p<='9'&&p>='0')x*=10,x+=p-48,p=getchar();
}
int a[200005],b[200005],c[200005];
pair<int,int> ans[200005];
int main() {int m;read(m);mem(ans,0);for(int i=0;i<m;i++) read(a[i]);for(int i=0;i<m;i++){read(b[i]);ans[i]={b[i],i};}sort(a,a+m,greater<int>());sort(ans,ans+m);for(int i=0;i<m;i++){int to=ans[i].second;c[to]=a[i];}for(int i=0;i<m;i++) printf("%d%c",c[i]," \n"[i==m-1]);return 0;
}
顺便复习下pair,二维偏序,排序时先排一维,一维相同时再比较二维。
ps.最近学到了一些c++11的技巧,编译需要编译器支持。
codeforces Div.2 #429 B.Godsend C. Leha and Function相关推荐
- Codeforces Round #429 (Div. 2):B. Godsend
题目: Leha somehow found an array consisting of n integers. Looking at it, he came up with a task. Two ...
- CodeForces 841C (C) Leha and Function 贪心
题意 定义F(n,k)F(n,k)表示1-n的数列中以k为子集总个数的最小值 现有A,B数组 让我们重新排列A 使得sigma[1 len]F(ai,bi)sigma[1 ~ len]F(ai,bi) ...
- Codeforces div.2 ICPC M - Moving Both Hands
题意:给定一个有向图,求1-(2~n)的点的距离,如果走不到则输出-1 思路:由于两个点必定在某一点汇合,其间终点走沿着路径的反向边,因此,我们建一个分层图,两个层之间的顶点对应连长度为0的边,其中一 ...
- cf 429 B. Godsend
昨晚的cf测试B问题.在做题的时候看到题目首先想到的是用线段树解决,建完树之后发现懵逼了,接下来怎么办啊 .....然后就没有然后了,放弃了这题去做后面的题目了.今天起床后有想了下这题,真是被自己蠢哭 ...
- Codeforces div.2 D. Slime Escape
题意:你是一个slime,现有一列数,表示i位置上有一个血量为ai的slime,你需要吃掉一些slime以到达0,或n+1的位置,回答是否可以到达 思路:贪心前缀和预处理模拟,预处理出左右可以扩展的区 ...
- codeforces Round#429 (Div2)
2017-08-20 10:00:37 writer:pprp 用头文件#include <bits/stdc++.h>很方便 A. Generous Kefa codeforces 84 ...
- Codeforces Round #245 (Div. 1) E. Points and Segments 欧拉回路 + 建模
传送门 文章目录 题意: 思路: 题意: 思路: 考虑对于线段,如何建模. 我们考虑先将线段转换成左闭右开的形式,将左右点连起来. 再考虑每个点,将所有离散化后的点拿出来,每个点都有一个度,现在问题就 ...
- Codeforces 题目合集+分类+代码 【Updating...】【361 in total】
961A - Tetris 模拟 ...
- JS获取div滚动条距离实现弹出标签位置动态移动
前些天尝试了一个定位弹出div标签的功能,没有滚动条时用的是绝对位置,有滚动条后就必须在绝对位置XY坐标上减去滚动条吃进的距离,否则定位就不准了. 下面是获取div滚动条距离的JS脚本: <SC ...
最新文章
- ASP.net(C#)批量上传图片(完整版)
- The Pediatric Cancer Genome Project 儿童癌症基因组计划
- 【Ubuntu】ubuntu webqq桌面版pywebqq
- TensorFlow2简单入门 - 池化层
- PHP的引用传值值传递
- 数码管显示1到8c语言,单片机控制八只数码管滚动显示1~8 附PROTEUS软件仿真图
- [Luogu 1351] NOIP2014 联合权值
- 指令系统——数据寻址(2)(详解)
- 升级浏览器_微软IE11浏览器 最后的升级机会
- 苹果企业账号炒作到多少钱_从炒作到行动:边缘计算的后续步骤
- 黑马程序员传智播客迭代器和循环生成fibonacci数列
- 凸优化学习笔记(一):仿射集、凸集、锥
- 软件设计师中级考试经验总结
- OpenGL着色器程序解析--初识着色器
- 如何将手机里的PDF文件转换成Word文档
- 最新价值800元的720全景云系统源码 可生成小程序带PC端 附新手搭建教程
- 计算机右键括号内的字母,电脑操作中菜单后面括号里的字母的介绍
- 使用JSONObject比较Java复杂对象
- matlab一阶导数图,一阶微分excel【如何用EXCEL做一阶导数图?】
- [Back-To-Back LC]背对背信用证
热门文章
- python画星空的程序_python画画梵高
- 使用mysql的mycli插件
- WooCommerce入门指南:添加新订单第1部分
- 三相桥式全控整流电路matlab仿真,基于Matlab的三相桥式全控整流电路的仿真研究...
- 将matlab的m文件转成C语言
- 卸载Axmath 后,word加载项中还是有 Axmath 的解决方法
- 如何制作室内地图,如何快速建立室内地图
- python使用openpyxl库按 行/列 合并/拆分 Excel表格
- java 打印异常内容_java自定义异常打印内容详解
- java查询所有数据_elasticsearch查询所有数据restful api以及java代码实现