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. 美橙互联SSL 部署到IIS 7以上

    前言:立秋已至,汗流浃背,感觉夏天正到最热的时候...广州某一“著名”大厦 老板:穆德(我),现在要开发个微信小程序.开搞吧. 我:纳尼?好吧.需要购买SSL证书(⊙o⊙)? 老板:神马鬼,有没有免费 ...

  2. Windows 10 配置Linux及安装Docker

    https://baijiahao.baidu.com/s?id=1607159570058814753&wfr=spider&for=pc https://blog.csdn.net ...

  3. 朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则

    朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则 [下载本文PDF进行阅读] 本文有两个部分,先介绍一下给飞机换引擎这个事情我的一些经验,因为篇幅较短然后介绍一下安全意识方面的一些心得. ...

  4. 《React Native 精解与实战》书籍连载「iOS 平台与 React Native 混合开发」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  5. js中布尔值为false的六种情况

    下面6种值转化为布尔值时为false,其他转化都为true 1.undefined(未定义,找不到值时出现) 2.null(代表空值) 3.false(布尔值的false,字符串"false ...

  6. Django 中的Form表单认证

    一.Form表单   1.1 Form的几个功能 验证用户数据(显示错误信息) 初始化页面显示内容 HTML Form提交保留上次提交数据 生成HTML标签   1.2 创建表单类Form 1. 创建 ...

  7. Linux查看和注销用户(User)

    Linux如何注销其他用户?_Linux教程_Linux公社-Linux系统门户网站https://www.linuxidc.com/Linux/2012-07/64939.htm linux注销指定 ...

  8. 给网站配置免费的HTTS证书

    取经自思否:https://segmentfault.com/a/1190000015231137 https 的网站 搜索引擎 会优先收录,所以就抽时间记录下配置博客的过程,各种找资料,终于给我找到 ...

  9. Java 获取当前日期的四种方法

    //1 通过Date类来获取当前时间,通过SimpleDateFormat来设置时间格式 SimpleDateFormat dateFormat = new SimpleDateFormat(&quo ...

  10. Linux 文件特殊权限 SUID SGID SBIT

    文件除了常规的权限r, w, x 还有一些特殊的权限,s与t权限,具体的用处如下 1 SetUID 当s 这个标志出现在文件所有者的x权限上时, 例如/usr/bin/passwd, [root@or ...