ArabellaCPC 2019
链接:http://codeforces.com/gym/102263
A:
签到题:A * B 。
B:
题意:类似取石子游戏,每个人可以取max(1, n(当前剩余) - k)个,最后取完的人赢,Kilani先取,问谁能获胜。
思路:一眼就看出是博弈论,找了几种情况推了下发现只有 (n - k <= 1 && n不是偶数 )的情况下 后手才能赢。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
std::ios::sync_with_stdio(false);
int t;
cin >> t;
while(t--)
{
int n, k;
cin >> n >> k;
if(n - k <= && n % == ) cout <<"Ayoub" <<endl;
else cout << "Kilani" <<endl;
}
return ;
}
C:
题意:给你26个字母键、大小写切换键、空格键和删除键,问在一系列操作后打出的字符串和给定的字符串相不相等。
思路:模拟一遍,不过删除不能删到负的orz。
AC代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e7 + ;
int n, L, k;
char s[maxn], a[maxn], b[maxn], c[maxn];
int main()
{
std::ios::sync_with_stdio(false);
cin >> n;
for(int i = ; i <= n; i++)
{
cin >> s;
for (int j = ; j < strlen(s); j++)
a[++L] = s[j];
a[++L] = ' ';
}
L--;
cin >> k;
int pos = , t = ;
for (int i = ; i <= k; i++)
{
cin >> c;
if (c[] == 'C')
t = (t + ) % ;
else if (c[] == 'B')
{
if (pos > )
pos--;
}
else if (c[] == 'S')
b[++pos] = ' ';
else if (t == )
b[++pos] = c[];
else
b[++pos] = c[] - ;
}
bool flag = true;
if (pos != L)
flag = false;
for (int i = ; i <= L; i++)
if (b[i] != a[i])
flag = false;
if(flag) cout << "Correct" << endl;
else cout << "Incorrect" <<endl;
}
D:
题意:给你俩个数组,数组一中的任意元素可以加上或者减去数组二中的任意元素, 问不限操作次数能否使数组一种所有元素相等。
思路:求出第二数组的最小公倍数,然后差值在其之内和其倍数的都是yes。虽然不是很懂为什么,但是枚举了几个例子发现的确是这样。
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + ;
typedef long long ll;
ll a[maxn], b[maxn];
int main()
{
std::ios::sync_with_stdio(false);
int n, m;
cin >> n >> m;
for(int i = ;i < n;i++) cin >> a[i];
for(int i = ;i < m;i++) cin >> b[i];
ll d;
if(m == ) d = b[];
else
{
d = __gcd(b[],b[]);
for(int i = ;i <m;i++)
{
d = __gcd(d, b[i]);
} }
bool flag = true;
for(int i = ;i < n;i++)
{
if(abs(a[i] - a[]) % d) {flag = false;break;}
}
if(flag) cout << "Yes" <<endl;
else cout << "No" <<endl;
return ;
}
E:
F:
G:
题意:求所有可能结果的期望值。
思路:算了很久还是一团浆糊,感觉还是无从入手。看了题解才知道,只要考虑 i 对结果的贡献是多少, 对于每个 i ,只有每个比他 小的数才能对结果产生贡献,所有一共有 i - 1种,所以概率为(i - 1)/ n.
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
double n;
double ans = ;
scanf("%lf",&n);
for(int i = ;i <= n;i++)
{
ans += (i - )/n * i;
}
printf("%.12f\n",ans);
return ;
}
H:
题意: n个饼,k个锅,一个锅可以煎俩个饼,一个饼有俩面,一个面要煎 5 min,问煎完所有饼的最小时间。
思路:从样例中可以看出 即使饼没有一起煎但最优解还是能做到平均每个饼耗时5分钟。嗯...怎么讲呢 ,反正不超过可用锅的一半就可以换着煎...。
AC代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e7+;
const int inf=0x3f3f3f3f;
ll n,k;
int main(){
cin >> n >> k;
if(2LL * k >= n){
cout << << endl;
}
else{
if(n % k != )
cout << (n/k+) *5LL <<endl;
else cout << n/k *5LL << endl; }
return ;
}
I:
题意:给你一个大小为n的数组,分别求出 (2 ~ n)大小个子序列中F(S)的最大值。
思路:排序 每次取数组俩端,因为对于每个数求差的值其实就是子序列最大值减 最小值。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 3e5 + ;
ll a[maxn];
ll ans[maxn];
int main()
{
std::ios::sync_with_stdio(false);
int n;
cin >> n;
for(int i = ;i < n;i ++)
{
cin >> a[i];
}
sort(a, a + n);
int l = ,r = n - ;
int k = ;
long long ans = ;
long long sum = ;
while(k <= n)
{
if(k % == )
sum += a[r--] - a[l++];
ans += sum;
cout << ans << " ";
k++;
}
return ;
}
J:
题意:给你一个数 a,b一开始值为0,你可以给b加上或者减去 10的x(x > 0) 次方,问最少要几次b能等于a。
思路:一个是每位直接从0加,一个是从10往下走 例如 99可以先 100 再减1.对于每位数在俩者中取最优的比较即可。想是想到了,结果自己写的太丑,就WA了。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + ;
int a[maxn];
int main()
{
string s;
cin >> s;
for(int i = ;i < s.size();i++)
{
a[i] = s[i] - '';
}
int ans = a[], sum = - a[] + ;
for(int i = ; i < s.size();i++)
{
int t = ans, k = sum;
ans = min(t + a[i], k + a[i]);
sum = min( - a[i] + + t, - a[i] + k - );
}
cout << min(ans, sum);
return ;
}
K:
L:
M:
签到题:桶排,进位,输出,没了。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int vis[];
int main()
{
std::ios::sync_with_stdio(false);
string s;
cin >> s;
for(int i = ;i < s.size();i++)
{
int t = s[i]- 'a';
vis[t] ++;
}
for(int i = ;i < ;i++)
{
vis[i + ] += vis[i]/;
vis[i] %= ;
}
for(int i = ;i >= ;i--)
{
char t = i + 'a';
for(int j = ;j < vis[i];j++)
{
cout << t;
}
}
cout << endl;
return ;
}
ArabellaCPC 2019的更多相关文章
- Gym 102263 ArabellaCPC 2019 J - Thanos Power (DP,数学)
题意:有一个整数\(n\),每次可以对加\(10^x\)或减\(10^x\),问最少操作多少次能得到\(n\). 题解:对于某一位上的数,我们可以从\(0\)加几次得到,或者从前一位减几次得到.所以对 ...
- ABC155E - Payment
简述题意,给你一个大数,你可以选择10的次幂进行加减运算,问如何用最少的次数从0到达这个大数 考虑从这个大数到0,从最低位开始,每次都将这个位置取完,2种策略,贪心的话不好处理进位的情况,可以想到是D ...
- 2019年台积电进军AR芯片,将用于下一代iPhone
近日,有报道表示台积电10nm 芯片可怜的收益率可能会对 2017 年多款高端移动设备的推出产生较大的影响,其中自然包括下一代 iPhone 和 iPad 机型.不过,台积电正式驳斥了这一说法,表明1 ...
- VS经常报错的link error 2019
VS经常报错的link error 2019 原因如下: 可能是找得到头文件,但是相关的dll或者lib找不到,需要在配置里面添加相应的库文件. project=>configuration.. ...
- YTU 2019: 鞍点计算
2019: 鞍点计算 时间限制: 1 Sec 内存限制: 64 MB 提交: 66 解决: 30 题目描述 找出具有m行n列二维数组Array的"鞍点",即该位置上的元素在该行 ...
- Windows Server 2019 预览版介绍
在Windows server 2012.Windows server 2016还未完全普及的情况下,昨天Windows Server团队宣布Windows Server 2019将在2018年的下半 ...
- Telerik控件集-2019.R1.SP1.All
Telerik 专注于微软.Net平台的表示层与内容管理控件,提供高度稳定性和丰富性能的组件产品DevCraft,并可应用在非常严格的环境中.Telerik拥有 Microsoft, HP, Alco ...
- CTF丨2019互联网安全城市巡回赛·西安站,我们来了!
万物互联时代,网信事业发展突飞猛进,互联网悄然渗透到国民生活的每一个角落,伴随而来的网络安全威胁和风险也日渐突出.网络诈骗.钓鱼软件.勒索病毒等安全问题层出不穷,信息泄露等网络安全事件也频繁上演,给用 ...
- AI2(App Inventor 2)离线版服务器(2019.04.28更新)
我们的目标:搭建一个本地多用户的App Inventor 2 服务器 演示: http://ai2.fsyz.net [旧 win] http://ai2n.fsyz.net [新 Ce ...
随机推荐
- 一.jenkins安装(windows环境)
前提:jdk等已安装 jenkins下载地址:https://jenkins.io/download/ 以我目前的知识记录两种启动方式: 1.直接下载war包 通过 java -jar jenki ...
- spring 数据库字段映射
当有复杂名称字段时: 在repository中写代码字段名 List<Grid> findByLocIsWithin(GeoJsonPolygon boundary); 可以添加field ...
- 监控软件munin安装设置
准备工作需要web环境需要设置epel源 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo 服务器端安装设置 y ...
- SQLserver服务无法启动
今天调整了一下sqlserver tcp/ip 网络协议,重启生效时,SQLserver服务无法启动. 搞了一天都没发现问题,准备重装,发现也比较麻烦.看了日志,网上查了一堆解决方案,均没有. 后台发 ...
- #include和前置声明(forward declaration)
#include和前置声明(forward declaration) 1. 当不需要调用类的实现时,包括constructor,copy constructor,assignment opera ...
- git的使用(本地版本库)
1. 创建版本库 1.1 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: 1.2通过git init命令把这个目录变成Git可以管理的仓库(git进入空目录的路径) $ git i ...
- Django Model里的__str__以及Meta
举个栗子,注释已经比较详细了 name = models.CharField(max_length=30,verbose_name='标签名称') #max_length=30里的30在mysql以前 ...
- jmeter 后台运行 setsid bin/jmeter -n -t .jmx文件 -l .jtl文件
备注: 另外,在Linux下我们有时候希望线程可以在后台运行,这样我们关闭当前连接后,线程依然可以运行,这里提供一个将 jmeter命令设置为后台线程的方法. 使用setsid命令: setsid ...
- 用Emacs进行Python开发
用Emacs进行Python开发 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839496;} ...
- 9-vim-移动命令-04-利用标记返回之前小编辑的代码位置
标记 在开发时,某一块代码可能需要处理,例如编辑或重看. 此时使用命令模式(普通模式)下使用m增加一个标记,这样可以在需要时快速地跳回来或者执行其他编辑操作. 标记名称可以是a~z或者A~Z之间的 ...