A. Fair Game

题目链接:http://codeforces.com/contest/864/problem/A

题目意思:Petya和Vasya 要分别从选择两种不同的数字,然后把给出数列中的这两种数字的卡片分别都取走,要求取完后卡片全部被取完,而且双方取走卡片的数量是相同的。

题目思路:很简单,排个序,判断前n个是不是同一个数字,后n个是不是另外的n个相同的数字。

代码:

 1 //Author: xiaowuga
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 #define inf 0x3f3f3f3f
 5 #define MAX INT_MAX
 6 #define mem(s,ch) memset(s,ch,sizeof(s))
 7 const long long N=100000;
 8 const long long mod=1e9+7;
 9 typedef long long LL;
10 typedef int II;
11 typedef unsigned long long ull;
12 #define nc cout<<"nc"<<endl
13 #define endl "\n"
14 int main() {
15     ios::sync_with_stdio(false);cin.tie(0);
16     II a[120]={0};
17     II n;
18     cin>>n;
19     for(II i=1;i<=n;i++){
20         cin>>a[i];
21     }
22     sort(a+1,a+n+1);
23     if(a[n/2]!=a[n/2+1]&&a[n/2]==a[1]&&a[n/2+1]==a[n]){
24         cout<<"YES"<<endl;
25         cout<<a[1]<<" "<<a[n]<<endl;
26     }
27     else cout<<"NO"<<endl;
28     return 0;
29 }

View Code

B. Polycarp and Letters

题目链接:http://codeforces.com/contest/864/problem/B

题目意思:判断两个大写字母之间小写字母种类的的数量的最大值,注意开始和结尾和第一个大写字母和最后一个大写字母之间的也算。

题目思路:暴力扫一遍。

代码:

 1 //Author: xiaowuga
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 #define inf 0x3f3f3f3f
 5 #define MAX INT_MAX
 6 #define mem(s,ch) memset(s,ch,sizeof(s))
 7 const long long N=100000;
 8 const long long mod=1e9+7;
 9 typedef long long LL;
10 typedef int II;
11 typedef unsigned long long ull;
12 #define nc cout<<"nc"<<endl
13 #define endl "\n"
14 int main() {
15     ios::sync_with_stdio(false);cin.tie(0);
16     II n;
17     cin>>n;
18     char s[500];
19     cin>>(s+1);
20     II h[30];
21     mem(h,0);
22     II ct=0;
23     II ans=0;
24     for(II i=1;i<=n;i++){
25         if(s[i]>='A'&&s[i]<='Z'){
26             ans=max(ans,ct);
27             mem(h,0);
28             ct=0;
29         }
30         else{
31             II v=s[i]-'a';
32             if(h[v]==0) {h[v]=1,ct++;}
33         }
34     }
35     ans=max(ans,ct);
36     cout<<ans<<endl;
37     return 0;
38 }

View Code

C. Bus

题目链接:http://codeforces.com/contest/864/problem/C

题目意思:在一个一维直线上有一个起点为0,终点为a,距离为a,车有b单位的燃料,现在记录0-a或者a-0算是完成一次旅程,现在要完成k次旅程,在f处有一个加油站,现在问完成旅程最少需要多少加多少次油。

题目思路:首先我们需要假想把起点移到加油站,然后把初始油量变成b-f,然后每次从f出发到a再回到f需要2*(a-f)的汽油,从f出发到0再回到f需要2*f的汽油,要进行k次旅程就需要经过f这个加油站k次,由于我们把起点移到了加油站,所以只需要途径k-1次了,然后最后在回到0或者a就好了(根据k的值),所以然后直接看代码吧!

代码:

 1 //Author: xiaowuga
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 #define inf 0x3f3f3f3f
 5 #define MAX INT_MAX
 6 #define mem(s,ch) memset(s,ch,sizeof(s))
 7 const long long N=100000;
 8 const long long mod=1e9+7;
 9 typedef long long LL;
10 typedef int II;
11 typedef unsigned long long ull;
12 #define nc cout<<"nc"<<endl
13 #define endl "\n"
14 int main() {
15     ios::sync_with_stdio(false);cin.tie(0);
16     II a,b,f,k;
17     cin>>a>>b>>f>>k;
18     II c=b-f;
19     II ans=0;
20     if(c<0) {cout<<-1<<endl; return 0;}
21     for(II i=1;i<k;i++){
22         II d=(i&1)?a-f:f;
23         if(c<2*d){
24             c=b;
25             ans++;
26         }
27         if(c<2*d){
28             cout<<-1<<endl; return 0;
29         }
30         c-=2*d;
31     }
32     II x;
33     if(k&1) x=a-f;else x=f;
34     if(c<x){
35         ans++;
36         c=b;
37     }
38     if(c<x) {cout<<-1<<endl; return 0;}
39     cout<<ans<<endl;
40     return 0;
41 }

View Code

D. Make a Permutation!

题目链接:http://codeforces.com/contest/864/problem/D

题目链接:给出一个数列,其中的一些数可能是会重复,然后要用最少的步数使其变成一个1-n的排列,而且字典序还要是最小的。

题目思路:首先需要改变的数的数量要最少,必定是不存在的数的数量,然后我们要找出这些数都有哪些,然后把他们从小到大,依次,填进去。具体看代码吧!

代码:

 1 //Author: xiaowuga
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 #define inf 0x3f3f3f3f
 5 #define MAX INT_MAX
 6 #define mem(s,ch) memset(s,ch,sizeof(s))
 7 const long long N=100000;
 8 const long long mod=1e9+7;
 9 typedef long long LL;
10 typedef int II;
11 typedef unsigned long long ull;
12 #define nc cout<<"nc"<<endl
13 #define endl "\n"
14 II a[200000+10];
15 II b[200000+10];
16 II c[200000+10];
17 int main() {
18     ios::sync_with_stdio(false);cin.tie(0);
19     II n;
20     cin>>n;
21     mem(b,0);
22     mem(c,0);
23     for(II i=1;i<=n;i++){
24         II t;
25         cin>>t;
26         a[i]=t;
27         b[t]++;
28     }
29     vector<int>q;
30     for(II i=1;i<=n;i++){
31         if(b[i]==0) q.push_back(i);
32     }
33     II k=0;
34     LL ans=0;
35     for(II i=1;i<=n;i++){
36         II v=a[i];
37         if(b[v]>1){
38             if(c[v]==0&&a[i]<q[k]){
39                 c[v]=1;
40             }
41             else{
42                 ans++;
43                 b[v]--;
44                 a[i]=q[k];
45                 k++;
46             }
47         }
48     }
49     cout<<ans<<endl;
50     for(II i=1;i<=n;i++) cout<<a[i]<<' ';cout<<endl;
51     return 0;
52 }

View Code

转载于:https://www.cnblogs.com/xiaowuga/p/7687717.html

Codeforces Round #436 (Div. 2)相关推荐

  1. 【贪心】Codeforces Round #436 (Div. 2) D. Make a Permutation!

    题意:给你一个长度为n的数组,每个元素都在1~n之间,要你改变最少的元素,使得它变成一个1~n的排列.在保证改动最少的基础上,要求字典序最小. 预处理cnt数组,cnt[i]代表i在原序列中出现的次数 ...

  2. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  3. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  4. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  5. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  6. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  7. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  8. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

  9. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

  10. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

最新文章

  1. php改变图片大小png背景变黑,php – 当将透明背景的PNG图像调整大小/转换为JPEG时,如何用白色替换黑色背景...
  2. mysql 日期 时间戳 转换
  3. mft文件记录属性头包括_关于NTFS-MFT
  4. Socket.io 深入理解
  5. redis集群搭建【简版】
  6. 最全Java面试180题:阿里11面试+网易+百度+美团!含答案大赠送!
  7. Spring Batch 使用指南
  8. 今晚直播丨分布式数据库:从PG-XL到TBASE
  9. DLog-M什么意思
  10. [已破案] 镜像出问题了
  11. 力扣-1232 缀点成线
  12. Xeen的Source Safe 备份
  13. 为什么要进行网站重构呢?
  14. Python进阶强化训练之字符串处理技巧
  15. Android接入微信分享视频和图片
  16. Autodesk Flame Education 2020 特别版 Mac 交互设计终极视觉特效制作软件
  17. 有没有可以测试手速的软件,我的第一个Mac小程序 — 手速测试器
  18. 迅雷看看引领高清内容多屏合一新趋势
  19. 【vue】实现超过两行或多行显示展开收起 (单个展开收起和数组多个展开收起)
  20. 2021第十届深圳国际智能家居展览会

热门文章

  1. [Java] 集合类(List、Set、Map的基本使用)
  2. Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述
  3. zoj 2678 Bishops on a Toral Board 同余方程组,完系(3-I)
  4. struts1.x 标签库
  5. sql server期中综合练习
  6. 点击微信网页的a标签直接跳转到淘宝APP打开怎么实现的?附:动图演示效果
  7. QA: c# IHttpFactory配置代理或者HttpClient配置代理
  8. Springboot集成Quartz和RabbitMQ时设置为不自动运行
  9. MySQL 随机获得一条数据的方法
  10. VS2015 ASSERT(false)直接退出不弹出Assert failed对话框的解决方法