Codeforces Round #590 (Div. 3):点击进入新世界

总结:

第二次实时打cf,刚开始四分钟就且切了A题,后面看了B1 B2 难度改变对思路没有影响,一开始思路是对的,但是用hash数组没考虑数组下标爆1e9,两题提交都出现RE,还以为是数组开小了,改了数组大小再次提交依旧RE后,才发现hash数组的毛病,后面改用map直接切了B1 B2, 开局半小时切三题(没有失误的话应该是十五分钟)以为这一次能够破四题,没想到后面的CDEF一直做不出来。
没失误的理想排名2000+
实际排名3000+ (B1 2发RE B2 1发RE)
估计掉了100左右分

文章目录

  • 总结:
  • A. Equalize Prices Again(思维)
  • B1. Social Network (easy version)(模拟)
  • B2. Social Network (hard version)(模拟同上)
  • C. Pipes(模拟 or 思维)
  • D. Distinct Characters Queries(set的运用)

A. Equalize Prices Again(思维)

原题链接:传送门

思路:

  1. 题目给出n个货物的价格,让你求出一个所有货物的共同价格保证全部货物卖不出商家不亏本。
  2. 很简单直接求平均数,如果平均数带小数点就加一否则商家亏死。

    代码如下:

#include<bits/stdc++.h>
using namespace std;
const int manx=1e3;
int a[manx];
int main()
{int q;cin>>q;while(q--){long long n;long long ans=0;cin>>n;for(int i=1;i<=n;i++) cin>>a[i],ans+=a[i];if(ans%n==0) cout<<ans/n<<endl;else cout<<ans/n+1<<endl;}return 0;
}

B1. Social Network (easy version)(模拟)

原题链接:传送门

思路:

  1. 题目给出n个数字和容量k,让你求出最后容器中剩下的数字。
  2. 用map标记是否还在容器中,用双端队列进行模拟即可。

AC代码如下:

#include<bits/stdc++.h>
using namespace std;
const int manx=2e5+5;
typedef long long ll;
map<int,int>vis;
int main()
{int n,k,ans=0;scanf("%d%d",&n,&k);deque<int>q;while(q.size()) q.pop_back();for(int i=1;i<=n;i++){int a;scanf("%d",&a);if(!vis[a]){if(ans==k){int b=q.back();q.pop_back();ans--,vis[b]=0;}q.push_front(a),ans++,vis[a]=1;}}cout<<q.size()<<endl;while(q.size()) {cout<<q.front()<<" ";q.pop_front();}return 0;
}

B2. Social Network (hard version)(模拟同上)

原题链接:传送门

思路:

  1. 题目给出n个数字和容量k,让你求出最后容器中剩下的数字。
  2. 用map标记是否还在容器中,用双端队列进行模拟即可。
  3. 这道题不过是n,k范围变大,我模拟的思路时间复杂度为O(n),边输入边操作,所以莫得问题。

AC代码如下:

#include<bits/stdc++.h>
using namespace std;
const int manx=2e5+5;
typedef long long ll;
map<int,int>vis;
int main()
{int n,k,ans=0;scanf("%d%d",&n,&k);deque<int>q;while(q.size()) q.pop_back();for(int i=1;i<=n;i++){int a;scanf("%d",&a);if(!vis[a]){if(ans==k){int b=q.back();q.pop_back();ans--,vis[b]=0;}q.push_front(a),ans++,vis[a]=1;}}cout<<q.size()<<endl;while(q.size()) {cout<<q.front()<<" ";q.pop_front();}return 0;
}

明天起来再补题

C. Pipes(模拟 or 思维)

原题链接:传送门

思路:

  1. 给出两种类型的水管,判断水流是否能够从(1,0)到(2,n+1)。
  2. 比赛的时候想过bfs,又不够坚定,一直想找出规律,后来比赛结束了也没时间做。
  3. 官方题解是很不错的模拟,用异或来决定水流位于那一行,判断是否能够流到最后。

AC代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{int q;cin>>q;while(q--){int n;string s[2];cin>>n>>s[0]>>s[1];int l=0,r=0;for(l=0;l<n;l++){if(s[r][l]>='3'){if(s[r^1][l]<'3') break;else r^=1;}}if(l==n&&r==1) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

D. Distinct Characters Queries(set的运用)

原题链接:传送门

思路:

  1. 在线修改字符,查询区间不同字符数目。
  2. 一开始想用线段树,但是不怎么会线段树,只会简单的区间求和操作,后面改用set,做法和答案有点差距,但是真的没想到还可以这么操作。
  3. 统计每个字母的下标。用set来快速删除加入元素。

AC代码如下:

#include<bits/stdc++.h>
using namespace std;
const int manx=2e5+50;
char a[manx];
set<int>s[50];
int x,l,r,q,n;
char c;
int main()
{scanf("%s%d",a+1,&q);n=strlen(a+1);for(int i=1;i<=n;i++)s[a[i]-'a'].insert(i);while(q--){scanf("%d",&x);if(x==2){scanf("%d%d",&l,&r);int ans=0;for(int i=0;i<26;i++){auto it=s[i].lower_bound(l);if(it!=s[i].end()&&*it<=r) ans++;}printf("%d\n",ans);}else if(x==1){cin>>l>>c;s[a[l]-'a'].erase(l);s[c-'a'].insert(l);a[l]=c;}}return 0;
}

10.1 Codeforces Round #590 (Div.3)相关推荐

  1. Codeforces Round #590 (Div. 3) E. Special Permutations 差分 + 思维

    传送门 文章目录 题意: 思路: 题意: 思路: 直接考虑比较难想,这种公式题基本都是将部分答案看成一个整体,考虑xi,xi+1x_i,x_{i+1}xi​,xi+1​的贡献的. 假设当前的xi=x, ...

  2. Codeforces Round #590 (Div. 3) F. Yet Another Substring Reverse 子集dp

    传送门 文章目录 题意: 思路: 题意: 思路: 之前做过类似的题,翻转一个字串相当于将任意两个不相交的串连在一起.再一看字符集≤20\le20≤20,那就是铁子集dpdpdp了. 定义f[i]f[i ...

  3. Codeforces Round #590 (Div. 3) 题解

    A  . Equalize Prices Again https://codeforces.com/contest/1234/problem/A 相加取平均,向上取整.. #include<bi ...

  4. B2. Social Network (hard version)(STL)Codeforces Round #590 (Div. 3)

    原题链接:https://codeforces.com/contest/1234/problem/B2 你正在一个流行的社交网络中通过智能手机发送信息.你的智能手机最多可以显示k个最近与朋友的对话.最 ...

  5. A. Equalize Prices Again(水题) Codeforces Round #590 (Div. 3)

    原题链接:https://codeforces.com/contest/1234/problem/A 派大星既是"比奇堡"一家小商店的店主又是售货员.店里有n种商品,第i种商品价格 ...

  6. Codeforces Round #590 (Div. 3) B2. Social Network (hard version)

    题目链接 The only difference between easy and hard versions are constraints on n and k. You are messagin ...

  7. Codeforces Round #590 (Div. 3)

    Equalize Prices Again 有 n 件商品的价格,现在老板想让所有的商品的价格都一样,并且总价格尽量接近之前的价格,但要 >= 之前的价格 int main() {IOS;rus ...

  8. Codeforces Round #590 (Div. 3)题解

    很久没打CF了 把那天的题解补上 //传送门 A. 大水题 向上取整就行了 直接放代码 很好理解 #include <bits/stdc++.h> using namespace std; ...

  9. 10.16打卡 Codeforces Round #827 (Div. 4) A~E

    Dashboard - Codeforces Round #827 (Div. 4) - Codeforces 开摆F和G懒得写 A题 排个序就好了 /* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿ ...

最新文章

  1. 2019-03-20 Python爬取需要登录的有验证码的网站
  2. python编程入门指南怎么样-学习python网络编程怎么入门
  3. 手机网站开发必修课[1]:手机浏览器 本文来自:http://www.fool2fish.cn/?p=290
  4. 【NLP傻瓜式教程】手把手带你HAN文本分类(附代码)
  5. 【已解决】Linux下安装MySQL数据库
  6. 实现将字符串转换为指令执行
  7. YBTOJ:字符串匹配(KMP)
  8. java单例模式的七种写法_Java设计模式之单例模式的七种写法
  9. 玩转oracle 11g(50):rman备份脚本
  10. win7通过easyBCD引导ubuntu
  11. mysql执行存储过程提示out of_PHP执行MYSQL存储过程报错:Commands out of sync; you can't run...
  12. QAbstractTableModel中的data()到底执行几遍???
  13. python_paramiko模块
  14. 【竞赛总结】安全AI之人脸识别对抗
  15. 思科路由器配置命令大全
  16. js代码编写新年倒计时
  17. 多吃什么食物可以明目护眼?
  18. running_mean和running_var
  19. 群晖NAS中对Gitlab配置邮箱发送消息_以163邮箱为例
  20. Verilog HDL题库练习--题目来源HDLBits

热门文章

  1. 中网办:关于加强党政部门云计算服务网络安全管理的意见
  2. 亚马逊运营如何利用数据分析选品?
  3. 分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择
  4. Linux Kali
  5. 海底捞张勇:海底捞的核心竞争力是什么?人力资源体系
  6. 抖音网红如何接广告盈利怎么搬运视频
  7. windows10不支持Miracast无线投屏(不能进行无线投影)
  8. 2022年武汉市东西湖区科技成果转化活动奖励补贴政策申报条件
  9. Java中利用JMF编写摄像头拍照程序
  10. 电阻分压器的阻值大小