Codeforces Round #543 (Div. 2, based on Technocup 2019 Final Round)
A. Technogoblet of Fire
题意:n个人分别属于m个不同的学校 每个学校的最强者能够选中 黑客要使 k个他选中的可以稳被选 所以就为这k个人伪造学校 问最小需要伪造多少个
思路:记录每个学校都有哪些人 每次看黑客选中的人是不是在学校是最强者(这里要处理能力一样的情况,如果有能力一样的为了保证稳进也要伪造一个学校) 然后就是模拟了
- #include<bits/stdc++.h>
- #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
- #define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
- #define F first
- #define S second
- #define pii pair<int ,int >
- #define mkp make_pair
- #define pb push_back
- using namespace std;
- const int maxn=+;
- vector<pii>v[maxn];
- int p[maxn],s[maxn];
- int main(){
- int n,m,k;
- scanf("%d%d%d",&n,&m,&k);
- FOR(i,,n)scanf("%d",&p[i]);
- FOR(i,,n){
- scanf("%d",&s[i]);
- v[s[i]].pb(mkp(p[i],i));
- }
- int cnt=;
- int id;
- FOR(i,,k-){
- scanf("%d",&id);
- for(int j=;j<v[s[id]].size();j++){
- if(v[s[id]][j].F>=p[id]&&v[s[id]][j].S!=id){
- cnt++;
- break;
- }
- }
- for(int j=;j<v[s[id]].size();j++){
- if(v[s[id]][j]==mkp(p[id],s[id])){
- v[s[id]].erase(v[s[id]].begin()+j);
- break;
- }
- }
- }
- cout<<cnt<<endl;
- return ;
- }
- #include<bits/stdc++.h>
- #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
- #define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
- #define F first
- #define S second
- #define pii pair<int ,int >
- #define mkp make_pair
- #define pb push_back
- using namespace std;
- const int maxn=+;
- vector<pii>v[maxn];
- int a[maxn],s[maxn];
- set<int>q;
- map<int,int>mp;
- int main(){
- int n;
- scanf("%d",&n);
- FOR(i,,n-){scanf("%d",&a[i]);}
- int cnt=;
- int id=;
- FOR(i,,n-){
- FOR(j,i+,n-){
- q.insert(a[i]+a[j]);
- mp[a[i]+a[j]]++;
- if(cnt<mp[a[i]+a[j]]){
- cnt=mp[a[i]+a[j]];
- id=a[i]+a[j];
- }
- }
- }
- cout<<cnt<<endl;
- }
C. System Testing
题意:一秒测试一个样例 一共有m台机器和n个题目 给出每个题目的样例数 问存在多少个round(100*ok/n) ==当前测试到的样例数 ok是已经完成的题数
思路:这里刚开始写的时候是用优先队列模拟的,会出现一个bug 因为是并行计算的,所以当前最先完成测试的题目 测试到的样例 满足round(100*ok/n)==样例数 可能会出现在上上个题目之前(包含上上个) 这样就会统计不到
所以还是离散化秒数 用秒模拟即可(这题的数据范围是允许的) 参考了超哥的代码
- #include<bits/stdc++.h>
- #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
- #define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
- #define F first
- #define S second
- #define pii pair<int ,int >
- #define mkp make_pair
- #define pb push_back
- using namespace std;
- const int maxn=+;
- int vis[maxn],mk[maxn],p[maxn],a[maxn];
- int ans=;
- double ti=0.5;
- int main(){
- int n,k,m;
- scanf("%d%d",&n,&k);
- m=;
- int tmp;
- FOR(i,,n){
- scanf("%d",&a[i]);
- }
- k=min(n,k);
- FOR(i,,k)vis[i]=;
- for(;;ti+=){
- for(int i=;i<=n;i++){
- if(vis[i]==)p[i]++;
- }
- int d=round(100.0*m/n);
- for(int i=;i<=n;i++){
- if(vis[i]==&&p[i]==d&&!mk[i]){ans++;mk[i]=;}
- }
- for(int i=;i<=n;i++){
- if(p[i]==a[i]&&vis[i]==){
- m++;
- vis[i]=-;
- for(int j=i+;j<=n;j++){
- if(!vis[j]){vis[j]=;break;}
- }
- }
- }
- if(m==n)break;
- }
- cout<<ans<<endl;
- return ;
- }
F. Compress String
把一个字符串包装成很多个连续的部分 单个字符串需要消耗a 如果 tl tl+1 ...tr是前面t1...tl-1的子序列只需要消耗b问最小代价
思路:维护一个最长公共子串详细见代码
- #include<bits/stdc++.h>
- #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
- #define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
- #define F first
- #define S second
- #define pii pair<int ,int >
- #define mkp make_pair
- #define pb push_back
- using namespace std;
- const int maxn=+;
- int dp[maxn];
- int lcs[maxn][maxn];
- char s[maxn];
- int main(){
- int n,a,b;
- scanf("%d%d%d",&n,&a,&b);
- scanf("%s",s+);
- FOR(i,,n){
- dp[i]=dp[i-]+a;//初始化删一个
- FOR(j,,i-){
- if(s[i]==s[j])lcs[i][j]=lcs[i-][j-]+;// 维护前i个和前j的最长公共子串并且终点是在i的
- if(lcs[i][j]!=&&i-j>=lcs[i][j])dp[i]=min(dp[i],dp[i-lcs[i][j]]+b);//如果1-i,1-j存在公共子串其中一个终点在i并且大区间(也就是终点的i)的起点在小区间的前面 即可更新dp[i][j] 可画图理解其正确性
- }
- }
- cout<<dp[n]<<endl;
- return ;
- }
Codeforces Round #543 (Div. 2, based on Technocup 2019 Final Round)的更多相关文章
- cf 20190307 Codeforces Round #543 (Div. 2, based on Technocup 2019 Final Round)
B. Mike and Children time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- Codeforces Round #543 (Div. 1, based on Technocup 2019 Final Round) 题解
题面戳这里 A. Diana and Liana 首先如果s>ks>ks>k一定无解,特判一下.那么我们考虑找恰好满足满足题目中的要求的区间[l,r][l,r][l,r],那么需要要 ...
- Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2)
Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) #include <bits/stdc++ ...
- (AB)Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round
A. Right-Left Cipher time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) D. Minimum path
http://codeforces.com/contest/1072/problem/D bfs 走1步的最佳状态 -> 走2步的最佳状态 -> …… #include <bits/ ...
- Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2) D. Minimum path(字典序)
https://codeforces.com/contest/1072/problem/D 题意 给你一个n*n充满小写字母的矩阵,你可以更改任意k个格子的字符,然后输出字典序最小的从[1,1]到[n ...
- Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】
传送门:http://codeforces.com/contest/1087/problem/C C. Connect Three time limit per test 1 second memor ...
- Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Round 1) C. Vasya and Golden Ticket 【。。。】
任意门:http://codeforces.com/contest/1058/problem/C C. Vasya and Golden Ticket time limit per test 1 se ...
- Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)B. World Cup
The last stage of Football World Cup is played using the play-off system. There are n teams left in ...
随机推荐
- git仓库迁移
最近,装了git的本地服务器坏掉了, 没办法只能临时进行仓库的迁移 保证项目正常进行 在项目的根目录执行右键执行 查询当前仓库的远程地址 git remote -v 查看现有远程仓库的地址url 修 ...
- .Net高级进阶,教你如何构建企业模型数据拦截层,动态控制字段验证
现在,你有一个MVC架构的web项目,你要完成一个注册功能. 前台传了3个值到你的控制器,分别是账号.密码.邮箱. 如图:现在你要在控制器里面判断,账号名称.密码.邮箱不能为空,并且名称和密码不超过1 ...
- asp.net core C#设计一个实用的线程池
菜菜呀,我最近研究技术呢,发现线上一个任务程序线程数有点多呀 CEO,CTO,CFO于一身的CXO x总,你学编程呢? 菜菜 作为公司总负责人,我以后还要管理技术部门呢,怎么能不会技术呢 CEO,CT ...
- WCF系列教程之消息交换模式之请求与答复模式(Request/Reply)
1.使用WCF请求与答复模式须知 (1).客户端调用WCF服务端需要等待服务端的返回,即使返回类型是void (2).相比Duplex来讲,这种模式强调的是客户端的被动接受,也就是说客户端接受到响应后 ...
- H5 19-序选择器下
19-序选择器下 我是项目 我是项目 我是项目 我是项目 我是项目 我是项目 我是项目 <!DOCTYPE html> <html lang="en"> & ...
- HDU 3478 Catch (连通性&&二分图判断)
链接 [https://vjudge.net/contest/281085#problem/C] 题意 一个n个点,m条边的图,开始的点是s 每次必须移动到相邻的位置,问你是否存在某个时刻所有点都可能 ...
- 福州大学软件工程1816 | W班 第4次作业(团队展示)成绩排名
作业链接 评分细则 队员姓名与学号(标记组长),其中4-7人一组,特殊情况经老师允许后可以突破限制:(1分) 队名(体现项目内容,并要求有亮点与个性):(1分) 拟作的团队项目描述:一句话(中英文不限 ...
- 【学习总结】vi/vim命令是使用
每次要么想不起来用,要么进去了出不来,真是醉了.痛定思痛此处填坑. 参考教程:菜鸟教程vi/vim 实验环境:借Git-bash宝地一用 注意:记住关键的步骤! 按i a o进入输入模式(即使有时按v ...
- 基于CRM跟进(活动)记录中关键字识别的客户跟进加权值的成单概率算法
1.提取销售人员的跟进记录,分析其中的骂人文字(负面情绪),将有负面情绪的客户的跟进排期,进行降权(权重)操作.重点跟进加权值较高的客户. 执行办法: 将销售与客户沟通的语音:电话,微信,QQ,通过调 ...
- YOLO.h5 下载
链接:https://pan.baidu.com/s/1sTxkuaFWXqT4yXLHQ9BgUA 密码:ga0o fhwayd_w1231234asd><321$%