F. Multicolored Markers

题目大意:

给你 a个红块 b个蓝块 拼成一个实心矩形,并且要求红块或者蓝块自成一个矩形,问形成的这个矩形最小的周长是多少。

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <queue>
  5. #include <stack>
  6. #include <bitset>
  7. #include <vector>
  8. #include <map>
  9. #include <string>
  10. #include <cstring>
  11. #include <bitset>
  12. #define inf 0x3f3f3f3f
  13. #define inf64 0x3f3f3f3f3f3f3f3f
  14. using namespace std;
  15. const int maxn=2e5+;
  16. typedef long long ll;
  17. vector<pair<ll,ll>>G[];
  18. ll a,b;
  19.  
  20. void init(){
  21. ll sum=a+b;
  22. for(ll i=;i*i<=sum;i++){
  23. if(sum%i==){
  24. G[].push_back(make_pair(i,sum/i));
  25. }
  26. }
  27. for(ll i=;i*i<=a;i++){
  28. if(a%i==){
  29. G[].push_back(make_pair(i,a/i));
  30. }
  31. }
  32. for(ll i=;i*i<=b;i++){
  33. if(b%i==){
  34. G[].push_back(make_pair(i,b/i));
  35. }
  36. }
  37. }
  38.  
  39. bool check(int num,int u,ll x){
  40. if(G[num][u].first<=x) return true;
  41. return false;
  42. }
  43.  
  44. int main(){
  45. scanf("%lld%lld",&a,&b);
  46. init();
  47. ll ans=inf64;
  48. for(int i=;i<G[].size();i++){
  49. ll len=G[][i].first;
  50. int l=,r=G[].size()-,res=-;
  51. while(l<=r){
  52. int mid=(l+r)>>;
  53. if(check(,mid,len)) l=mid+,res=mid;
  54. else r=mid-;
  55. }
  56. if(res!=-&&G[][i].second>=G[][res].second) ans=min(ans,*(G[][i].first+G[][i].second));
  57. }
  58. for(int i=;i<G[].size();i++){
  59. ll len=G[][i].first;
  60. int l=,r=G[].size()-,res=-;
  61. while(l<=r){
  62. int mid=(l+r)>>;
  63. if(check(,mid,len)) l=mid+,res=mid;
  64. else r=mid-;
  65. }
  66. if(res!=-&&G[][i].second>=G[][res].second) ans=min(ans,*(G[][i].first+G[][i].second));
  67. }
  68. printf("%lld\n",ans);
  69. return ;
  70. }

F. Multicolored Markers 暴力+二分的更多相关文章

  1. Codeforces Round #506 (Div. 3) 1029 F. Multicolored Markers

    CF-1029F 题意: a,b个小正方形构造一个矩形,大小为(a+b),并且要求其中要么a个小正方形是矩形,要么b个小正方形是矩形. 思路: 之前在想要分a,b是否为奇数讨论,后来发现根本不需要.只 ...

  2. F. Multicolored Markers(数学思维)

    思维:思维就是将大的矩形放在小矩形里面,让大矩形的宽和长尽量靠近. 很容易得到 (a+b)% i = 0 的话, 保证了大矩形的形成,同时里面表示了两种情况:1, a % i =0, b % i=0; ...

  3. poj3977 - subset - the second time - 暴力 + 二分

    2017-08-26 11:38:42 writer:pprp 已经是第二次写这个题了,但是还是出了很多毛病 先给出AC代码: 解题思路: 之前在培训的时候只是笼统的讲了讲怎么做,进行二分对其中一边进 ...

  4. Vijos P1116 一元三次方程求解【多解,暴力,二分】

    一元三次方程求解 描述 有形如:ax^3+bx^2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之 ...

  5. Codeforces Round #367 (Div. 2) A B C 暴力 二分 dp(字符串的反转)

    A. Beru-taxi time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  6. Subsequence(暴力+二分)

    Subsequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10875   Accepted: 4493 Desc ...

  7. Codeforces 899 F. Letters Removing (二分、树状数组)

    题目链接:Letters Removing 题意: 给你一个长度为n的字符串,给出m次操作.每次操作给出一个l,r和一个字符c,要求删除字符串l到r之间所有的c. 题解: 看样例可以看出,这题最大的难 ...

  8. I Count Two Three HDU - 5878(暴力二分)

    为甚么16年Qingdao Online 都是暴力题emm///... 先暴力预处理 然后lower _bound二分 #include <iostream> #include <c ...

  9. HDU6127 简单几何 暴力二分

    LINK 题意:给出n个点,每个点有个权值,可以和任意另外一点构成线段,值为权值积.现问过原点的直线中交所有线段的权值和的最大值,注意直线必不经过点. 思路:直线可以将点集分为两侧,此时的权值为两侧点 ...

随机推荐

  1. java解惑之常常忘记的事

    java解惑之常常忘记的事 2012-10-17 18:38:57|  分类: JAVA |  标签:基础知识  软件开发  |举报|字号 订阅     针对刚接触java的菜鸟来说,java基础知识 ...

  2. 运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接

    运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接 最近在项目中可能要用到socket相关的东西来发送消息,所以初步研究了下socket的TC ...

  3. Docker-准备Docker环境

    1. 前言 要学习Docker,首先要搭建出虚拟机和docker环境.我的笔记本电脑是windows7系统,用VirtualBox创建虚拟机.虚拟机操作系统为CentOS7.5,Docker版本为18 ...

  4. VCL安装有哪几种方法?

    不是由Borland 提供的组件叫第三方组件: 就目前常见的各种形式的组件的安装方法介绍一下. 1.只有一个DCU文件的组件.DCU文件是编译好的单元文件,这样的组件是作者不想把源码公布.一般来说,作 ...

  5. 百度api实现人脸对比

    第一步(注册账号): 点这里注册百度云账号 如图: 创建应用得到 APP_ID API_KEY SECRET_KEY   第二步(代码): import requests import base64 ...

  6. 移动端Vue组件库-Vant学习

    全局引入 import Vant from 'vant'; //嫌麻烦就全部一次导出,虽然包会稍微有点大 import 'vant/lib/index.css'; //注意导入全局的这个css,否则布 ...

  7. 关于MIME类型问题,浏览器请求到的资源是乱码

    简介 我想很多同学都可能会遇到这样的问题,调用后台提共的静态资源服务api时,用浏览器打开发现却是一堆乱码.需要的是 JSON, 拿到的却是 xml,访问一个mp4的文件,浏览器直接下载.这一切的来源 ...

  8. 1. git 本地给远程仓库创建分支 三步法

    命令如下: 1:本地创建分支dev 1 2 Peg@PEG-PC /D/home/myself/Symfony (master) $ git branch dev 2:下面是把本地分支提交到远程仓库 ...

  9. 4.JS跳转路由/刷新/返回页面

    1.JS跳转路由(需要拿到父组件的history) clickHandle(){ let history = this.props.history; history.push( '/home') } ...

  10. CVE-2019-0193 Apache solr velocity模块漏洞

    Solr简单介绍 Solr是建立在Apache Lucene ™之上的一个流行.快速.开放源代码的企业搜索平台. Solr具有高度的可靠性,可伸缩性和容错能力,可提供分布式索引,复制和负载平衡查询,自 ...