链接: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的更多相关文章

  1. Gym 102263 ArabellaCPC 2019 J - Thanos Power (DP,数学)

    题意:有一个整数\(n\),每次可以对加\(10^x\)或减\(10^x\),问最少操作多少次能得到\(n\). 题解:对于某一位上的数,我们可以从\(0\)加几次得到,或者从前一位减几次得到.所以对 ...

  2. ABC155E - Payment

    简述题意,给你一个大数,你可以选择10的次幂进行加减运算,问如何用最少的次数从0到达这个大数 考虑从这个大数到0,从最低位开始,每次都将这个位置取完,2种策略,贪心的话不好处理进位的情况,可以想到是D ...

  3. 2019年台积电进军AR芯片,将用于下一代iPhone

    近日,有报道表示台积电10nm 芯片可怜的收益率可能会对 2017 年多款高端移动设备的推出产生较大的影响,其中自然包括下一代 iPhone 和 iPad 机型.不过,台积电正式驳斥了这一说法,表明1 ...

  4. VS经常报错的link error 2019

    VS经常报错的link error 2019 原因如下: 可能是找得到头文件,但是相关的dll或者lib找不到,需要在配置里面添加相应的库文件. project=>configuration.. ...

  5. YTU 2019: 鞍点计算

    2019: 鞍点计算 时间限制: 1 Sec  内存限制: 64 MB 提交: 66  解决: 30 题目描述 找出具有m行n列二维数组Array的"鞍点",即该位置上的元素在该行 ...

  6. Windows Server 2019 预览版介绍

    在Windows server 2012.Windows server 2016还未完全普及的情况下,昨天Windows Server团队宣布Windows Server 2019将在2018年的下半 ...

  7. Telerik控件集-2019.R1.SP1.All

    Telerik 专注于微软.Net平台的表示层与内容管理控件,提供高度稳定性和丰富性能的组件产品DevCraft,并可应用在非常严格的环境中.Telerik拥有 Microsoft, HP, Alco ...

  8. CTF丨2019互联网安全城市巡回赛·西安站,我们来了!

    万物互联时代,网信事业发展突飞猛进,互联网悄然渗透到国民生活的每一个角落,伴随而来的网络安全威胁和风险也日渐突出.网络诈骗.钓鱼软件.勒索病毒等安全问题层出不穷,信息泄露等网络安全事件也频繁上演,给用 ...

  9. AI2(App Inventor 2)离线版服务器(2019.04.28更新)

    我们的目标:搭建一个本地多用户的App Inventor 2 服务器   演示: http://ai2.fsyz.net  [旧 win]     http://ai2n.fsyz.net [新 Ce ...

随机推荐

  1. MySQL strcmp 函数

    STRCMP(str1, str2) 比较两个字符串,如果这两个字符串相等返回0,如果第一个参数是根据当前的排序小于第二个参数顺序返回-1,否则返回1. mysql> SELECT STRCMP ...

  2. 基于nodejs的一个实时markdown转html工具小程序

    1.版本一 - 1.1`npm install marked --save` 安装markdwon转html的包.- 1.2 使用watchFile监视 markdown文件 /** * Create ...

  3. Normal Equation Algorithm

    和梯度下降法一样,Normal Equation(正规方程法)算法也是一种线性回归算法(Linear Regression Algorithm).与梯度下降法通过一步步计算来逐步靠近最佳θ值不同,No ...

  4. Java开发最常犯的10个错误,打死都不要犯!

    原文:http://www.programcreek.com/2014/05/top-10-mistakes-java-developers-make/ 译文:cnblogs.com/chenpi/p ...

  5. [BJWC2018]上学路线

    Description 小B 所在的城市的道路构成了一个方形网格,它的西南角为(0,0),东北角为(N,M). 小B 家住在西南角,学校在东北角.现在有T 个路口进行施工,小B 不能通过这些路口.小B ...

  6. Ubuntu apt-get 更新/查看软件

    ubuntu 升级软件: sudo apt-get update 更新源 sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 ubu ...

  7. mysql的数据导出方法2

    首先,使用mysqldump命令的前提是,在Cmd中进入mysql安装目录下的bin目录下,才可以使用该命令.我的mysql安装在E:盘,所以,首先进入bin目录下:E:/Program Files/ ...

  8. 一键对centos7.6安装python3环境已经pip3

    1 yum -y install "Development tools" 2 yum -y install zlib-devel bzip2-devel openssl-devel ...

  9. php操作redis--集合(set)篇

    常用函数:sAdd,sMembers,sPop,sUnion等 应用场景:与list类型类似,是一个列表的功能,不同的是set可以自动排重,提供了一个判断某一个成员是否存在一个set集合内的重要接口. ...

  10. 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,

    一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...