【题解】【CodeForces712C】Memory and De-Evolution
【题目描述】
给定一个边长为xx的正三角形,现在每秒钟你可以改变其中一条边的长度(修改量整数),在改变过程中,每秒钟都需要保证改变后的三角形是合法的,且变成均为正整数。
现在需要最终把三角形改变成边长为y的正三角形,请计算至少需要几秒钟。
【思路分析】
比赛的时候想到了用贪心,但是策略错了,导致WA掉(运气好竟然有90分)
正解:贪心
下面讲一个比较方便的方法:
题目要求从大三角形转化成小三角形,我们以下面这组数据为例22 4
一种可行方案:
(22,22,22);(7,22,22);(7,22,16);(7,10,16);
(7,10,4);(7,4,4);(4,4,4)
发现: 如果从大到小看,我们发现改变的第一条边很难具体判断改成多大
解决方案:
不如倒过来看,把小三角形转成大三角形,并不改变最终答案
每次将最小的一条边改成能达到的最大值(由于是整数,那么即另外两边的和-1)
注意一点:如果能达到的最大值已经大于x值了,那么就取x;
代码:
#include<cstdio>
#include<cmath>
#include<cctype>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
using namespace std;
inline int read()
{
char chr=getchar();
int f=1,ans=0;
while(!isdigit(chr)) {if(chr=='-') f=-1;chr=getchar();}
while(isdigit(chr)) {ans=(ans<<1)+(ans<<3)+chr-'0';chr=getchar();}
return ans*f;
}
inline void kai()
{
freopen("b.in","r",stdin);
freopen("b.out","w",stdout);
}
int x,y;
int a,b,c;
int ans=0;
void ssort(){//三个值排序
if(a>b) swap(a,b);
if(a>c) swap(a,c);
if(b>c) swap(b,c);
}
int main(){
//kai();
x=read();
y=read();
a=b=c=y;//三边都赋值为最小的边
while(a<x||b<x||c<x){//只要三边中有一边没有达到x就继续循环
ssort();//三边排序
int t=c+b-1;//能达到的最大值
a=min(x,t);//与x比,取小的
ans++;//修改了一次
}
cout<<ans;
return 0;
}
【题解】【CodeForces712C】Memory and De-Evolution的更多相关文章
- 不均匀的Windows处理器编组
不均匀的Windows处理器编组 之前写过一篇文章,关于SQLSERVER能识别多少个逻辑CPU的,前些天在论坛里有人问Windows处理器编组是如何划分的?? SQLSERVER到底能识别多少个逻辑 ...
- 【NX二次开发】NX内部函数,libugui.dll文件中的内部函数
本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: bool A ...
- SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子
一起来学演化计算-SBX(Simulated binary crossover)模拟二进制交叉算子和DE(differential evolution)差分进化算子 觉得有用的话,欢迎一起讨论相互学习 ...
- CodeForces 828E DNA Evolution(树状数组)题解
题意:给你一个串k,进行两个操作: “1 a b”:把a位置的字母换成b “2 l r s”:求l到r有多少个字母和s匹配,匹配的条件是这样:从l开始无限循环s形成一个串ss,然后匹配ss和指定区间的 ...
- Educational Codeforces Round 59 (Rated for Div. 2) DE题解
Educational Codeforces Round 59 (Rated for Div. 2) D. Compression 题目链接:https://codeforces.com/contes ...
- differential evolution代码实例(DE算法)
DE算法是遗传算法中一种比较流行的算法,这种算法比较简单,速度也比较快,下面给出一份示例代码 clear all; close all; clc 2 %Function to be minimized ...
- codeforces1111 简单题【DE】简要题解
D 很显然可以用一个背包算出来凑齐i个位置的方案 然后总的答案就是\(dp_{n / 2}\) 然后需要扣掉不符合条件的就是把选出来的数的贡献剪掉的贡献 然后注意因为是多重集合的排列,所以需要乘上\( ...
- 题解 CF712C 【Memory and De-Evolution】
看到题我第一反应就是while循环 但是我竟然想正着推,失败,卡了十几分钟 后来我回来看到第三组测试数据 想到倒推 但是没坚持 于是我又卡了很久 过会我又回来想 AC了... 这个故事告诉我们,要努力 ...
- 2021 ICPC Gran Premio de Mexico 2da Fecha部分题题解
前面的水题,在队友的配合下,很快就拿下了,剩下几道大毒瘤题,一直罚座三个小时,好让人自闭...但不得不说,这些题的质量是真的高! H. Haunted House 首先看这个题,大眼一扫,觉得是某种数 ...
随机推荐
- git 如何创建一个分支
参考: https://jingyan.baidu.com/article/adc81513b95a20f723bf73bf.html 首先进入本地git仓库目录下,打开git bash环境 使用gi ...
- CDR软件-CorelDRAW软件下载,618活动
618我有诚意,你呢? 不花钱的618,是残缺的618 给自己一个放肆shopping的机遇 活动力度不够大? 继续升级,终极体验 618疯狂倒计时! 同志们,如果你错过了之前的抢先购和升级活动 那么 ...
- APIshop精选接口助力双十一电商业务
距离2018年双11的购物盛典已经不到一个月了,各大电商之间的战役已经悄然打响,今年的双11仍会是一场电商鏖战,想必又会打破2017年双11近2540亿的全网成交总额记录. 据统计,去年双11全天共产 ...
- c++ map: 根据value逆向查找key
#include <iostream> #include <map> #include <algorithm> #include <vector> #i ...
- yum插件
参考文章: http://www.linuxfly.org/post/297/ [root@dnstest07.tbc /home/ahao.mah] #rpm -qa |grep yum yum-p ...
- BZOJ 1051 HAOI 2006 受欢迎的牛
[题解] 先用tarjan缩点,然后如果某个强联通分量的出度为0,则该强联通分量内的点数为答案,否则无解.因为若其他所有的强联通分量都有边连向Ai,则Ai必定没有出边,否则Ai连向的点所属的强联通分量 ...
- 如何在Tomcat (6/7/8.0) 安装SSL证书
第一步:进入Tomcat安装目录,把证书的jks格式文件放在tomcat安装目录的conf目录下即可. conf/ssl/371cloud.cn.jks 第二步: 打开tomcat配置文件 conf/ ...
- Python 2 声明变量 输入输出 练习
变量: 代指,用于将具体信息对应到一个值,便于反复使用时方便调用.例如 name = ("斯诺登") 变量声明规则:以字母开头的 字母数字下划线的组合.且不能是python代 ...
- 华为USG6350防洪墙SNMP最简单功能配置
https://www.cnblogs.com/vincent-liang/p/7785089.html
- POJ 3061 Subsequence 尺取
Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14698 Accepted: 6205 Desc ...