Codeforces_832
A.判断n/k的奇偶性。
#include<bits/stdc++.h>
using namespace std; long long n,k; int main()
{
ios::sync_with_stdio();
cin >> n >> k;
long long t = n/k;
if(t%) cout << "YES" << endl;
else cout << "NO" << endl;
return ;
}
B.先计算l = len(ss)-len(s去掉*后),若l小于0,则肯定NO。从左到右一个个判断,遇到*的时候,直接判断ss中l个字母。还要注意*在末尾的情况。
#include<bits/stdc++.h>
using namespace std; string s,ss;
int n;
map<char,int> mp; int main()
{
ios::sync_with_stdio();
cin >> ss >> s >> n;
for(int i = ;i < ss.length();i++) mp[ss[i]] = ;
s = ' '+s;
while(n--)
{
cin >> ss;
ss = ' '+ss;
int t = ss.length()-s.length()+,flag = ;
if(t < )
{
cout << "NO" << endl;
continue;
}
int i = ,j = ;
for(;i < s.length() && j < ss.length();i++,j++)
{
if(s[i] == '?')
{
if(!mp.count(ss[j])) flag = ;
}
else if(s[i] == '*')
{
j--;
while(t--)
{
j++;
if(mp.count(ss[j])) flag = ;
}
}
else if(s[i] != ss[j]) flag = ;
}
if(i < s.length() && s[i] == '*') i++;
if(flag && i == s.length() && j == ss.length()) cout << "YES" << endl;
else cout << "NO" << endl;
}
return ;
}
C.二分时间,对于每一个时间,更新每个向左的人的满足区间和向右的人的满足区间,只要两个区间相交,则该时间符合。
#include<bits/stdc++.h>
using namespace std; int n;
long long s;
struct xx
{
long long x,v,d;
}a[]; bool ok(double t)
{
long long l1 = ,r1 = ,l2 = ,r2 = ;
for(int i = ;i <= n;i++)
{
if(a[i].d == )
{
if(a[i].v*t >= a[i].x)
{
l1 = ;
r1 = ;
}
else if((a[i].v+s)*t >= a[i].x)
{
l1 = min(l1,a[i].x);
r1 = max(r1,a[i].x+(long long)((s*t+a[i].v*t-a[i].x)*(s-a[i].v))/s);
}
}
else
{
if(a[i].v*t >= -a[i].x)
{
l2 = ;
r2 = ;
}
else if((a[i].v+s)*t >= -a[i].x)
{
r2 = max(r2,a[i].x);
l2 = min(l2,a[i].x-(long long)((s*t+a[i].v*t-+a[i].x)*(s-a[i].v))/s);
}
}
}
if(l1 > r2 || l2 > r1) return ;
return ;
}
int main()
{
ios::sync_with_stdio();
cin >> n >> s;
for(int i = ;i <= n;i++) cin >> a[i].x >> a[i].v >> a[i].d;
double l = ,r = ;
for(int i = ;i <= ;i++)
{
double mid = (l+r)/;
if(ok(mid)) r = mid;
else l = mid;
}
cout << fixed << setprecision() << l << endl;
return ;
}
D.先假定一个根,每个询问分别计算3个点为f点时的ans,期间用到lca。
#include<bits/stdc++.h>
using namespace std; int n,q,dep[] = {},fa[][];
vector<int> v[]; void dfs(int now,int pre)
{
dep[now] = dep[pre]+;
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
if(t == pre) continue;
fa[t][] = now;
dfs(t,now);
}
} int lca(int x,int y)
{
if(dep[x] < dep[y]) swap(x,y);
int t = dep[x]-dep[y];
for(int i = ;i <= ;i++)
{
if((<<i)&t) x = fa[x][i];
}
if(x == y) return x;
for(int i = ;i >= ;i--)
{
if(fa[x][i] != fa[y][i])
{
x = fa[x][i];
y = fa[y][i];
}
}
return fa[x][];
} int f(int x,int y,int z)
{
int xy = lca(x,y),xz = lca(x,z),yz = lca(y,z);
int ans = dep[x]-max(dep[xy],dep[xz])+;
if(xy == xz) ans += dep[yz]-dep[xy];
return ans;
} int main()
{
ios::sync_with_stdio();
cin >> n >> q;
for(int i = ;i <= n;i++)
{
int x;
cin >> x;
v[i].push_back(x);
v[x].push_back(i);
}
dfs(,);
for(int i = ;i <= ;i++)
{
for(int j = ;j <= n;j++)
{
fa[j][i] = fa[fa[j][i-]][i-];
}
}
while(q--)
{
int x,y,z;
cin >> x >> y >> z;
int ans1 = f(x,y,z);
int ans2 = f(y,x,z);
int ans3 = f(z,x,y);
cout << max(ans1,max(ans2,ans3)) << endl;
}
return ;
}
Codeforces_832的更多相关文章
随机推荐
- C#操作注册表(简单方便,兼容X32和X64)
C#操作注册表(简单方便,兼容X32和X64) 大家好,我在这里给大家介绍本人实现的操作注册表的类,简单方便,兼容32位系统和64位系统. 一般大家用C#操作注册的方法是使用命名空间Microsoft ...
- 使用百度NLP接口对搜狐新闻做分类
一.简介 本文主要是要利用百度提供的NLP接口对搜狐的新闻做分类,百度对NLP接口有提供免费的额度可以拿来练习,主要是利用了NLP里面有个文章分类的功能,可以顺便测试看看百度NLP分类做的准不准.详细 ...
- oop(面向对象语言的三大特征):封装,继承,多态; (抽象),函数绑定
封装/隐藏 : 通过类的访问限定符实现的 private public 继承的意义之一:代码的复用 类的继承是指在一个现有类的基础上去构建一个新的类,构造出来的新类被称为派生类(子类),现有 ...
- hdfs/hbase 程序利用Kerberos认证超过ticket_lifetime期限后异常
问题描述 业务需要一个长期运行的程序,将上传的文件存放至HDFS,程序启动后,刚开始一切正常,执行一段时间(一般是一天,有的现场是三天),就会出现认证错误,用的JDK是1.8,hadoop-clien ...
- CTPN训练自己的数据集过程大白话记录
一.算法理解 此处省略1万字.............. 二.训练及源码理解 配置以下3步: 在utils文件夹和utils\bbox文件夹下创建__init__.py文件 在utils\bbox文件 ...
- 超级火的java自学网站
学靠的是毅力和自律,一定要坚持,否则就会前功尽弃,我自己也一直在边学边工作,当然自学要配合好的学习资料. 我是通过这个地方去学习的,它可以添加学习计划,从java基础到高级,从后台到前端,从细节到框架 ...
- 【C_Language】---C语言const用法总结
C语言关键字const相信对于不少C语言新手是既陌生又熟悉的,好像经常见,但是却不知道为何用,怎么用?学习至此,总结一下const的用法,使用程序来帮助你理解该关键字,希望能帮到像我一样的新手. 我看 ...
- dp - 逆序数序列
对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的 数列,可以很容易求出有多少个逆序对数.那么逆序对数为k的这样自然数数 ...
- Windows10内嵌Ubuntu子系统初始化设置
第一次启动 重启ubuntu Since Windows 10 version 1803, closing all WSL terminal windows won't kill background ...
- JavaScript(1)---绑定事件、解除绑定事件
JavaScript(1)---绑定事件.解除绑定事件 一.事件概述 1.事件的几个概念 · 事件 指的是文档或者浏览器窗口中发生的一些特定交互瞬间.我们可以通过侦听器(或者处理程序)来预定事件,以便 ...