A. Digit Minimization

题目

分析

每次操作先交换两个数再删去尾端的数,使最后剩余的数最小。

直接判断这个数大于100,每次操作都可以把最小的数留到最后,只有两位数的话只能是个位的数。

代码

#include<bits/stdc++.h>
#define pb push_back
#define ll long long
#define guanliu ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const ll maxn=2e5+10;
const ll mod=1e9+7;
const ll INF=0x3f3f3f3f;
const double pi=acos(-1);int main()
{guanliu;int t;cin>>t;while(t--){int n;cin>>n;if(n/100==0){int a=n/10;int b=n%10;cout<<b<<endl;continue;}int ans=10;while(n){int tt=n%10;ans=min(ans,tt);n/=10;if(ans==1) break;}cout<<ans<<endl;}return 0;
}

B. Z mod X = C

题目

分析

给出a,b,c,找出满足x mod y = a ,y mod z = b ,z mod x = c;的x,y,z。

之前做过类似的题,先做出式子代换,代换为假设z的k为0,其余两个k相同,即可推出x和y的值。

注意:x,y,z的值需要开long long。

代码

#include<bits/stdc++.h>
#define pb push_back
#define ll long long
#define guanliu ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const ll maxn=2e5+10;
const ll mod=1e9+7;
const ll INF=0x3f3f3f3f;
const double pi=acos(-1);int main()
{guanliu;int t;cin>>t;while(t--){ll a,b,c;cin>>a>>b>>c;ll x,y,z;z=c;for(int i=0;i<=1e5;i++){y=i*c+b;x=i*y+a;;if(x%y==a&&y%z==b&&z%x==c) break;}cout<<x<<" "<<y<<" "<<z<<endl;}return 0;
}

C. Column Swapping

题目

分析

只能选择一次两列数,交换他们,使每一行的数都是非递减的。

设需要交换的列的数量为cnt:

当cnt=0,无需交换,可以直接选择交换1 1;
当cnt<=2时,尝试交换两列,并判断交换后,每行的这两列位置的数字是否已与排序后的该位置的数字相等;
当cnt>2时,那么需要交换的次数是大于1的,故无法满足要求;

这题自己手太弱了,赛时一直调不出来,赛后重写了一遍才过。

注意:数组大小2e5,数组存会爆,可以采用vector存。

代码

#include<bits/stdc++.h>
#define pb push_back
#define ll long long
#define guanliu ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const ll maxn=2e5+10;
const ll mod=1e9+7;
const ll INF=0x3f3f3f3f;
const double pi=acos(-1);
vector<int> v[maxn],vv[maxn];
int n,m;int check(int i,int j)
{for(int k=0;k<n;k++){if(v[k][i]!=vv[k][j]||v[k][j]!=vv[k][i]) return 0; }return 1;
}int main()
{guanliu;int t;cin>>t;while(t--){cin>>n>>m;for(int i=0;i<n;i++){v[i].clear();}for(int i=0;i<n;i++){for(int j=0;j<m;j++){int x;cin>>x;v[i].pb(x);}vv[i]=v[i];sort(vv[i].begin(),vv[i].end());}int ansi=-1,ansj=-1;int f=1;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(v[i][j]!=vv[i][j]){if(ansi==-1||ansi==j){ansi=j;}else if(ansj==-1||ansj==j){ansj=j;}else f=0;}}}if(!f) cout<<"-1"<<endl;else {if(ansi==-1&&ansj==-1) cout<<"1 1"<<endl;else if(check(ansi,ansj)) cout<<ansi+1<<" "<<ansj+1<<endl;else cout<<"-1"<<endl;}}return 0;
}

D. Traps

题目

分析

需要经过n个陷阱,每个陷阱的伤害是a[i],有k次跳过陷阱的机会,但是一旦跳过一个陷阱之后,这个陷阱之后的每一个陷阱的伤害+1,求通过n个陷阱受到的最小伤害值。

先记录每个陷阱被跳过对总值的影响(不考虑跳过陷阱之间的影响)a[i]-(n-i)。再考虑跳过陷阱之后对其他陷阱的伤害值的影响,跳过m个陷阱,会使伤害减少m(因为跳过一个会让之后的陷阱伤害+1,并且我计算影响时计算了这个值,这个时候跳过,需要减去这个值)。

计算出每个独立跳过的伤害值,并从大到小跳过陷阱,再比较这个值与跳过陷阱个数,考虑继不继续跳过陷阱,一旦这个值小于,即不跳过任何陷阱,即此时伤害最小。

代码

#include<bits/stdc++.h>
#define pb push_back
#define ll long long
#define guanliu ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const ll maxn=2e5+10;
const ll mod=1e9+7;
const ll INF=0x3f3f3f3f;
const double pi=acos(-1);
ll a[maxn];bool cmp(ll a,ll b)
{return a>b;
}int main()
{guanliu;int t;cin>>t;while(t--){ll sum=0;int n,k;cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];sum+=a[i];a[i]=a[i]-(n-i);}sort(a+1,a+1+n,cmp);for(int i=1;i<=k;i++){if(a[i]>-i){sum-=a[i]+i-1;}else break;}cout<<sum<<endl; }return 0;
}

E. MEX vs DIFF

题目

分析

一个数组a,经过最多k次将a[i]换为任意的非负整数,求最小的DIFF-MEX值。

DIFF:数组中不同数的个数。

MEX:数组中没有出现的最小的数。

为使最后差值最小,考虑使MEX值最大,令大于mex的不同数的个数尽量小:muitiset维护一下,让大于mex的数中,数量较少的数优先进行改变操作。

附上本题参考的题解

代码

#include<bits/stdc++.h>
#define pb push_back
#define ll long long
#define guanliu ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
using namespace std;
const ll maxn=1e5+10;
const ll mod=1e9+7;
const ll INF=0x3f3f3f3f;
const double pi=acos(-1);
int a[maxn];
int n,k;
map<int,int> mp,dmp;int main()
{guanliu;int t;cin>>t;while(t--){mp.clear();cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];mp[a[i]]++;}dmp=mp;sort(a+1,a+1+n);int mex=0;while(mp[mex]){mex++;}for(int i=n,j=k;i&&j;i--,j--){if(a[i]<mex) break;mp[mex]=1;mp[a[i]]--;while(mp[mex]){mex++;}}multiset<int> s;for(auto i : dmp){if(i.first>mex) {s.insert(i.second);}}int dif=mex;for(auto i : s){if(k>=i) k-=i;else dif++;}cout<<dif-mex<<endl;}return 0;
}

【CF #792 Div1+Div2】A-E相关推荐

  1. 【Codeforces #167 Div1 Div2】Solutions

    [A. Dima and Friends] http://www.codeforces.com/contest/272/problem/A 题目大意:n+1个人出手指头,加起来再做类似约瑟夫的出圈,问 ...

  2. 【CF 应用开发大赛】瑞文代码推土机

    2019独角兽企业重金招聘Python工程师标准>>> 应用名称:瑞文代码推土机 应用URL地址:http://qun.qzone.qq.com/group#!/254175050/ ...

  3. 【TopCoder SRM 551 Div2】Solutions

    [250] Beaver Bindu has some colored bricks. Each color is described by an uppercase letter. Bricks o ...

  4. 【代码源 Div1 - 102】#323. 最长因子链(dp)

    problem solution 首先因为前一个数时候一个数的因子,所以最长因子链肯定是递增的,先从小到大排个序. 然后因为n的大小只有1000,考虑dp,转移可以双循环 记f[i]表示到第i个数为止 ...

  5. 【代码源 Div1#103】子串的最大差 Codeforces - 817D,力扣2104,1900分

    problem 视频讲解链接:https://www.bilibili.com/video/BV1Du411X7Nk solution 可以直接推导原答案ans = ∑i=1n∑j=in(max−mi ...

  6. 【CF 应用开发大赛】JEECG 基于代码生成器J2EE智能开发框架

    为什么80%的码农都做不了架构师?>>>    应用名称:JEECG(J2EE Code Generation) 基于代码生成器J2EE智能开发框架 应用URL地址:http://j ...

  7. 【CF应用开发大赛】制造过程能力Cpk计算器

    为什么80%的码农都做不了架构师?>>>    应用名称:制造过程能力Cpk计算器 应用URL地址:http://rongchaopj.cloudfoundry.com/OM/cpk ...

  8. 【CF应用开发大赛】微博社交简历

    为什么80%的码农都做不了架构师?>>>    1  应用的名称:微博社交简历 2  应用URL 地址以及截图 由于cloudfoundry.com的速度问题,以及盛大云安装一个ge ...

  9. 【Cf Edu #47 F】Dominant Indices(长链剖分)

    要求每个点子树中节点最多的层数,一个通常的思路是树上启发式合并,对于每一个点,保留它的重儿子的贡献,暴力扫轻儿子将他们的贡献合并到重儿子里来. 参考重链剖分,由于一个点向上最多只有$log$条轻边,故 ...

最新文章

  1. 【干货分享】流程DEMO-人员调动流程
  2. scala break continue
  3. TypeScript 素描 - 函数
  4. 解决fstream不能打开带有中文路径文件的问题
  5. 快速判断list是否为空
  6. 左神算法:将搜索二叉树转换成双向链表(Java版)
  7. 使用Java 自身Timer API实现定时器的方法
  8. php如何从获取数据,如何从​​获取值并保存到php的数据库
  9. python手动垃圾回收_Python3学习笔记,F,垃圾,回收
  10. dex2jar 报错 com.googlecode.d2j.DexException: not support version
  11. Tidabie Tidal Music 潮汐音乐下载转换器
  12. Mac系统官方资料使用与记录
  13. 【情暖寒冬 让爱同行】中创算力开展“寒冬送温暖”公益活动
  14. 【注意力机制】BAM: Bottleneck Attention Module论文理解
  15. 域名解析的DNS缓存如何清理
  16. 基于Proteus学习单片机系列(七)——实时时钟DS1302
  17. 牛客网——求最小公倍数
  18. 兰州交通大学计算机科学与技术专业排名,2017兰州交通大学全国排名多少位
  19. java将数组加上千分号_[宜配屋]听图阁
  20. 第5期丨一周电商零售News10条(2.8-2.14)B站被指“侮辱女性”被多家品牌方拉黑/TikTok计划开拓美国电商市场...

热门文章

  1. CF Round #681(Div.2)/CF1443 口胡题解
  2. 打造ReactNative脚手架工程 - Detox自动化测试
  3. java filemonitor 多层_IDEA 创建多级文件夹的操作
  4. JAVA笔记(十五):枚举类、注解、异常
  5. sklearn高级功能
  6. 美团收购摩拜,拉开出行领域的新一轮大战
  7. 手撸架构,并发编程 面试123问
  8. js 获取剪切板内容
  9. 飞腾CPU体系结构(十三)
  10. 职称外语 计算机应用能力要求,关于职称外语和计算机应用能力要求有关问题的解释说明...