Codeforces Round 944 (Div. 4)
知识点模块
1. ai xor aj<=4
意味着两个数字的二进制位,只能有后两位的二进制位不同,因为如果第三位二进制位不同,就会出现异或的结果大于4
2.要有化曲为直的思想
学会把曲线上的坐标转为直线,说不定会有意想不到的结果
B. Different String
这一题只要检查一下是否全部为一个字母即可,如果有不同的字母,我们就把第一个和从0开始的第一个字母不同的字母标记一下,然后从标记处开始输出再输出0到标记处实现交换,当然可以参考官方的解答,遇到不同的两两交换也是行的
1.我自己的代码
点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
void solve()
{
string s;
cin>>s;
int pos=0,flag=0,cnt=0;
map<char,int>mp;
for(int i=0;i<s.size();i++)
{
if(mp[s[i]]==0){
cnt++;
mp[s[i]]++;
}
if(s[i]!=s[0]&&flag==0)
{
pos=i;
flag=1;
}
}
if(cnt==1) cout<<"NO"<<endl;
else {
cout<<"YES"<<endl;
for(int i=pos;i<s.size();i++) cout<<s[i];
for(int i=0;i<pos;i++) cout<<s[i];
cout<<endl;
}
}
signed main()
{
int t=1;
cin>>t;
while(t--) solve();
return 0;
}
C. Clock and Strings
这题的思路是化曲为直,其实我们可以想象一下,把圆从12处拉开成一条直线,那么如果两条直线相交则一定区间一定会有重叠的部分,那么不相交的只有包含关系和两者没有重叠部分的关系,所以只需要取一下两点的最大最小值讨论一下即可
点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
void solve()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
int max1=max(a,b),max2=max(c,d),min1=min(a,b),min2=min(c,d);
if(min1>min2&&max1<max2||min2>min1&&max2<max1) cout<<"no"<<endl;
else if(max1<min2||max2<min1) cout<<"no"<<endl;
else cout<<"yes"<<endl;
}
signed main()
{
int t=1;
cin>>t;
while(t--) solve();
return 0;
}
D. Binary Cut
1.想要把序列弄成由0到1的有序排列,我们一定要有01这种连接的部分,而且只需要一个这种连接的部分即可,当然它可以是00001,001,000001等等
2.当我们从左往右遍历字符串的时候,我们只要遇到一个与上一个字符不同的,便是一个数据块(只有0和只有1的数字块),那么答案就是数据块的数量,再看有无01类似这样的连接块,有的话就是数据块-1,没有就是数据块的数量
点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
void solve()
{
string s;
cin>>s;
int res=0;
bool check=0;
for(int i=0;i<s.size();i++)
{
res+=(s[i]!=s[i+1]);
if(s[i]=='0'&&s[i+1]=='1') check=1;
}
cout<<res-check<<endl;
}
signed main()
{
int t=1;
cin>>t;
while(t--) solve();
return 0;
}
E. Find the Car
1.因为给出的每个已知点间的每一段速度是固定的,所以我们的思路就是先二分出第一个大于等于该查询值的路程下标,然后该下标-1,便是第一个小于该路程值已知点的下标,答案便是已知的花费时间+该段的差值/该段的固定速度,可以直接开int就能过
点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
void solve()
{
int n,k,q;
cin>>n>>k>>q;
vector<int>a(k+1),b(k+1);
//a存的已知到达的点的数值
//b存的到达对应点的时间
//那么(a[i]-a[i-1])/b[i]-b[i-1]为每段区间的速度
for(int i=1;i<=k;i++) cin>>a[i];
for(int i=1;i<=k;i++) cin>>b[i];
while(q--)
{
int x;
cin>>x;
if(x==0){
cout<<"0"<<endl;
continue;
}
int pos=lower_bound(a.begin(),a.begin()+k,x)-a.begin();
//pos为第一个大于或等于该路程值的下标
//cout<<pos<<endl;
int len=x-a[pos-1];
int tim=len*(b[pos]-b[pos-1])/(a[pos]-a[pos-1]);
cout<<b[pos-1]+tim<<endl;
}
}
signed main()
{
int t=1;
cin>>t;
while(t--) solve();
return 0;
}
F. Circle Perimeter
1.虽然是计算四个象限所有的点,但是我们可以通过计算一个象限的点再*4即可,直接枚举0-x的格点,然后验证一下是否符合,但是这样是超时的,那我们就操作一下,把一些不合格的点预处理一下,这样就可以过了,总结来说就是枚举验证即可
点击查看代码
#include <bits/stdc++.h>
#define int long long
#define mod 100000007;
using namespace std;
void solve()
{
int r,ans=0;
cin>>r;
int y=r;
for(int i=0;i<=r;i++)
{
//因为如果这个高度不符合了,x在增大后面的格点也是不符合的
while(i*i+y*y>=(r+1)*(r+1))
{
y--;
}
int top=y;
while(i*i+top*top>=r*r&&top>0)
{
ans++;
top--;
}
}
cout<<ans*4<<endl;
}
signed main()
{
int t=1;
cin>>t;
while(t--) solve();
return 0;
}
G. XOUR
这个题目首先要理解一下这个ai XOR aj小于4的含义,也就是说,只允许每个数字的后两个后进制为不相同,前面的进制位都必须相同,因为但凡有一个不相同,那么异或的结果就会大于4,所以我们可以先对该数字右移两位,把这两个比特覆盖掉。然后我们可以开一个map里面存数字和优先队列,让这个几个数自动从小到大排序,然后遍历,数组那么每个数字就相当于这个队列的序号,从对应的队列取排序好的数就行了
点击查看代码
#include <bits/stdc++.h>
#define int long long
#define mod 100000007;
using namespace std;
void solve()
{
map<int,priority_queue<int,vector<int>,greater<int> > >mp;
int n;
cin>>n;
vector<int>a(n+1);
for(int i=1;i<=n;i++)
{
cin>>a[i];
mp[a[i]>>2].push(a[i]);
}
for(int i=1;i<=n;i++)
{
cout<<mp[a[i]>>2].top() <<" ";
mp[a[i]>>2].pop();
}
cout<<endl;
}
signed main()
{
int t=1;
cin>>t;
while(t--) solve();
return 0;
}
Codeforces Round 944 (Div. 4)的更多相关文章
- 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为还需要的蜡烛数, ...
随机推荐
- 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(4)
1.问题描述: 添加了很多的marker点,每个marker点都设置了customInfoWindow,但是每次只能显示一个customInfoWindow吗? 解决方案: Marker的InfoWi ...
- https证书管理系统- 自动化签发
https证书管理系统- 自动化签发 第一步:前往网站,注册账户 https://www.lingyanspace.com/ 第二步:进入证书服务菜单,点击新增证书 第三步:填写自有的域名,点击创建订 ...
- 深入解析 Spring AI 系列:解析返回参数处理
关于普通聊天对接,目前已经完成了大部分讲解,剩下的就是最后一步,今天我们将重点讨论在返回参数时需要注意的几个关键点.为了更好地说明这些注意事项,我们仍然以OpenAI接口为例,逐步讲解相关的代码实现, ...
- 解决NuGet加载或下载资源慢的问题
我们在使用NuGet默认的服务地址访问资源时,有时候会遇到加载或下载速度很慢的情况,原因是默认的服务地址是国外的,大家都懂.此时我们可以采取一些"措施",多添加几个国内的资源访问地 ...
- 你知道PCB走线可以过多大的瞬态电流吗?
相信很多同学在PCB Layout设计过程中,都有过这样的疑问:网口要做8KV浪涌防护,PCB走线应该走多宽呢? 有经验的硬件工程师可能此时就会说了,那还不简单,表层走线按照1mm/A,内层走线按照2 ...
- Luogu P4425 转盘 题解 [ 黑 ] [ 线段树 ] [ 贪心 ] [ 递归 ]
转盘:蒟蒻的第一道黑,这题是贪心和线段树递归合并的综合题. 贪心 破环成链的 trick 自然不用多说. 首先观察题目,很容易发现一个性质:只走一圈的方案一定最优.这个很容易证,因为再绕一圈回来标记前 ...
- RDK新一代模型转换可视化工具!!!
作者:SkyXZ CSDN:SkyXZ--CSDN博客 博客园:SkyXZ - 博客园 之前在使用的RDK X3的时候,吴诺老师@wunuo发布了新一代量化转换工具链使用教程,这个工具真的非常的方便, ...
- 炸裂:SpringAI内置DeepSeek啦!
好消息,Spring AI 最新快照版已经内置 DeepSeek 了,所以以后项目中对接 DeepSeek 就方便多了.但因为快照版会有很多 Bug,所以今天咱们就来看稳定版的 Spring AI 如 ...
- 管理虚拟机(libvirt)
给我的理解就是与用户交互的"显示器" [root@kvm1 ~]# systemctl status libvirtd [root@kvm1 ~]# virsh virsh # l ...
- [BZOJ3160] 万径人踪灭 题解
首先正难则反,想到答案即为满足第一条要求的回文子序列数量,减去回文子串数量.回文子串数量 \(hash+\) 二分即可,考虑前半部分. 假如我们将一个回文子序列一层层剥开,就会发现它其实是由多个相同的 ...