A.Berstagram

题意:起始数列是1,2,3,……,n,给你m个操作x,表示将数字x和前一个位置的数交换,如果已经在第一个则不做操作,求每个数能到达的位置的最大和最小值;

分析:扫一遍模拟,更新左右极限;

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+7;
int a[maxn],pos[maxn],l[maxn],r[maxn];
int main()
{int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) a[i]=l[i]=r[i]=i,pos[i]=i;for(int i=1;i<=m;i++){int x;scanf("%d",&x);if(a[x]==1) continue;int s1=a[x];int y=pos[s1-1];a[x]--;a[y]++;l[x]=min(l[x],a[x]);r[x]=max(r[x],a[x]);l[y]=min(l[y],a[y]);r[y]=max(r[y],a[y]);swap(pos[s1],pos[s1-1]);}for(int i=1;i<=n;i++) printf("%d %d\n",l[i],r[i]);return 0;
}

B. The Feast and the Bus

题意:一辆巴士可以搭乘一整支或两整支队伍,费用是每一趟的最大承载人数*趟数,求最小费用;

分析:贪心+二分check;如果每次都只搭乘一支队伍,答案可以直接得到;每次可搭乘一支或两支时,按照每支队伍的人数排序,二分巴士的最大承载人数,贪心构造乘车的两支队伍,即就是当前的最大+最小,如果放不下那就是最大单独乘坐,因为最小还可以和次大构造;

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=8007;
int num[maxn];
ll rua()
{int n,k,x,cnt=0;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++) scanf("%d",&x),num[x]++;sort(num+1,num+1+k);int mx=0;for(int i=1;i+i<=k;i++) mx=max(mx,num[i]+num[k-i+1]);if(k&1) mx=max(mx,num[k/2+1]);ll ans=(ll)1e18;for(int i=num[k];i<=mx;i++){int l=1,r=k,tmp=0;while(l<=r){tmp++;if(l!=r && num[l]+num[r]<=i) l++,r--;else r--;}ans=min(ans,1ll*tmp*i);} return ans;
}
int main()
{printf("%lld\n",rua());return 0;
}

F. Data Center

题意:给你一个矩形面积,求最小周长(整数)

分析:这种都不会干脆别打ACM了

#include<bits/stdc++.h>
using namespace std;
int main()
{int n,ans=(int)1e9;scanf("%d",&n);for(int i=1;i*i<=n;i++) if(n%i==0) ans=min(ans,i+n/i);printf("%d\n",ans+ans);
}

H. Happy Birthday

题意:给你0~9这10个数字的个数,求不能构造的数中的最小值;

分析:分类讨论;非零数的个数为0时,答案是他本身;按照个数升序+数值升序排序,个数最少的数非零时,答案时个数+1个它本身,否则继续分类:0的个数最小时,如果还有跟他个数相同的x,答案时个数+1个x;否则就是1+(个数+1)个0;

#include<bits/stdc++.h>
using namespace std;
int cnt[15];
struct node{int num,x;} p[15];
bool cmp(node a,node b) {return a.num==b.num?(a.x<b.x):(a.num<b.num);}
void rua()
{for(int i=0;i<=9;i++) scanf("%d",&p[i].num),p[i].x=i,cnt[i]=p[i].num;sort(p,p+10,cmp);for(int i=0;i<=9;i++)if(p[i].num==0 && p[i].x>0) {printf("%d\n",p[i].x);return;}if(p[0].x==0) {if(p[1].num==p[0].num){while(p[1].num--) printf("%d",p[1].x);printf("%d\n",p[1].x);return;}printf("1");while(cnt[0]--) printf("0");printf("0\n");return;}while(p[0].num--) printf("%d",p[0].x);printf("%d\n",p[0].x);return;
}
int main()
{int t;scanf("%d",&t);while(t--) rua();return 0;
}

J. The Parade

题意:给出身高为1~n的人数,要求每一行的人身高差不超过1,并且每一行的人数相同,求最多多少人能进入方阵;

分析:贪心+二分check;二分每一行的人数,记下剩余的人数,如果身高+1的和剩余不能凑成一行,剩余的人就不要;

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+7;
typedef long long ll;
ll a[maxn];
int n;
ll k;
bool check(ll mid)
{ll cnt=0,res=mid;for(int i=1;i<=n;i++){ll x=a[i];if(x>=res) cnt++,x-=res;cnt+=x/mid;res=mid-x%mid;if(cnt>=k) return true;}return cnt>=k;
}
ll rua()
{ll sum=0;scanf("%d%lld",&n,&k);for(int i=1;i<=n;i++) scanf("%lld",&a[i]),sum+=a[i];ll l=1,r=sum/k,ans=0;while(l<=r){ll mid=(l+r)>>1;if(check(mid)) ans=mid,l=mid+1;else r=mid-1;}return k*ans;
}
int main()
{int t;scanf("%d",&t);while(t--) printf("%lld\n",rua());return 0;
}

L. Divide The Students

题意:给出a b c三种人数的个数,把他们分成三组,a和c不能分在同一组,问三组人数中最大值的最小值是多少;

分析:贪心+二分check;二分答案,贪心的构造答案,看代码就好了;

#include<bits/stdc++.h>
using namespace std;
int a,b,c;
bool check(int x)
{if(a>x && c>x) return false;int a1=a,b1=b,c1=c;if(a1>x){a1-=x;if(a1>x) return false;if((x-a1)+(x-c1)>=b1) return true;else return false;}else if(c1>x){c1-=x;if(c1>x) return false;if((x-c1)+(x-a1)>=b1) return true;else return false;}else if((x-a1)+(x-c1)+x>=b1) return true;else return false;
}
void rua()
{scanf("%d%d%d",&a,&b,&c);int l=(a+b+c+2)/3,r=max({a,b,c}),ans;while(l<=r){int mid=(l+r)>>1;if(check(mid)) ans=mid,r=mid-1;else l=mid+1;}printf("%d\n",ans);
}
int main()
{int t;scanf("%d",&t);while(t--) rua();return 0;
}

2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest相关推荐

  1. 2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest Smash the Trash(二分)

    2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest Smash the Trash(二分) 链接 题意: 思路:二分答案 ...

  2. 2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest X-Magic Pair(gcd)

    2021-2022 ICPC, NERC, Southern and Volga Russian Regional Contest X-Magic Pair(gcd) 链接 题意:给出a,b,有两种选 ...

  3. 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest 部分题解ABFHJLN

    2020-10-10为了准备CCPC,师兄下午拉了场ICPC练习让我们模拟,负责读题的菜鸡晚上回来重新做了模拟场上有思路的题QAQ 文章目录 A - Berstagram B - The Feast ...

  4. 2020-2021 ICPC, NERC, Southern and Volga Russian Regional Contest K. The Robot

    翻译: 有一个机器人在一个没有尽头的方格场上.最初,机器人位于坐标为(0,0)的单元中.他将执行由一串大写拉丁字母"L"."R"."D".& ...

  5. 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest B. The Feast and the Bus (经典贪心)

    题目链接 思路:先把k个团队的人数从大到小排序,我们发现s最小是num[1],那么s最大是num[1]+num[2]?可是我们这样想的话容易被毒瘤数据tle,所以还得优化一下,我们可以想我们最优的方案 ...

  6. 2020-2021 ICPC, NERC, Southern and Volga Russian Regional Contest B. Bakery

    题目链接 Monocarp would like to open a bakery in his local area. But, at first, he should figure out whe ...

  7. 2020-2021 ICPC, NERC, Southern and Volga Russian Regional Contest A. LaIS

    题目链接 Let's call a sequence b1,b2,b3-,bk−1,bkb_1, b_2, b_3 \dots, b_{k - 1}, b_kb1​,b2​,b3​-,bk−1​,bk ...

  8. 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest J. The Parade(二分)

    题目链接 题意:给定身高为1-n的士兵数量,现在要求士兵分成k排,要求每一排士兵身高差不能超过1,求最多有多少士兵可以拿出来排. 思路:又是一个裸的二分题,但是写check函数的时候确遇到了bug.. ...

  9. 2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest J. The Parade(二分+贪心)

    题目链接 大意:给你一个组士兵,告诉你身高iii的人数aia_iai​,让你放在kkk行,使得每行人数相同且每行中士兵身高差不超过111,问你最多能放多少士兵满足条件. 思路:二分每行人数.证明:如果 ...

最新文章

  1. HDU 3081 Marriage Match II【并查集+二分图最大匹配】
  2. MFC笔记2(控件位置调整)
  3. 数据传输服务 DTS > 数据迁移 > 从自建数据库迁移至阿里云 > 源库为MySQL > 从自建MySQL迁移至RDS MySQL
  4. VS2012 安装出错 :通道正在关闭
  5. ue4渲染速度太慢_推介飞向月球纪录片基于Unreal实时渲染引擎的三维流程化制作...
  6. log4j 打印线程号配置_Log4J日志整合及配置详解
  7. java oracle sqlldr,oracle sqlldr
  8. c#仿qq好友列表控件
  9. 基于Android手机校园外卖订餐系统
  10. Perl中use strict
  11. apache、php安装
  12. 海龟交易法则(策略源码)
  13. andro studio关于Intel HAXM is required to run this AVD
  14. ssm框架搭建过程中的bug(石乐志)
  15. 【IO】SBIO,SNBIO,ANIO,AIO
  16. some和every的区别和用法
  17. python证书微软认证_怎样考取微软工程师?
  18. 不同版本python的升级和安装
  19. WSH:一款功能强大的Web Shell生成器和命令行接口工具
  20. Linux环境搭建(最全的搭建过程)

热门文章

  1. 大数据:数据库类型简介
  2. DEH-NTK系列汽轮机综合控制系统 操作说明书
  3. openGauss单节点一键安装脚本
  4. 通过wireshark抓取Lookback数据包
  5. Qt for WebAssembly
  6. 如何做一个基于微信物业维修报修小程序系统毕业设计毕设作品
  7. gpio引脚编号计算 GPIO1_20,那么引脚编号就可能等于 1 x 32 + 20 = 54。
  8. C++ gsoap多接口导出步骤
  9. puzzle(0333)色块拼图、物换星移、移星掠形
  10. App发版流程及注意事项