题面:

题意:
有 nnn 种颜色的变色龙,其中第 iii 种颜色的变色龙有 ai,(ai>=n−1)a_i ,(a_i>=n-1)ai​,(ai​>=n−1) 只。
我每次可以选择 n−1n-1n−1 只不同颜色的变色龙,让他们变成 y,y>=n−1y,y>=n-1y,y>=n−1 未选择的那种颜色的变色龙。

现在我想让所有的变色龙都变为第 ccc 种颜色,至少需要经过几次操作。

题解:
我们发现变化时,两个颜色之间的变色龙数量之间的差值只会变化 (y+1)(y+1)(y+1) 的倍数。
所以我们 checkcheckcheck 他们之间的差值是否都是 (y+1)(y+1)(y+1)的倍数即能得到可行状态。因为保证了 ai>=n−1,y>=n−1a_i>=n-1,y>=n-1ai​>=n−1,y>=n−1 所以一定可以到达最终状态。

考虑操作最小值,那么一定是除去第 ccc 种颜色后,我们设剩余的变色龙的数量的最大值为 maxxmaxxmaxx,如果操作要最小的话,那么这个 maxxmaxxmaxx 每一次都减少即可,即需要操作 maxxmaxxmaxx 次。

最终颜色为 ccc 的变色龙的数量为 (maxx−ans)∗y+ac−ans(maxx-ans)*y+a_c-ans(maxx−ans)∗y+ac​−ans。
其中 ansansans 为,其余的变色龙数量达到 maxxmaxxmaxx 需要的操作次数。因为 maxxmaxxmaxx 每次都减少,所以最终只会操作 maxxmaxxmaxx 次,其中有 ansansans 次,颜色为 ccc 的变色龙不增加且减少 111。

代码:

#pragma GCC optimize(2)
#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#include<queue>
#include<bitset>
#include<map>
#include<unordered_map>
#include<set>
namespace onlyzhao
{#define ui unsigned int#define ll long long#define llu unsigned ll#define ld long double#define pr make_pair#define pb push_back#define lc (cnt<<1)#define rc (cnt<<1|1)#define len(x)  (t[(x)].r-t[(x)].l+1)#define tmid ((l+r)>>1)#define fhead(x) for(int i=head[(x)];i;i=nt[i])#define max(x,y) ((x)>(y)?(x):(y))#define min(x,y) ((x)>(y)?(y):(x))#define one(n) for(int i=1;i<=(n);i++)#define rone(n) for(int i=(n);i>=1;i--)#define fone(i,x,n) for(int i=(x);i<=(n);i++)#define frone(i,n,x) for(int i=(n);i>=(x);i--)#define fonk(i,x,n,k) for(int i=(x);i<=(n);i+=(k))#define fronk(i,n,x,k) for(int i=(n);i>=(x);i-=(k))#define two(n,m) for(int i=1;i<=(n);i++) for(int j=1;j<=(m);j++)#define ftwo(i,n,j,m) for(int i=1;i<=(n);i++) for(int j=1;j<=(m);j++)#define fvc(vc) for(int i=0;i<vc.size();i++)#define frvc(vc) for(int i=vc.size()-1;i>=0;i--)#define forvc(i,vc) for(int i=0;i<vc.size();i++)#define forrvc(i,vc) for(int i=vc.size()-1;i>=0;i--)#define cls(a) memset(a,0,sizeof(a))#define cls1(a) memset(a,-1,sizeof(a))#define clsmax(a) memset(a,0x3f,sizeof(a))#define clsmin(a) memset(a,0x80,sizeof(a))#define cln(a,num) memset(a,0,sizeof(a[0])*num)#define cln1(a,num) memset(a,-1,sizeof(a[0])*num)#define clnmax(a,num) memset(a,0x3f,sizeof(a[0])*num)#define clnmin(a,num) memset(a,0x80,sizeof(a[0])*num)#define sc(x) scanf("%d",&x)#define sc2(x,y) scanf("%d%d",&x,&y)#define sc3(x,y,z) scanf("%d%d%d",&x,&y,&z)#define scl(x) scanf("%lld",&x)#define scl2(x,y) scanf("%lld%lld",&x,&y)#define scl3(x,y,z) scanf("%lld%lld%lld",&x,&y,&z)#define scf(x) scanf("%lf",&x)#define scf2(x,y) scanf("%lf%lf",&x,&y)#define scf3(x,y,z) scanf("%lf%lf%lf",&x,&y,&z)#define scs(x) scanf("%s",x+1)#define scs0(x) scanf("%s",x)#define scline(x) scanf("%[^\n]%*c",x+1)#define scline0(x) scanf("%[^\n]%*c",x)#define pcc(x) putchar(x)#define pc(x) printf("%d\n",x)#define pc2(x,y) printf("%d %d\n",x,y)#define pc3(x,y,z) printf("%d %d %d\n",x,y,z)#define pck(x) printf("%d ",x)#define pcl(x) printf("%lld\n",x)#define pcl2(x,y) printf("%lld %lld\n",x,y)#define pcl3(x,y,z) printf("%lld %lld %d\n",x,y,z)#define pclk(x) printf("%lld ",x)#define pcf2(x) printf("%.2f\n",x)#define pcf6(x) printf("%.6f\n",x)#define pcf8(x) printf("%.8f\n",x)#define pcs(x) printf("%s\n",x+1)#define pcs0(x) printf("%s\n",x)#define pcline(x) printf("%d**********\n",x)#define casett int tt;sc(tt);int pp=0;while(tt--)char buffer[100001],*S,*T;inline char Get_Char(){if (S==T){T=(S=buffer)+fread(buffer,1,100001,stdin);if (S==T) return EOF;}return *S++;}inline int read(){char c;int re=0;for(c=Get_Char();c<'0'||c>'9';c=Get_Char());while(c>='0'&&c<='9') re=re*10+(c-'0'),c=Get_Char();return re;}
};
using namespace onlyzhao;
using namespace std;const int inf=0x3f3f3f3f;
const ll lnf=0x3f3f3f3f3f3f3f3f;
const double dnf=1e9;
const int mod=998244353;
const double eps=1e-9;
const double pi=acos(-1.0);
const int hp=13331;
const int maxn=1000100;
const int maxm=100100;
const int up=100100;ll a[maxn];int main(void)
{ll n,c,y;ll val;scanf("%lld%lld%lld",&n,&c,&y);ll x,cnt=0;for(int i=1;i<=n;i++){scanf("%lld",&x);if(i==c) val=x;else a[++cnt]=x;}sort(a+1,a+cnt+1);ll maxx=a[cnt];bool flag=true;ll ans=0;for(int i=1;i<=cnt;i++){if((a[cnt]-a[i])%(y+1)!=0){flag=false;break;}ans+=(a[cnt]-a[i])/(y+1);}if(flag==false){printf("impossible\n");}else{printf("%lld %lld\n",maxx,(maxx-ans)*y+val-ans);}return 0;}

石油大--2020年秋季组队训练赛第十三场---- C、Colourful Chameleons(思维)相关推荐

  1. 石油大--2020年秋季组队训练赛第十三场----B、Bouldering(最短路)

    题面: 题意: 给定一个 h∗wh*wh∗w 点阵,其中某一些点是可以走的. 这些点都有一个权值,表示如果经过当前点,则会花费的力气. 给定一个 rrr,你只能从当前点到达与你欧几里得距离不超过 rr ...

  2. 石油大--2020年秋季组队训练赛第十二场----J、Greedy Termite(线段树)

    题面: 题意: 给定正整数 nnn 和起始位置 sss. nnn 表示有 nnn 个杆子,每个杆子由属性 (xi,hi)(x_i,h_i)(xi​,hi​) 构成,表示在 xix_ixi​ 处有一根高 ...

  3. 石油大--2020年秋季组队训练赛第十二场---- L、The Assembly Code(模拟)

    题面: 题意: 就是题目有点长,写起来直接写就好啦. 有一个长度为 232,0≤i<2322^{32},0\le i <2^{32}232,0≤i<232 数组 MMM , MiM_ ...

  4. 石油大--Contest2022 - 2020年秋季组队训练赛第二场--17100 Problem D、Find String in a Grid (AC自动机)

    题面: 题意: 给定一个 R∗CR*CR∗C 的字符矩阵,由大写字母构成. 有 qqq 个询问,每次给定一个由大写字母构成的字符串,问这个字符串在这个字符矩阵中出现了多少次. 某个字符串在矩阵中出现定 ...

  5. UPC 2020年秋季组队训练赛第十四场

    问题 A: Too Expensive to Buy a House 时间限制: 1 Sec 内存限制: 128 MB 题目描述 WNJXYK and DIDIDI are good friends ...

  6. 【upc】2020年秋季组队训练赛第十二场J Greedy Termite | 删点线段树

    状态 题目描述 There are n wooden rods vertically placed over a horizontal line. The rods are numbered 1 th ...

  7. 【DFS反向建图记忆化搜索】UPC Contest2592 - 2020年秋季组队训练赛第十四场 问题 D: Mysterious Treasure

    问题 D: Mysterious Treasure 时间限制: 1 Sec 内存限制: 128 MB 题目描述 WNJXYK and DIDIDI is playing a game. DIDIDI ...

  8. 【upc】2020年秋季组队训练赛第十四场 Get Strong | 折半搜索、二分

    题目描述 WNJXYK and DIDIDI are friends. They are thinking about getting strong all the time. They are pl ...

  9. 2013-8-14大一大二暑期组队训练赛

    1001 Time Limit : 5000/2000ms (Java/Other)   Memory Limit : 65535/65535K (Java/Other) Total Submissi ...

最新文章

  1. spring控制事务:声明式事务(注解)
  2. php代码丑,php – 屏幕截图你生命中见过的最丑陋的HTML
  3. Facebook 又搞事,违反竞业协议被起诉,PyTorch 关键技术疑侵权
  4. Next.js提供了基于React的简单通用JavaScript框架
  5. Video for linux 2 example (v4l2 demo)
  6. 查找与清除线程插入式木马(转)
  7. 计算机信息中心的安全生产责任,信息中心安全生产责任制 (刘.doc
  8. 信息搜集-敏感信息泄露
  9. C个java都是多线程语言对吗_Java里的多线程
  10. C语言8.14文曲星上的猜数游戏
  11. C++学习记录3:定义一个矩形类Rectangle
  12. 052试题 97 - SQL*Loader Direct Path and Conventional Path
  13. 颠覆大数据分析之Storm的设计模式
  14. org.gjt.mm.mysql.Driver与com.mysql.jdbc.Driver区别
  15. 网络重置后WLAN网络找不到怎么办?
  16. python文本文件对比_Python-文件差异对比
  17. 电脑桌面计算机打开很慢,电脑桌面刷新反应很慢怎么办?电脑桌面刷新很慢解决方法...
  18. 认识控制台-什么是控制台?
  19. 哔哩哔哩视屏下载的几种方法
  20. 南大通用参加1024程序员节 沉淀自主知识产权 共建中国标准

热门文章

  1. 检测CO一氧化碳传感器故障
  2. 2019.11.03 test 题解
  3. 如何成为一个积极主动的项目经理
  4. 建構收益率曲線 Yield Curve (1) 工作日調整 Business Day Convention - 用 Python 和 QuantLib
  5. 江苏南京-守内安邮件归档
  6. 计算机不装显卡会怎么样,电脑一个月不用会咋样?显卡长蘑菇
  7. 基于单片机的粮仓温湿度监控系统
  8. 倾斜数据之加载——SuperMap iDesktop
  9. 25岁计算机跨考金融学,跨考研究生怎么选专业,计算机金融最喜欢谁?小编今天告诉你...
  10. STC12C5A60S2实现PT100传感器分段高精度测温