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 ;
}
B. Mike and Children
题意:给出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=+;
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)的更多相关文章

  1. 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 ...

  2. 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],那么需要要 ...

  3. 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++ ...

  4. (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 ...

  5. 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/ ...

  6. 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 ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. NO NEWS IS GOOD NEWS

    从客户那传来一个噩耗:要求每个表单在保存之后,要在页面上弹一个 “ 保存成功 ” 的对话框. 客户代表志得意满地说这样用户体验更好,略带谴责意味地傲娇道,“你们早该想到的”.呵呵…… 可不是嘛,我刚入 ...

  2. Mac 小记 — iTerm2、Zsh、Homebrew

    前言 写完 "Ubuntu 自动化配置" 这篇文章后,每次连服务器心情指数都上升好几个百分点,于是想着应该将 macOs 的开发环境也梳理梳理,应该会对开发效率有所增益. 1. i ...

  3. Jmeter(三十八)while控制器实现ssh三次重连

    在jmeter中,可以使用SSH协议连接主机进行相关操作, 步骤如下 首先添加一个ssh command  我们的测试交流群:317765580 在command中填写远程连接的必要信息 结果树中可以 ...

  4. xadmin后台页面的自定制

    01-自定制页面 注:最近找到了更好的解决办法:重写钩子函数版  https://www.cnblogs.com/pgxpython/p/10593507.html 需求背景:根据要实现的功能需求,x ...

  5. 学习用Node.js和Elasticsearch构建搜索引擎(2):一些检索命令

    1.Elasticsearch搜索数据有两种方式. 一种方式是通过REST请求URI,发送搜索参数: 另一种是通过REST请求体,发送搜索参数.而请求体允许你包含更容易表达和可阅读的JSON格式.这个 ...

  6. C++常用代码优化策略

    C++代码常用的优化策略 1.不存在指向空值的引用,意味着引用比指针的效率更高,因为在使用引用之前不需要测试它的合法性:指针可以被重新赋值以指向另一个不同的对象,但是引用总是指向它初始化时指定的对象. ...

  7. AndroidManifest.xml文件解析

    一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...

  8. 容器化-Docker实战

    导读:本文系统性介绍Docker安装.Docker组件.Docker命令.Dockerfile语法和Docker应用,通过上述介绍使我们已经对docker基本操作有一定了解. 一.前言 本文将系统性的 ...

  9. Jenkins整合SonarQube代码检测工具

    借鉴博客:https://blog.csdn.net/kefengwang/article/details/54377055 上面这博客写得挺详细的,挺不错.它这个博客没有提供下载的教程,这个博客提供 ...

  10. Flutter的Appbar

    actions → List一个 Widget 列表,代表 Toolbar 中所显示的菜单,对于常用的菜单,通常使用 IconButton 来表示:对于不常用的菜单通常使用PopupMenuButto ...