CF2112C Coloring Game

题意

Alice 和 Bob 正在玩一个游戏,使用一个大小为 \(n\) ( \(1 \leq n \leq 5000\) ) 的整数数组 \(a\)。

\(a\) 数组中的元素已从小到大排序。

初始时,数组中的所有元素都是无色的。

首先,Alice 选择 \(3\) 个元素并将它们染成红色。

然后 Bob 选择任意一个元素并将其染成蓝色(如果它已经是红色,则覆盖)。

如果红色元素的和严格大于蓝色元素的值,Alice 获胜。

你的任务是计算 Alice 选择 \(3\) 个元素的方式数,使得无论 Bob 如何操作,Alice 都能获胜。

题解

假设 Alice 已经选了三个元素 \((a_i,a_j,a_k)\),满足 \(i<j<k\)。

假设 Bob 选了 \(a_x\),显然 \(a_x\) 只会是 \(a_n\) 或者 \(a_k\) ,所以有:

\[s.t.
\left\{
\begin{array}{}
a_i+a_j+a_k>a_n\\
a_i+a_j>a_k
\end{array}
\right.
\]

转换一下,有 \(a_n-a_i-a_j+1\leq a_k\leq a_i+a_j\),由于 \(n\) 最大只有 \(5000\),可以 \(O(n^2)\) 的枚举 \(a_i\) 和 \(a_j\) ,再用树状数组维护出 \(a_k\),做到 \(O(n^2 \log V)\)。

具体的,由于需要满足 \(i<j<k\),所以我们要倒序枚举 \(a_j\) ,同时维护 \(a_k\),再枚举 \(a_i\) 计算答案,详见代码。

注意每个测试点结束后要清空树状数组,而且不能暴力清空,得写一个 \(\text{del}\) 函数,详见代码。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=5005;
const int M=1e5+5;
int n;
int a[N]; //树状数组
int t[M];
void upd(int x){ for(;x<M;x+=x&(-x)) t[x]++; }
void del(int x){ for(;x<M;x+=x&(-x)) t[x]--; }
int ask(int x){
if(x<=0) return 0;
int res=0;
for(;x;x-=x&(-x)) res+=t[x];
return res;
} void solve(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
int an=a[n];
long long ans=0;
for(int j=n-1;j>=2;j--){//枚举 a_j
upd(a[j+1]);//维护 a_k
for(int i=j-1;i>=1;i--)//枚举 a_i
ans+=(long long)max(0,ask(min(an,a[i]+a[j]-1))-ask(an-a[i]-a[j]));
}
cout<<ans<<"\n";
for(int i=3;i<=n;i++) del(a[i]);//清空树状数组
} int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T; cin>>T;
while(T--) solve();
return 0;
}

CF2112C Coloring Game的更多相关文章

  1. Codeforces Round #369 (Div. 2)---C - Coloring Trees (很妙的DP题)

    题目链接 http://codeforces.com/contest/711/problem/C Description ZS the Coder and Chris the Baboon has a ...

  2. CF149D. Coloring Brackets[区间DP !]

    题意:给括号匹配涂色,红色蓝色或不涂,要求见原题,求方案数 区间DP 用栈先处理匹配 f[i][j][0/1/2][0/1/2]表示i到ji涂色和j涂色的方案数 l和r匹配的话,转移到(l+1,r-1 ...

  3. Codeforces Round #369 (Div. 2) C. Coloring Trees DP

    C. Coloring Trees   ZS the Coder and Chris the Baboon has arrived at Udayland! They walked in the pa ...

  4. CodeForces #369 C. Coloring Trees DP

    题目链接:C. Coloring Trees 题意:给出n棵树的颜色,有些树被染了,有些没有.现在让你把没被染色的树染色.使得beauty = k.问,最少使用的颜料是多少.   K:连续的颜色为一组 ...

  5. CodeForces 149D Coloring Brackets

    Coloring Brackets time limit per test: 2 seconds memory limit per test: 256 megabytes input: standar ...

  6. C. Coloring Trees DP

    传送门:http://codeforces.com/problemset/problem/711/C 题目: C. Coloring Trees time limit per test 2 secon ...

  7. codeforces 711C C. Coloring Trees(dp)

    题目链接: C. Coloring Trees time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  8. POJ 1419 Graph Coloring(最大独立集/补图的最大团)

    Graph Coloring Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4893   Accepted: 2271   ...

  9. URAL 1080 Map Coloring(染色)

    Map Coloring Time limit: 1.0 secondMemory limit: 64 MB We consider a geographical map with N countri ...

  10. POJ1419 Graph Coloring(最大独立集)(最大团)

                                                               Graph Coloring Time Limit: 1000MS   Memor ...

随机推荐

  1. CF757G Can Bash Save the Day? (复健 Day 1)

    先差分为 \(Q(r)-Q(l-1)\),\(Q(i)=\sum_{j=1}^{i} \operatorname{dis}(p_j, x)\). 树上在线路径优先考虑点分树,先想询问怎么做,我们记 \ ...

  2. C# DataGridViewRow转换为(Model)实体对象

    https://blog.csdn.net/cxu123321/article/details/107875832 ContactModel model = dataGridView1.Current ...

  3. VBA使用Outlook自动发送邮件

    ↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓ 基础版本–能自动发送就是成功 利用VBA使用Outlook自动发送邮件,代码及注释如下: Sub send_mail() Dim ...

  4. 修改Git全部Commit提交记录的用户名Name和邮箱Email

    当我们换邮箱了,想把已经提交过的 commit 的邮箱和用户名改成新的时候. 先把本地配置成新的 git config user.name '丁少华' git config user.email '新 ...

  5. git回退到指定commit并同步到线上

    查看commit id git log 本地回退到指定commitid git reset --hard 6acd0f4cfc78302c5563facc1ebc7c84384aef3e 推送到远程 ...

  6. SpringBoot--如何整体读取多个配置属性及其相关操作

    上篇文章讲到使用@Value注解每次只能读取一个配置属性,若要整体读取多个属性,或者读取具有某种结构关系的一组属性可使用@ConfigurationProperties注解来处理. @Configur ...

  7. 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现,直接使用update会报错。

    简介 修改数据 update titles_test set emp_no = replace(emp_no, 10001, 10005) where id = 5; update titles_te ...

  8. SciTech-Physics-Relativity:相对论: 正解"相对论" + "光速不变原理"+VS 声波、水波 的传播速度

    SciTech-Physics-Relativity:相对论: Relativity:相对论 Relativity:相对论 分 "广义相对论"和"狭义相对论". ...

  9. Trae开发uni-app+Vue3+TS项目飘红踩坑

    前情 Trae IDE上线后我是第一时间去使用体验的,但是因为一直排队问题不得转战cursor,等到Trae出付费模式的时候,我已经办了Cursor的会员,本来是想等会员过期了再转战Trae的,但是最 ...

  10. Win11专业版电脑打印机如何共享的问题

    有电脑基地的用户,在办公的时候总会需要使用到打印机的功能,把打印机连接到电脑中就可以享受打印服务,您可以随时随地使用打印机打印东西,如果想让win11系统同一台打印机同时被两台电脑连接该怎么设置呢?这 ...