Educational Codeforces Round 89 (Rated for Div. 2)

A.Shovels and Swords

题意:

已知有a个木棍和b个钻石,做一个钻石铲要2个木棍和1个钻石,做一把钻石剑需要1个木棍和2个钻石,问最多总共能做多少工具。

思路

刚读完题满脑子都是:这也太MC了吧 这可咋搞,然后就开始瞎推公式了QUQ。这个就是写出来吐槽一下自己的,可以跳过QUQ。

首先设钻石铲x把,钻石剑b把,依题意易得
a > = 2 ∗ x + y b > = x + 2 ∗ y a>=2*x+y\\b>=x+2*y a>=2∗x+yb>=x+2∗y
公式两边相加变成
( a + b ) / 3 > = x + y (a+b)/3>=x+y (a+b)/3>=x+y
得到x+y的最大值。也不懂昨晚在想什么,写到这里就脑子一抽地交上去莽(WA)了一发Orz这个公式,实际上a,b的数量可能无法达到这个最大值,所以再对不满足的情况处理一下就出了。

Code

#include <bits/stdc++.h>
#define re read()
#define ll long long
#define rep(a, b, c) for(int a = b; a <= c; a++)
#define per(a, b, c) for(int a = b; a >= c; a--)
using namespace std;
int read()
{int num = 0; bool f = 0; char ch = getchar();while(ch < '0' || ch > '9') {f = (ch == '-'); ch = getchar();}while(ch >= '0' && ch <= '9') {num = (num << 1) + (num << 3) + ch - '0'; ch = getchar();}return f? -num : num;
}
int main()
{per(T, re, 1){int a = re, b = re;if(!a || !b) {puts("0"); continue;}int ans = (a + b) / 3;if(a <= ans) ans = min(a, b / 2);if(b <= ans) ans = min(ans, min(b, a / 2));printf("%d\n", ans);}return 0;
}

B.Shuffle

题意

给定n个数,第x个数为1,其余全为0。共给出m个区间,每次可将区间内任意两数位置交换,求有多少个位置在m次操作后可以为1。

思路

(废话一堆,可以直接看下一段)第一眼看完以为是输出任意一位最后可以是1的,差点就莽了,然后又去看了一波,看完人傻了,以为今晚就要跪在这里了QWQQQ然后对样例手做了一下,第一反应是做区间覆盖,感觉不太会写就又仔细想了一下。

注意,题意是每次总共只会有一个1,最后的答案是所有的可能情况之和。
题目后面补充了可以选择两个相同的数字进行交换(就是相当于可以不操作)所以,每次操作时,只要这个区间内有1存在,那么这个区间内每一个数字都可以在m次操作后为1。因此易知可以得到1的位置是一段连续区间(假设所给区间A与之前的连续区间交集为空,则区间A均不出现1)

所以我们用 l l l和 r r r记录连续区间的左右范围(显而易见 a n s = r − l + 1 ans=r-l+1 ans=r−l+1),对于每次所给的区间,若其与 [ l , r ] [l,r] [l,r]没有交集,则这个区间均不能有1。若有交,则可以用其对原连续区间进行更新。

Code

#include <bits/stdc++.h>
#define re read()
#define ll long long
#define rep(a, b, c) for(int a = b; a <= c; a++)
#define per(a, b, c) for(int a = b; a >= c; a--)
using namespace std;
int read()
{int num = 0; bool f = 0; char ch = getchar();while(ch < '0' || ch > '9') {f = (ch == '-'); ch = getchar();}while(ch >= '0' && ch <= '9') {num = (num << 1) + (num << 3) + ch - '0'; ch = getchar();}return f? -num : num;
}
int n, t, m, l, r;
int main()
{per(T, re, 1){n = re, t = re, m = re;l = r = t;rep(i, 1, m){int a = re, b = re;if(a > r || b < l) continue;l = min(l, min(t, a)), r = max(r, max(t, b));}printf("%d\n", r - l + 1);}return 0;
}

C.Palindromic Paths

题意

给定一个n*m的矩阵,矩阵中只有0/1,每次只能向左或右移动,求需要多少次更改,才可以使(1,1)->(n,m)的每一条路径均为回文。

思路

显而易见符合答案的矩阵,在到(1,1)和(n,m)的距离相等的点(距离相同的就是回文数的每一位),所对应的格子的值相等。所以题目就转换为把到(1,1)和(n,m)距离相等的所有点视为一组,并将这组点全部转换为0/1所需的最小次数,求和一下就是所要的答案。

因为只会笨笨的直观求和,所以画个图示意一下QUQ
这题的距离其实就是曼哈顿距离。如下图所示,每一条线上的每一个点到(1,1)的距离都相等(即 i + j i+j i+j相等)。利用回文串的思路,只需要把点按到(1,1)的距离相等的点划分为同一组进行统计即可。统计的部分写个三四条线就能找到规律了。

注意:因为回文中间的一位并不影响回文的性质,所以最后求和的时候不需要对这组进行统计QUQ

我太菜了,这题主要的时间都花在推回文位置和求和的循环上QUQ

Code

#include <bits/stdc++.h>
#define re read()
#define ll long long
#define rep(a, b, c) for(int a = b; a <= c; a++)
#define per(a, b, c) for(int a = b; a >= c; a--)
using namespace std;
int read()
{int num = 0; bool f = 0; char ch = getchar();while(ch < '0' || ch > '9') {f = (ch == '-'); ch = getchar();}while(ch >= '0' && ch <= '9') {num = (num << 1) + (num << 3) + ch - '0'; ch = getchar();}return f? -num : num;
}
int n, m, ans;
int a[66], b[66];
int main()
{per(T, re, 1){n = re, m = re; ans = 0;rep(i, 0, n + m) a[i] = b[i] = 0;rep(i, 1, n)  {rep(j, 1, m){int x = re;a[i + j] += x, b[i + j] += (!x);}}rep(i, 2, (n + m + 1) / 2)ans += min(a[i] + a[n + m + 2 - i], b[i] + b[n + m + 2 - i]);printf("%d\n", ans);}return 0;
}

CF1366 EDU89 菜鸡的ABC题解相关推荐

  1. 18.12.1 Nuist_ACM集训队数论专场ABC题解

    18.12.1 Nuist_ACM集训队数论专场ABC题解 Problem A Problem B Problem C Problem A 题目: HDU-4704 Sample Input 2 Sa ...

  2. 一个菜鸡的ACM之路

    花絮 做为一个大三计软狗,那么菜,打完19年的区域赛,也没时间打20年的区域赛了吧.这个学期,是我的第一次,也是最后一次,打CCPC和ICPC,忙前忙后,共打了3场:打完后,又去赶各种死亡DDL:DD ...

  3. 转专业菜鸡的秋招总结

    基础不牢 地动山摇 重拾基础 春招再战 写在前面 阿宾的高中成绩并不理想 现实不像小说 现实往往比小说更加精彩 进入12月,秋招基本收官,在结束了11月末的最后一场面试后,回顾总结了秋招的坎坷经历,悔 ...

  4. 被ACTF(虐)新人赛迫害的菜鸡的wp

    文章目录 Misc 签到 白给 Music For Free SWP 猫咪 真正的签到题 荧光 双子 Crypto crypto-classic0 Reverse Here_you_are Misc ...

  5. szu 寒训 day#3 ST表 和 LCA问题 附例题 菜鸡解法

    昨天我们讲述了树状数组今天我们来讲ST表(解决静态RMQ (Rang Minmum/Maximum Query)问题的数据结构) 假如说我们暴力去查询区间的最值得话每次操作都是O(n) 如果询问次数跟 ...

  6. 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(上)

    关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/11/es-code02/ 前提 上篇文章写了 ElasticSearch 源码解析 -- ...

  7. 个人博客(前端菜鸡)持续开发中,可前往 欢迎访问. www.amayaliu.cn

    你必须非常努力,才能看起来毫不费劲. You have to work very hard to look effortless. 个人博客(前端菜鸡)持续开发中,可前往 欢迎访问. www.amay ...

  8. bilibili源码_Java开源商城源码推荐,从菜鸡到大神,永远绕不开的商城系统

    每个Java程序员,从懵逼菜鸡,再到懵懂菜鸟,再到小鸟,大鸟,最后到技术大神,始终绕不开商城系统,里面蕴含了大量的业务,涉及到了大量的知识点和解决方案. 今天介绍一款Java开源商城源码 xmall- ...

  9. 王者荣耀10连胜,竟然也有人不相信,猎游大神带菜鸡玩家10连胜

    如果一局游戏一个人头都没有获得,甚至还送了几个人头,这一局游戏大家知道是胜利还是惨败?很多玩家都知道遇到这样的情况,这一局游戏基本上没有戏了,那就是根本不可能有太大的可能再获得胜利,特别是前期敌人顺风 ...

最新文章

  1. 深蓝学院的深度学习理论与实践课程:第三章
  2. jquery autocomplete实现solr查询字段自动填充并执行查询
  3. Python使用numpy包编写自定义函数计算均方误差(MSE、mean squared error)、评估回归模型和时间序列模型、解读MSE评估指标
  4. GANs学习系列(8):Deep Convolutional Generative Adversarial Nerworks,DCGAN
  5. 《全球人工智能产业地图》发布(附PPT图片)
  6. (原創) 我的Design Pattern之旅[3]:使用template改進Strategy Pattern (OO) (Design Pattern) (C/C++) (template)...
  7. ubuntu mysql 远程连接问题解决方法
  8. linux文件管理相关操作
  9. Haar Adaboost 视频车辆检测代码和样本
  10. atexit注册进程终止处理函数
  11. HDU 4281 Judges' response [MTSP]
  12. Linux查看设备 eth,lspci grep Eth,查看Linux下的各种硬件设备是否识别或存在之用
  13. SparkSQL练习+理解+详解
  14. JS中的location.href
  15. android 第三方裁剪,Android裁剪意向不适用于系统图库应用程序,但适用于第三方应用程序...
  16. php mysql修复_php简单备份与还原MySql的方法 | 瑕疵学院 – 学习无瑕疵,成就有保障...
  17. 例题6-4 Broken Keyboard UVa11988
  18. 旁边一位员工天天跟别人聊天,主管都不敢管,那你当什么主管
  19. java gd库_PHP GD库是什么
  20. Git 版本控制/项目迭代

热门文章

  1. 传智健康——七牛云技术用于图片存储
  2. 计算机信息处理的基础知识,计算机和信息处理基础知识.ppt
  3. Django文档——Model中的ForeignKey,ManyToManyField与OneToOneField
  4. 顶尖投资机构护航,MECHANIC实现腾飞发展!
  5. countif和sum套用_SUM、SUMIF、COUNTIF函数使用方法
  6. python全局变量一般没有缩进_关于Python的全局变量和局部变量,以下选项中描述错误的是...
  7. 【年末超级福利 | OCM第21期开班】第21期Oracle 11g OCM培训第2场将于1月2日晚上20点在腾讯课堂免费讲解...
  8. 【数学建模论文】海南省主要城市商品住宅价格分析
  9. 攻击的检测与防护方法
  10. (附源码)SSM萌宠宠物网店的设计与实现 毕业设计 011042