Codeforces Round 914 (Div. 2)A~C
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的更多相关文章
- 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 ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- 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 ...
- 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 ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
- Codeforces Round #268 (Div. 2) ABCD
CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...
- 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts
题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...
随机推荐
- 无法下载安装文件,请检查internet连接
win10 vs2019下提示visual studio installer无法下载安装文件,请检查internet连接 1.打开"网络和Internet设置",更改适配器 ...
- 情侣纪念日网站html5源码教程
个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying 预览图 直接进入我的网站吧 >> Z_ ...
- NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等
NLP专栏简介:数据增强.智能标注.意图识别算法|多分类算法.文本信息抽取.多模态信息抽取.可解释性分析.性能调优.模型压缩算法等 专栏链接:NLP领域知识+项目+码源+方案设计 订阅本专栏你能获得什 ...
- SpringCloud-04-http客户端Feign
http客户端Feign 1.Feign的介绍 Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign 其作用就是帮助我们优雅的实现ht ...
- Markdown Rules 详解
使用VSCode编写Markdown文件时,建议安装插件markdownlint,它可以帮助自己更加规范的写文章. 下面是所有的markdown语法错误信息以便纠错. Rules文档 Markdown ...
- KB0001.修改DoraCloud管理系统的IP地址
KB0001.修改DoraCloud管理系统的IP地址 DoraCloud 管理系统是一个CentOS Linux的虚拟机.我们既可以通过DoraCloud后台管理系统修改它的IP地址,也可以通过Ce ...
- AES算法:数据传输的安全保障
在当今数字化时代,数据安全成为了一个非常重要的问题.随着互联网的普及和信息技术的发展,我们需要一种可靠的加密算法来保护我们的敏感数据.Advanced Encryption Standard(AES) ...
- 力扣只写函数好怪WWWW,转战洛谷!
转战!目标刷完官方推荐题集
- 《ASP.NET Core 微服务实战》-- 读书笔记(第4章)
第 4 章 后端服务 现实中的服务不可能处于真空之中,大多数服务都需要与其他服务通信才能完成功能. 我们将这些支持性服务称为后端服务,接下来我们将通过创建一个新的服务并修改之前的团队服务与这个服务通信 ...
- Linux 中Yum命令使用方法
Linux系统下常用yum安装命令详解 yum常用安装命令 使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的. 1.安装killall命令yum install -y psm ...