A

统计一下每个字母的出现次数然后输出即可

#include <bits/stdc++.h>
#define rep(i,a,b) for(register int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(register int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f using namespace std;
const int N = 1e5+10;
int t; void solve()
{
int n; string str;
cin >> n >> str;
map<char,int>cnt;
rep(i,0,str.size()-1)
{
cnt[str[i]]++;
}
int ans = 0;
for(auto x:cnt)
{
int num=x.first-'A'+1;
if(x.second>=num) ans++;
}
cout << ans << endl;
} int main()
{
IOS
// freopen("1.in", "r", stdin);
cin >> t;
while(t --)
solve();
return 0;
}

B

前k个数是后n-k个数的顺序,后面的数逆序即可

#include <bits/stdc++.h>
#define rep(i,a,b) for(register int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(register int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f using namespace std;
const int N = 1e5+10;
int t,a[60]; void solve()
{
int n, k, cnt=1; cin >> n >> k;
rep(i,1,n) a[i]=0; rep(i,n-k,n) a[cnt++] = i;
fep(i,n-k-1,1) a[cnt++] = i;
rep(i,1,n) cout << a[i] << ' ';
cout << endl;
} int main()
{
IOS
// freopen("1.in", "r", stdin);
cin >> t;
while(t --)
solve();
return 0;
}

C

#include <bits/stdc++.h>
#define rep(i,a,b) for(register int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(register int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f using namespace std;
const int N = 2e5+10;
int t;
int a[N], b[N], s[N];
void solve()
{
int n, k; cin >> n >> k;
rep(i,1,n) s[i]=0;
rep(i,1,n) cin >> a[i], s[i] = s[i-1]+a[i];
rep(i,1,n) cin >> b[i];
int maxx=-INF, ans=-INF;
rep(i,1,min(k,n))
{
maxx=max(maxx, b[i]);
int cur=s[i]; cur+=max(0,k-i)*maxx;
ans=max(cur,ans);
}
cout << ans << endl;
} int main()
{
IOS
// freopen("1.in", "r", stdin);
cin >> t;
while(t --)
solve();
return 0;
}

D

考虑维护每一个数组前缀和后缀的最大值

然后考虑3种情况即那个数在中间

a、b、c均可以在中间,

a在中间有b a c和c a b两种情况

b在中间有a b c和c b a两种情况

c在中间有a c b和b a c两种情况

这里只说a在中间的情况

我们枚举a的位置\(i\in[2,n-1]\)

那么对于b a c,b在a左边所以就是b应选择的是\([1,i-1]\)中的最大值,也就是lb[i-1]

c在右边应选择的就是rc[i+1]

这种情况的最大值就是\(a[i]+lb[i-1]+rc[i+1]\)

然后对其他几种情况做同样的处理即可

#include <bits/stdc++.h>
#define rep(i,a,b) for(register int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(register int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f using namespace std;
const int N = 2e5+10;
int t, a[N], b[N], c[N];
int la[N], ra[N], lb[N], rb[N], lc[N], rc[N]; void solve()
{
int n; cin >> n;
rep(i,0,n+1) la[i]=0,ra[i]=0,lb[i]=0,rb[i]=0,lc[i]=0,rc[i]=0;
rep(i,1,n) cin >> a[i];
rep(i,1,n) cin >> b[i];
rep(i,1,n) cin >> c[i];
rep(i,1,n) la[i] = max(la[i-1], a[i]);
fep(i,n,1) ra[i] = max(ra[i+1], a[i]);
rep(i,1,n) lb[i] = max(lb[i-1], b[i]);
fep(i,n,1) rb[i] = max(rb[i+1], b[i]);
rep(i,1,n) lc[i] = max(lc[i-1], c[i]);
fep(i,n,1) rc[i] = max(rc[i+1], c[i]);
ll ans=0;
rep(i,2,n-1)
{
ll maxx=0;
maxx = max(maxx, (ll)a[i] + lb[i-1] + rc[i+1]);
maxx = max(maxx, (ll)a[i] + lc[i-1] + rb[i+1]);
maxx = max(maxx, (ll)b[i] + la[i-1] + rc[i+1]);
maxx = max(maxx, (ll)b[i] + lc[i-1] + ra[i+1]);
maxx = max(maxx, (ll)c[i] + la[i-1] + rb[i+1]);
maxx = max(maxx, (ll)c[i] + lb[i-1] + ra[i+1]);
ans = max(ans, maxx);
}
cout << ans << endl;
} int main()
{
IOS
// freopen("1.in", "r", stdin);
cin >> t;
while(t --)
solve();
return 0;
}

E1、E2

这道题目从数学的角度推公式比较好理解

考虑A、B选择的策略

考虑两列

a:x,y

b:u,v

a选择前面的得到的结果是x-1-(v-1)=x-v

a选择后面的得到的结果是y-1-(u-1)=y-u

哪个更优选择哪个

\((x-v)>(y-u) \rightarrow x+u > y+v也就是每个人会选择当前a[i]+b[i]\)值较大的这一列进行操作

#include <bits/stdc++.h>
#define rep(i,a,b) for(register int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(register int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f using namespace std;
const int N = 2e5+10;
int t;
struct wy
{
ll x, y, sum;
}a[N];
bool cmp(wy a, wy b)
{
return a.sum > b.sum;
}
void solve()
{
int n; cin >> n;
rep(i,1,n) cin >> a[i].x;
rep(i,1,n) cin >> a[i].y, a[i].sum=a[i].x+a[i].y;
sort(a+1,a+1+n, cmp);
ll ans=0;
rep(i,1,n)
{
if(i&1) ans += a[i].x-1;
else ans -= a[i].y-1;
}
cout << ans << endl;
} int main()
{
IOS
// freopen("1.in", "r", stdin);
cin >> t;
while(t --)
solve();
return 0;
}

Codeforces Round 916 (Div. 3)(A~E2)的更多相关文章

  1. Codeforces Round #535 (Div. 3) 题解

    Codeforces Round #535 (Div. 3) 题目总链接:https://codeforces.com/contest/1108 太懒了啊~好久之前的我现在才更新,赶紧补上吧,不能漏掉 ...

  2. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  3. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  4. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  5. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  6. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  7. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  8. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  9. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

  10. Codeforces Round #268 (Div. 2) ABCD

    CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...

随机推荐

  1. 有道云笔记之备选方案Obsidian和Notion

    有道云笔记限制登录设备 在商业项目中一般都会有plana.planb,对于云笔记,我也在寻找planb,有道云笔记在国内市场已经占据了很大的份额. 同类型中的就不再去挑选了,我觉得商业软件,迟早也会走 ...

  2. 驱动开发:运用VAD隐藏R3内存思路

    在进程的_EPROCESS中有一个_RTL_AVL_TREE类型的VadRoot成员,它是一个存放进程内存块的二叉树结构,如果我们找到了这个二叉树中我们想要隐藏的内存,直接将这个内存在二叉树中抹去,其 ...

  3. 推荐一款接口自动化测试数据提取神器 JSonPath

    在之前分享中,给大家介绍过一篇:如何快速审核接口返回值全部字段解决方案,详见原文:接口自动化测试,一键快速校验接口返回值全部字段 .当时,提到解决这类问题,市面上常见的解决方案有两种: 根据业务校验需 ...

  4. P5309 [Ynoi2011] 初始化 题解

    题目链接:初始化 这种 ynoi 的老题就是卡常.来简单说说这题的思维切入口. 看到形如 \(y+k \times x\) 的结构,自然而然思考一下如果我们是暴力更新会有怎么样的效果.我们容易发现,如 ...

  5. 求助:Docker怎么连接mongoDB?

    首先 在playwithDocker中通过docker pull mongo引入mongo 然后创建容器 docker run -it --name mymongo -p 27017:27017 -v ...

  6. Python 中global 关键字理解

    Python中的global关键字,你了解吗? 前言 今天来了解下 Python 中的 global 关键字. Python变量的作用域 实战案例演示之前,先要了解下 Python 的作用域. Pyt ...

  7. low-code 低代码平台 java 代码自动一键生成工具

    low-code low-code 是一款为 java 打造的低代码平台. 开源地址:https://github.com/houbb/low-code 特性 支持基本的增删改查 支持枚举值处理 支持 ...

  8. Wireguard笔记(三) lan-to-lan子网穿透和多网段并存

    目录 Wireguard笔记(一) 节点安装配置和参数说明 Wireguard笔记(二) 命令行操作 Wireguard笔记(三) lan-to-lan子网穿透和多网段并存 多 Wireguard 服 ...

  9. Linux实现指定用户sftp传输,静止ssh登录

    1.环境 名称 ip server 192.168.1.1 client 192.168.1.2 2.服务器创建repl用户 useradd -m -d /home/repl -s /usr/sbin ...

  10. SpringCloud 注册中心Consul实战

    介绍 Consul是HashiCorp公司推出的开源工具,Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色.轻量级的特点.Consul是分布式的.高可用的. 可 ...