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. 选项选择Windows XP系统安装MySQL5.5.28图解
  2. 谷歌开发者大会杀出技术黑马,知乎AI终于不再隐藏实力了
  3. Java Properties 类读取配置文件信息
  4. R语言对数正态分布分布函数Log Normal Distribution(dlnorm, plnorm, qlnorm rlnorm)实战
  5. Hadoop vs Spark性能对比
  6. [Windows沙拉]调整Windows7下时间同步的频率
  7. 高等数学-傅里叶级数与傅里叶变换
  8. python 发送邮件附件很慢_Python SMTP 发送带附件电子邮件
  9. Java集合系列---LinkedHashMap源码解析
  10. 【AC】九度OJ题目1153:括号匹配问题
  11. feed43使用教程
  12. Windows核心编程_远线程方式实现Dll注入
  13. testbench实例 vhdl_[转载]VHDL的testbench的编写
  14. 跟我学折纸计算机教案,折纸活动教案
  15. 46000\46001\46002\MNC\MCC\IMSI
  16. 带你认识磁性材料及下游产品全球主流认证标识
  17. Promise.all中对于reject的处理
  18. allegro库函数 c语言,[转载]Allegro之Dev-Cpp版上手指南
  19. 去除字符串首尾空格(全角半角)
  20. 9.半兰伯特光照模型

热门文章

  1. java计算机毕业设计影楼网站源码+数据库+系统+lw文档+部署
  2. cnn中关于FLOPS的理解及计算
  3. POJ 3311--佛洛依德枚举
  4. Android给View设置margin值
  5. 分享三个非常低门槛的网络兼职,宝妈、上班族和学生党都可做
  6. Fantasia 【HDU - 5739】【广义圆方树】
  7. DJYGUI系列文章八:GDD绘图系统
  8. 和领导“抬杠”反被升职:听话,是职场最大的谎言
  9. JavaScript(二十一)淘宝购物车demo
  10. DreamSceneSeven打造炫酷的动态桌面