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. Web 应用 WEB框架 HTTP协议 初识Django

    ----------------------------财富存在于人的思想里,你没找到路,不等于没有路,你想知道将来要得到什么,你必须知道现在应该先做什么和先放弃什么! [web 应用] web应用 ...

  2. 内置函数二: map sorted filter

    -----------生活里没有奇迹,大部分的时候奇迹是你自己创造的. # -------------------------------------------------------------- ...

  3. poj2104 主席树裸题

    空间大小:n*lgn 复杂度:建树n*lgn  查询lgn #include <cstdio> #include <iostream> #include <algorit ...

  4. Hadoop生态的配置

    网盘下载地址 链接: https://pan.baidu.com/s/19qWnP6LQ-cHVrvT0o1jTMg 密码: 44hs Hadoop伪分布式配置  Hadoop 可以在单节点上以伪分布 ...

  5. 实现h5中radio单击取消与选中

    <input type = "radio" id = "raid" name = "raname" checked = 'checke ...

  6. 初次使用git上传代码到github远程仓库

    https://blog.csdn.net/loner_fang/article/details/80488385 2018年05月28日 21:02:31 蒲公英上的尘埃 阅读数:697 因为最近在 ...

  7. 解决mysql1336

    1.mysql字符集与插入数据字符集不匹配 USE 数据库名称SHOW VARIABLES LIKE 'character%'SET character_set_server=utf8;SET cha ...

  8. this is incompatible with sql_mode=only_full_group_by

    mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by - Jim_.NET - 博客园 http://www.c ...

  9. Proper usage of Java -D command-line parameters

    https://stackoverflow.com/questions/5045608/proper-usage-of-java-d-command-line-parameters https://c ...

  10. Java 异常处理的误区和经验总结

    Java 异常处理的误区和经验总结   1 本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳.只有处理好了异常,才能提升开发人员 ...