石油大--2020年秋季组队训练赛第十三场---- C、Colourful Chameleons(思维)
题面:
题意:
有 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(思维)相关推荐
- 石油大--2020年秋季组队训练赛第十三场----B、Bouldering(最短路)
题面: 题意: 给定一个 h∗wh*wh∗w 点阵,其中某一些点是可以走的. 这些点都有一个权值,表示如果经过当前点,则会花费的力气. 给定一个 rrr,你只能从当前点到达与你欧几里得距离不超过 rr ...
- 石油大--2020年秋季组队训练赛第十二场----J、Greedy Termite(线段树)
题面: 题意: 给定正整数 nnn 和起始位置 sss. nnn 表示有 nnn 个杆子,每个杆子由属性 (xi,hi)(x_i,h_i)(xi,hi) 构成,表示在 xix_ixi 处有一根高 ...
- 石油大--2020年秋季组队训练赛第十二场---- L、The Assembly Code(模拟)
题面: 题意: 就是题目有点长,写起来直接写就好啦. 有一个长度为 232,0≤i<2322^{32},0\le i <2^{32}232,0≤i<232 数组 MMM , MiM_ ...
- 石油大--Contest2022 - 2020年秋季组队训练赛第二场--17100 Problem D、Find String in a Grid (AC自动机)
题面: 题意: 给定一个 R∗CR*CR∗C 的字符矩阵,由大写字母构成. 有 qqq 个询问,每次给定一个由大写字母构成的字符串,问这个字符串在这个字符矩阵中出现了多少次. 某个字符串在矩阵中出现定 ...
- UPC 2020年秋季组队训练赛第十四场
问题 A: Too Expensive to Buy a House 时间限制: 1 Sec 内存限制: 128 MB 题目描述 WNJXYK and DIDIDI are good friends ...
- 【upc】2020年秋季组队训练赛第十二场J Greedy Termite | 删点线段树
状态 题目描述 There are n wooden rods vertically placed over a horizontal line. The rods are numbered 1 th ...
- 【DFS反向建图记忆化搜索】UPC Contest2592 - 2020年秋季组队训练赛第十四场 问题 D: Mysterious Treasure
问题 D: Mysterious Treasure 时间限制: 1 Sec 内存限制: 128 MB 题目描述 WNJXYK and DIDIDI is playing a game. DIDIDI ...
- 【upc】2020年秋季组队训练赛第十四场 Get Strong | 折半搜索、二分
题目描述 WNJXYK and DIDIDI are friends. They are thinking about getting strong all the time. They are pl ...
- 2013-8-14大一大二暑期组队训练赛
1001 Time Limit : 5000/2000ms (Java/Other) Memory Limit : 65535/65535K (Java/Other) Total Submissi ...
最新文章
- spring控制事务:声明式事务(注解)
- php代码丑,php – 屏幕截图你生命中见过的最丑陋的HTML
- Facebook 又搞事,违反竞业协议被起诉,PyTorch 关键技术疑侵权
- Next.js提供了基于React的简单通用JavaScript框架
- Video for linux 2 example (v4l2 demo)
- 查找与清除线程插入式木马(转)
- 计算机信息中心的安全生产责任,信息中心安全生产责任制 (刘.doc
- 信息搜集-敏感信息泄露
- C个java都是多线程语言对吗_Java里的多线程
- C语言8.14文曲星上的猜数游戏
- C++学习记录3:定义一个矩形类Rectangle
- 052试题 97 - SQL*Loader Direct Path and Conventional Path
- 颠覆大数据分析之Storm的设计模式
- org.gjt.mm.mysql.Driver与com.mysql.jdbc.Driver区别
- 网络重置后WLAN网络找不到怎么办?
- python文本文件对比_Python-文件差异对比
- 电脑桌面计算机打开很慢,电脑桌面刷新反应很慢怎么办?电脑桌面刷新很慢解决方法...
- 认识控制台-什么是控制台?
- 哔哩哔哩视屏下载的几种方法
- 南大通用参加1024程序员节 沉淀自主知识产权 共建中国标准
热门文章
- 检测CO一氧化碳传感器故障
- 2019.11.03 test 题解
- 如何成为一个积极主动的项目经理
- 建構收益率曲線 Yield Curve (1) 工作日調整 Business Day Convention - 用 Python 和 QuantLib
- 江苏南京-守内安邮件归档
- 计算机不装显卡会怎么样,电脑一个月不用会咋样?显卡长蘑菇
- 基于单片机的粮仓温湿度监控系统
- 倾斜数据之加载——SuperMap iDesktop
- 25岁计算机跨考金融学,跨考研究生怎么选专业,计算机金融最喜欢谁?小编今天告诉你...
- STC12C5A60S2实现PT100传感器分段高精度测温