A

反过来考虑,由皇后和国王的位置去寻找骑士的位置,当一个点既可以被皇后找到,也可以被国王找到时就说明这个点是满足条件的

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(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
#define x first
#define y second
using namespace std; const int N=3e5+10;
int n,m;
int dx[]={0,1,1,-1,-1};
int dy[]={0,1,-1,1,-1};
void solve()
{
map<PII,int>mp;
int xk,yk,xq,yq,a,b;cin>>a>>b>>xk>>yk>>xq>>yq;
rep(i,1,4)
{
mp[{xk+dx[i]*a,yk+dy[i]*b}]++;
if(a!=b) mp[{xk+dx[i]*b,yk+dy[i]*a}]++;
mp[{xq+dx[i]*a,yq+dy[i]*b}]++;
if(a!=b) mp[{xq+dx[i]*b,yq+dy[i]*a}]++;
}
int ans=0;
for(auto cnt:mp) if(cnt.y>1) ans++;
cout<<ans<<endl;
} int main()
{
IOS
// freopen("1.in", "r", stdin);
int t;
cin>>t;
while(t--)
solve();
return 0;
}

B

思路:排序+前缀和

先排序,对于\(a[i],前面的数一定是小于它的一定可以被删除,需要找到后面最远能到达哪里\)

\(假设最远能到达r,那么[i,r]这一段区间中所有数的答案是一样的都是到r,如何判断哪里是最远?\)

\(当s[r]<a[r+1]时就说明此时r到达了最远\)

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(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
#define x first
#define y second
using namespace std; const int N=1e5+10;
ll n,m,a[N],s[N],ans[N];
struct node
{
int val,pos;
}b[N]; bool cmp(node a, node b)
{
return a.val<b.val;
} void solve()
{
cin>>n;
rep(i,1,n) cin>>a[i],b[i].val=a[i],b[i].pos=i;
sort(b+1,b+1+n,cmp);
rep(i,1,n) s[i]=s[i-1]+b[i].val;
int last=0;
rep(i,1,n)
{
if(last<i)
{
last=i;
while(s[last]>=b[last+1].val&&last+1<=n) last++;
}
ans[b[i].pos]=last-1;
}
rep(i,1,n) cout<<ans[i]<<' ';
cout<<endl;
rep(i,1,n) s[i]=0,ans[i]=0;
} int main()
{
IOS
// freopen("1.in", "r", stdin);
int t;
cin>>t;
while(t--)
solve();
return 0;
}

C

思路:

\(当k=1时\)显然可以直接暴力求解,\(O(n^2)枚举\)

\(当k>=3时\)结果显然是0,前两次都选择一样的i、j,后面选择新产生的两个数直接相减为0

\(当k=2时,对n^2个数每个数在排好序的a数组上面二分找到最接近的维护最小值就是答案\)

需要注意一定要和最开始的a取一下最小值,因为答案可能在最初的a中

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(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
#define x first
#define y second
using namespace std; const int N=5e6+10;
ll n,k,a[N],b[N]; void solve()
{
cin>>n>>k;
ll ans=1e18;
rep(i,1,n) cin>>a[i],ans=min(ans,a[i]);
if(k>=3)
{
cout<<0<<endl;
return;
}
sort(a+1,a+1+n);
rep(i,2,n) ans=min(ans,a[i]-a[i-1]);
if(k==1)
{
cout<<ans<<endl;
return;
}
if(k==2)
{
rep(i,1,n) rep(j,i+1,n)
{
ll xx=abs(a[j]-a[i]);
int k=lower_bound(a+1,a+1+n,xx)-a;
if(k<=n) ans=min(ans,a[k]-xx);
if(k>=2) ans=min(ans,xx-a[k-1]);
}
cout<<ans<<endl;
}
} int main()
{
IOS
// freopen("1.in", "r", stdin);
int t;
cin>>t;
while(t--)
solve();
return 0;
}

Codeforces Round 914 (Div. 2)A~C的更多相关文章

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

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

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

  3. Codeforces Round #368 (Div. 2)

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

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

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

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

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

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

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

  8. Codeforces Round #371 (Div. 1)

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

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

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

  10. 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts

    题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...

随机推荐

  1. IM开源项目OpenIM部署文档-从准备工作到nginx配置

    IM开源项目OpenIM部署文档-从准备工作到nginx配置 2022-11-14 22:27·OpenIM 一.准备工作 运行环境 linux系统即可, Ubuntu 7.5.0-3ubuntu1~ ...

  2. github 2fa中国认证及TOTP App

    Because of your contributions on GitHub, two-factor authentication will be required for your account ...

  3. ElasticSearch安装、插件介绍及Kibana的安装与使用详解

    ElasticSearch安装.插件介绍及Kibana的安装与使用详解 1.安装 ElasticSearch 1.1 安装 JDK 环境 因为 ElasticSearch 是用 Java 语言编写的, ...

  4. 中文多模态医学大模型智能分析X光片,实现影像诊断,完成医生问诊多轮对话

    中文多模态医学大模型智能分析X光片,实现影像诊断,完成医生问诊多轮对话 1.背景介绍介绍 最近,通用领域的大语言模型 (LLM),例如 ChatGPT,在遵循指令和产生类似人类响应方面取得了显著的成功 ...

  5. Flask Echarts 实现历史图形查询

    Flask前后端数据动态交互涉及用户界面与服务器之间的灵活数据传递.用户界面使用ECharts图形库实时渲染数据.它提供了丰富多彩.交互性强的图表和地图,能够在网页上直观.生动地展示数据.EChart ...

  6. 21.11 Python 使用CRC图片去重

    使用CRC32还可实现图片去重功能,如下FindRepeatFile函数,运行后通过对所有文件做crc校验并将校验值存储至CatalogueDict字典内,接着依次提取CRC特征值并将其存储至Cata ...

  7. 4.1 C++ Boost 字符串处理库

    Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...

  8. UVA12024 Hats 题解

    题目传送门 前置知识 错位排列 题意 有 \(t\) 组询问,每次询问给定一个 \(n\),表示有 \(n\) 个人,每人各有一个属于自己的帽子,求所有人都带错帽子的概率(不要求约分至最简形式). 解 ...

  9. 【React】排查两小时,修改一个词,记一个因代码书写不规范导致的生命周期BUG

    壹 ❀ 引 因为现在工作主要以修bug为主,日常工作中总是会接触到千奇百怪的前端问题,它可能是代码缺陷导致的程序错误,也可能是方案不合理造成的性能问题,老实说修bug是一件很枯燥的事情,你需要阅读大量 ...

  10. 从零开始的react入门教程(七),react中的状态提升,我们为什么需要使用redux

    壹 ❀ 引 在前面的文章中,我们了解到react中的数据由props与State构成,数据就像瀑布中的水自上而下流动,属于单向数据流.而这两者的区别也很简单,对于一个组件而言,如果说props是外部传 ...