10.1 Codeforces Round #590 (Div.3)
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(思维)
原题链接:传送门
思路:
- 题目给出n个货物的价格,让你求出一个所有货物的共同价格保证全部货物卖不出商家不亏本。
- 很简单直接求平均数,如果平均数带小数点就加一否则商家亏死。
代码如下:
#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)(模拟)
原题链接:传送门
思路:
- 题目给出n个数字和容量k,让你求出最后容器中剩下的数字。
- 用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)(模拟同上)
原题链接:传送门
思路:
- 题目给出n个数字和容量k,让你求出最后容器中剩下的数字。
- 用map标记是否还在容器中,用双端队列进行模拟即可。
- 这道题不过是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,0)到(2,n+1)。
- 比赛的时候想过bfs,又不够坚定,一直想找出规律,后来比赛结束了也没时间做。
- 官方题解是很不错的模拟,用异或来决定水流位于那一行,判断是否能够流到最后。
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的运用)
原题链接:传送门
思路:
- 在线修改字符,查询区间不同字符数目。
- 一开始想用线段树,但是不怎么会线段树,只会简单的区间求和操作,后面改用set,做法和答案有点差距,但是真的没想到还可以这么操作。
- 统计每个字母的下标。用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)相关推荐
- Codeforces Round #590 (Div. 3) E. Special Permutations 差分 + 思维
传送门 文章目录 题意: 思路: 题意: 思路: 直接考虑比较难想,这种公式题基本都是将部分答案看成一个整体,考虑xi,xi+1x_i,x_{i+1}xi,xi+1的贡献的. 假设当前的xi=x, ...
- Codeforces Round #590 (Div. 3) F. Yet Another Substring Reverse 子集dp
传送门 文章目录 题意: 思路: 题意: 思路: 之前做过类似的题,翻转一个字串相当于将任意两个不相交的串连在一起.再一看字符集≤20\le20≤20,那就是铁子集dpdpdp了. 定义f[i]f[i ...
- Codeforces Round #590 (Div. 3) 题解
A . Equalize Prices Again https://codeforces.com/contest/1234/problem/A 相加取平均,向上取整.. #include<bi ...
- B2. Social Network (hard version)(STL)Codeforces Round #590 (Div. 3)
原题链接:https://codeforces.com/contest/1234/problem/B2 你正在一个流行的社交网络中通过智能手机发送信息.你的智能手机最多可以显示k个最近与朋友的对话.最 ...
- A. Equalize Prices Again(水题) Codeforces Round #590 (Div. 3)
原题链接:https://codeforces.com/contest/1234/problem/A 派大星既是"比奇堡"一家小商店的店主又是售货员.店里有n种商品,第i种商品价格 ...
- 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 ...
- Codeforces Round #590 (Div. 3)
Equalize Prices Again 有 n 件商品的价格,现在老板想让所有的商品的价格都一样,并且总价格尽量接近之前的价格,但要 >= 之前的价格 int main() {IOS;rus ...
- Codeforces Round #590 (Div. 3)题解
很久没打CF了 把那天的题解补上 //传送门 A. 大水题 向上取整就行了 直接放代码 很好理解 #include <bits/stdc++.h> using namespace std; ...
- 10.16打卡 Codeforces Round #827 (Div. 4) A~E
Dashboard - Codeforces Round #827 (Div. 4) - Codeforces 开摆F和G懒得写 A题 排个序就好了 /* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿ ...
最新文章
- 2019-03-20 Python爬取需要登录的有验证码的网站
- python编程入门指南怎么样-学习python网络编程怎么入门
- 手机网站开发必修课[1]:手机浏览器 本文来自:http://www.fool2fish.cn/?p=290
- 【NLP傻瓜式教程】手把手带你HAN文本分类(附代码)
- 【已解决】Linux下安装MySQL数据库
- 实现将字符串转换为指令执行
- YBTOJ:字符串匹配(KMP)
- java单例模式的七种写法_Java设计模式之单例模式的七种写法
- 玩转oracle 11g(50):rman备份脚本
- win7通过easyBCD引导ubuntu
- mysql执行存储过程提示out of_PHP执行MYSQL存储过程报错:Commands out of sync; you can't run...
- QAbstractTableModel中的data()到底执行几遍???
- python_paramiko模块
- 【竞赛总结】安全AI之人脸识别对抗
- 思科路由器配置命令大全
- js代码编写新年倒计时
- 多吃什么食物可以明目护眼?
- running_mean和running_var
- 群晖NAS中对Gitlab配置邮箱发送消息_以163邮箱为例
- Verilog HDL题库练习--题目来源HDLBits