博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #258
阅读量:6061 次
发布时间:2019-06-20

本文共 3325 字,大约阅读时间需要 11 分钟。

A.

  就发现选定一个点之后,会删除相应的行列,即n-1,m-1,所以只需要看min(n,m)是基是偶

#include 
#include
#include
using namespace std;int n, m;int main(){#ifdef LOCAL freopen("451A.in", "r", stdin);#endif cin >> n >> m; n = min(n, m); if(n&1) cout << "Akshat" << endl; else cout << "Malvika" << endl; return 0;}

 

B.

  把中间逆序之后整个串是递增的,所以原串是递增、递减、递增,所以只需要找到中间串的头,尾,然后判断逆序之后,是否整个串是递增的,最后步一开始被我忽略了...

  感觉不是很好写,所以又想,既然逆序之后是递增的,那我用把原数组排序,再用比较是否相同的方法找到中间串的头尾,然后对中间串比较a[i] == b[j],i从左边开始,j从右边开始

 

  一开始中间串比较结束条件写成了i <= j 这样只比较了一半...判断是不是回文才该这样啊...应该i <= r 全部扫一遍

 

#include 
#include
#include
#include
using namespace std;const int maxn = 100000+50;int n, l, r;long a[maxn], b[maxn];int main(){#ifdef LOCAL freopen("451B.in", "r", stdin);#endif cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; b[i] = a[i]; } l = r = 1; sort(b+1, b+1+n); for(int i = 1; i <= n; i++) if(a[i] != b[i]) { l = i; break; } for(int i = n; i >= 1; i--) if(a[i] != b[i]) { r = i; break; } bool ok = true; for(int i = l, j = r; i <= r; i++, j--) if(a[i] != b[j]) { ok = false; break; } if(ok) cout << "yes" << endl << l << ' ' << r << endl; else cout << "no" <

 

C.

  初看不知道怎么搞,就随便先样例试着推一下

  然后发现好像把x-y=d1,y-z=d2列出来,结合x+y+z=k(x,y,z代表球队胜率场数)

  是能够把y解出来的!!!代入就能把三个未知数解出来...题目的问法也很傻逼,就问你能不能

  所以分四种情况的方程来解(见代码),注意能不能整除,以及容易推出的结论,yes = x and y and z < n/3 (n不能整除3就直接挂啦)

  当然检查解是否大于0也是必要的,至于整数,代码中都是整数的封闭运算

 

#include 
#include
#include
using namespace std;int t;long long x, y, z, n, k, d1, d2;bool ok;bool check(){ long long up = n/3; if(x < 0 || y < 0 || z < 0) return false; if(x > up || y > up || z > up) return false; if(x+y+z != k) return false; return true;}int main(){#ifdef LOCAL freopen("451C.in", "r", stdin);#endif scanf("%d", &t); while(t--) { ok = false; scanf("%lld%lld%lld%lld", &n, &k, &d1, &d2); if(n % 3) { cout << "no" << endl; continue; } //x-y=d1 //y-z=d2 //x-2y+z=d1-d2 y = k-d1+d2; if(y % 3 == 0) { y /= 3; x = d1+y; z = y-d2; if(check()) ok = true; } //x-y=d1 //z-y=d2 //x-2y+z=d1+d2 y = k-d1-d2; if(y % 3 == 0) { y /= 3; x = y+d1; z = y+d2; if(check()) ok = true; } //y-x=d1 //y-z=d2 //-x+2y-z=d1+d2 y = k+d1+d2; if(y % 3 == 0) { y /= 3; x = y-d1; z = y-d2; if(check()) ok = true; } //y-x=d1 //z-y=d2 //-x+2y-z=d1-d2 y = k+d1-d2; if(y % 3 == 0) { y /= 3; x = y-d1; z = y+d2; if(check()) ok = true; } if(ok) cout << "yes" << endl; else cout << "no" << endl; }}

 

  也是运气比较好,虽然B挂了,A+C也有1400+分,然后400+,rank 1600咯 保住了蓝名

 

  做CF就先稳住前三题,上分妥妥的

 

转载于:https://www.cnblogs.com/gemmeg/p/3869759.html

你可能感兴趣的文章
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>
Linux 获取文件夹下的所有文件
查看>>
对 Sea.js 进行配置(一) seajs.config
查看>>
dom4j解析xml文件
查看>>
第六周
查看>>
斯坦福大学公开课机器学习:梯度下降运算的学习率a(gradient descent in practice 2:learning rate alpha)...
查看>>
matlab练习程序(生成黑白网格)
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
Java8系列之重新认识HashMap
查看>>
根据Uri获取文件的绝对路径
查看>>
Fundebug前端JavaScript插件更新至1.6.0,新增test()方法用于测试
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
复杂业务下,我们为何选择Akka作为异步通信框架?
查看>>