链接: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-存储过程动态执行sql

    存储过程动态执行 sql --存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数 create procedure p_procedurecode(in sumd ...

  2. 研究一下phpspider

    官方文档 1.下载 官方github下载地址: https://github.com/owner888/phpspider 下载地址可能无法访问,这里提供一个网盘下载地址: 链接: https://p ...

  3. ubuntu16安装,配置前端开发环境

    1.安装ubuntu    使用usio制作U盘安装工具 2.安装搜狗输入法 3.安装QQ 4.安装nodejs node-v0.12.4 node-v0.12.4.tar.gz root@ubunt ...

  4. linux shell unzip multiple zip files

    find . -name "*.result.zip" | xargs -n 1 unzip - -P password -d ../ext_logs

  5. Leetcode 跳跃游戏 II

    题目链接:https://leetcode-cn.com/problems/jump-game-ii/ 题目大意: 略. 分析: 贪心 + DP. 代码如下: class Solution { pub ...

  6. qcom_IMS_conference_call小结

    1conference call建立 用QXDM抓qcom log: 1.拨号盘*#*#825364#*#*    ,  进入抓log UI 2.Connectivity-->USB Port ...

  7. 使用正则限制input框只能输入数字/英文/中文等等

    常用HTML正则表达式 1.只能输入数字和英文的: 复制代码代码如下: <input onkeyup="value=value.replace(/[/W]/g,'') " o ...

  8. 使用 C++ 编写的基础 Windows 服务 (CppWindowsService)

    最近项目中涉及到使用C++写一个后台服务程序,找了很多资料,还是使用Google搜索找到了比较详细点的资料,就是从微软官方MSDN的例子,如下: 使用 C++ 编写的基础 Windows 服务 (Cp ...

  9. python基础【第八篇】

    day06笔记 1.小数据池 is 与 ==的区别 ​ is :判断两边的内存地址是否相同 ​ ==:判断两边的值是否相同 python中的驻留机制: 数字: -5 ~ 256 字符串: 3.6 乘法 ...

  10. python获取Linux发行版名称

    我必须从Python脚本中获取Linux发行版名称.dist平台模块中有一个方法: import platform platform.dist() 但在我的Arch Linux下它返回: >&g ...