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 ...
随机推荐
- SkyWalking Liunx 环境搭建&NetCore接入
背景 前两天看见有小哥介绍windows下安装skywalking的介绍地址在这. 正好最近也在搭建linux环境的SkyWalking,顺便把linux环境搭建的经验分享下,帮助下使用linux部署 ...
- LeetCode 965. Univalued Binary Tree
A binary tree is univalued if every node in the tree has the same value. Return true if and only if ...
- [2017BUAA软工助教]团队开发阶段CheckList
alpha阶段流程与相关节点 以下流程与团队项目中个人的得分点是一一对应的,详见QA文档中"个人在团队项目的得分部分" http://www.cnblogs.com/Childis ...
- hadoop和java 配置环境变量的的tar
第一步:打开工具上传tar包 如下图 第二步:在文件路径下查看是否上传成功 第三步:解压tar包 tar -zxvf hadoop.2.6.5.tar.gz 第四步:配置环 ...
- 【面试】MySQL的事务和索引
MySQL事务 MySQL事务主要用于处理操作量大,复杂度高的数据. 比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这些数据库操作 ...
- 在Laravel中使用数据库事务以及捕获事务失败后的异常
Description 在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法.如果在事务的闭包内抛出异常,事务将会被自动还原.如果闭包运 ...
- Linux基础操作二
编程语言的作用及与操作系统和硬件的关系 编程语言的作用:用来定义计算机程序的形式,程序员用它来编写程序,进而控制其向计算机发出指令,使计算机完成人类布置的任务. 编程语言的作用及与操作系统和硬件的关系 ...
- windows环境下protobuf的java操作{编译,序列化,反序列化}
google protocol buffer的使用和原理 概况: Protocol Buffers(也就是protobuf)是谷歌的语言中立的.平台中立的.可扩展的用于序列化结构化的数据: windo ...
- 记录SSM框架项目迁移SpringBoot框架-----pom.xml的迁移
第一步:迁移pom.xml文件(去除spring相关的依赖) SSM中的pom: <project xmlns="http://maven.apache.org/POM/4.0.0&q ...
- Selenium简单回顾
一.Selenium介绍 1.Selenium(浏览器自动化测试框架): Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的 ...