A. Two Rabbits (手速题)

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int t;
cin>>t;
while(t--){
ll x,y,a,b;
cin>>x>>y>>a>>b;
ll sum = a+b;
if((y-x)%sum == ){
cout<<(y-x)/sum<<endl;
}
else{
cout<<-<<endl;
}
}
return ;
}

B. Longest Palindrome (模拟 枚举)

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int n,m;
cin>>n>>m;
vector<string> v;
bool vis[n];
memset(vis,,sizeof(vis));
for(int i = ;i<n;i++){
string s;
cin>>s;
v.push_back(s);
}
bool flag = false;
string mid = "",ans = "";
for(int i = ;i<n;i++){
string t = v[i];
reverse(t.begin(),t.end());
if(!flag && t == v[i]) {
flag = true;
mid = v[i];
continue;
}
if(flag && t == v[i]) continue;
for(int j = ;j<n;j++){
if(v[j] == t && vis[j] == ){
ans+=v[i];
vis[i] = vis[j] = ;
break;
}
}
}
string t = ans;
reverse(t.begin(),t.end());
ans+=mid,ans+=t;
if(ans.length() == ){
cout<<;return ;
}
cout<<ans.length()<<endl;
cout<<ans;
return ;
}

C. Air Conditioner (模拟 区间覆盖)

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = ;
struct node{
ll t,l,h;
ll l1,r;
bool operator < (node &x)const {
return t<x.t;
}
}c[maxn];
int main(){
int q;
cin>>q;
while(q--){
ll n,m;
cin>>n>>m;
for(int i = ;i<=n;i++){
cin>>c[i].t>>c[i].l>>c[i].h ;
}
sort(c+,c++n);
c[].r = c[].l1 = m;
bool flag = true;
for(int i = ;i<=n;i++){
ll d = c[i].t - c[i-].t;
ll R = c[i-].r + d;
ll L = c[i-].l1 - d;
if(L>c[i].h || R< c[i].l){
flag = false;
// cout<<"De"<<i<<endl;
break;
}
c[i].r = min(R,c[i].h);
c[i].l1 = max(L,c[i].l);
}
if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return ;
}

D. Shortest and Longest LIS(贪心 构造)

 #include<bits/stdc++.h>
using namespace std;
void solve(){
int n;
string s;
cin>>n;
cin>>s;
int Min[n];
int t = n;
for(int i = ;i<s.length();i++){
int len = ,indx = i;
if(s[i] == '<'){
while(s[i]=='<'){
len++;
i++;
}
}
for(int j = i;j>=i-len;j--){
Min[j] = t,t--;
}
}
if(t) Min[n-] = t;
t = ;
int Max[n];
for(int i = ;i<s.length();i++){
int len = ,indx = i;
if(s[i] == '>'){
while(s[i]=='>'){
len++;
i++;
}
}
for(int j = i;j>=i-len;j--){
Max[j] = t,t++;
}
}
if(t == n) Max[n-] = t;
for(int i = ;i<n;i++) cout<<Min[i]<<" ";
cout<<endl;
for(int i = ;i<n;i++) cout<<Max[i]<<" ";
cout<<endl;
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
return ;
}

E. 1-Trees and Queries (最近公共祖先)

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxbit = ;
const int maxn = 1e5+;
vector<int> G[maxn];
int depth[maxn];
int fa[maxn][maxbit];
int Log[maxn];
int N;
void pre(){
Log[] = -;
Log[] = ,Log[] = ;
for(int i = ;i<maxn;i++) Log[i] = Log[i/] + ;
}
void dfs(int cur,int father){//dfs预处理
depth[cur] = depth[father] + ;//当前结点的深度为父亲结点+1
fa[cur][] = father;//更新当前结点的父亲结点
for(int j = ;(<<j)<=N;j++){//倍增更新当前结点的祖先
fa[cur][j] = fa[fa[cur][j-]][j-];
}
for(int i = ;i<G[cur].size() ;i++){
if(G[cur][i] != father) {//dfs遍历
dfs(G[cur][i],cur);
}
}
}
int LCA(int u,int v){
if(depth[u]<depth[v]) swap(u,v);
int dist = depth[u] - depth[v];//深度差
while(depth[u]!=depth[v]){//把较深的结点u倍增到与v高度相等
u = fa[u][Log[depth[u]-depth[v]]];
}
if(u == v) return u;//如果u倍增到v,说明v是u的LCA
for(int i = Log[depth[u]];i>=;i--){//否则两者同时向上倍增
if(fa[u][i]!=fa[v][i]){//如果向上倍增的祖先不同,说明是可以继续倍增
u = fa[u][i];//替换两个结点
v = fa[v][i];
}
}
return fa[u][];//最终结果为u v向上一层就是LCA
}
int main()
{
pre();
cin>>N;
for(int i = ;i<N;i++){
int u,v;
cin>>u>>v;
G[u].push_back(v),G[v].push_back(u);
}
dfs(,);
int q;cin>>q;
while(q--){
int x,y,a,b,k;
cin>>x>>y>>a>>b>>k;
int t1 = LCA(a,b),t2 = LCA(a,x),t3 = LCA(a,y),t4 = LCA(b,x),t5 = LCA(b,y);
int dis = abs(depth[t1]-depth[a])+abs(depth[t1]-depth[b]);
if(dis% == k% && dis <=k ){
// cout<<"De1"<<endl;
cout<<"YES"<<endl;
continue;
}
int dis1 = abs(depth[t2]-depth[a])+abs(depth[t2]-depth[x]);
int dis2 = abs(depth[t5]-depth[b])+abs(depth[t5]-depth[y]);
if( (dis1+dis2+)% == k% && dis1+dis2+ <= k){
// cout<<"de2"<<endl;
cout<<"YES"<<endl;
continue;
}
dis1 = abs(depth[t3]-depth[a])+abs(depth[t3]-depth[y]);
dis2 = abs(depth[t4]-depth[b])+abs(depth[t4]-depth[x]);
if((dis1+dis2+)% == k% && dis1+dis2+ <= k){
// cout<<"de3"<<endl;
cout<<"YES"<<endl;
continue;
}
cout<<"NO"<<endl;
}
return ;
}

F2. Animal Observation (hard version) (dp 滑动窗口 线段树区间更新最大值查询)

 #include<bits/stdc++.h>
using namespace std;
const int maxn = 4e4+;
int dp[][maxn];
int val[][maxn];
int sum[][maxn];
int n,m,k;
struct node{
int l,r;
int Max,lz;
}seg_t[maxn*];
void build(int l,int r,int p){
seg_t[p].l = l,seg_t[p].r = r;
if(l == r) {
seg_t[p].Max = ;return ;
}
int mid = (l+r)>>;
build(l,mid,p*);
build(mid+,r,p*+);
seg_t[p].Max = max(seg_t[p*].Max ,seg_t[p*+].Max );
}
void pushdown(int k){
seg_t[k*].lz +=seg_t[k].lz ;
seg_t[k*+].lz +=seg_t[k].lz ;
seg_t[k*].Max +=seg_t[k].lz ;
seg_t[k*+].Max +=seg_t[k].lz ;
seg_t[k].lz = ;
}
void upd(int L,int R,int p,int v){
if(seg_t[p].l == L && seg_t[p].r == R){
seg_t[p].lz +=v;
seg_t[p].Max +=v;
return;
}
if(seg_t[p].lz ) pushdown(p);
int mid = (seg_t[p].l + seg_t[p].r )>>;
if(R<=mid) upd(L,R,p*,v);
else if(L>mid) upd(L,R,p*+,v);
else{
upd(L,mid,p*,v);
upd(mid+,R,p*+,v);
}
seg_t[p].Max = max(seg_t[p*].Max ,seg_t[p*+].Max );
}
int query(int p,int L,int R){
if(seg_t[p].l == L && seg_t[p].r == R) return seg_t[p].Max ;
if(seg_t[p].lz ) pushdown(p);
int mid = (seg_t[p].l +seg_t[p].r)>>;
if(R<=mid) return query(p*,L,R);
else if(L>mid) return query(p*+,L,R);
else return max(query(p*,L,mid),query(p*+,mid+,R));
}
int main(){
cin>>n>>m>>k;
for(int i = ;i<=n;i++){
for(int j = ;j<=m;j++) {
cin>>val[i][j];
sum[i][j] = sum[i][j-] + val[i][j];
}
}
for(int i = ;i<=m-k+;i++){
dp[][i] = sum[][i+k-] - sum[][i-]+sum[][i+k-]-sum[][i-];
}
for(int i = ;i<=n;i++){
memset(seg_t,,sizeof(seg_t));
build(,*m,);
for(int j = ;j<=m;j++) upd(j,j,,dp[i-][j]);
for(int j = ;j<=k;j++) upd(,j,,-val[i][j]);
for(int j = ;j<=m-k+;j++){
dp[i][j] = max(dp[i][j],query(,,m)+sum[i][j+k-]-sum[i][j-]+sum[i+][j+k-]-sum[i+][j-]);
upd(max(,j-k+),j,,val[i][j]);
upd(j+,j+k,,-val[i][j+k]);
}
}
int ans = ;
for(int i = ;i<=m;i++) ans = max(ans,dp[n][i]);
cout<<ans;
return ;
}

Codeforces Round #620 (Div. 2) A-F代码 (暂无记录题解)的更多相关文章

  1. Codeforces Round #620 (Div. 2)

    Codeforces Round #620 (Div. 2) A. Two Rabbits 题意 两只兔子相向而跳,一只一次跳距离a,另一只一次跳距离b,每次同时跳,问是否可能到同一位置 题解 每次跳 ...

  2. Codeforces Round #573 (Div. 1) 差F

    Codeforces Round #573 (Div. 1) E 题意:二维平面上有 n 个点,你可以放至多 m 条直线使得 (0,0) 与每个点的连线至少与一条直线相交.求原点与所有直线的距离最小值 ...

  3. Codeforces Round #541 (Div. 2) (A~F)

    目录 Codeforces 1131 A.Sea Battle B.Draw! C.Birthday D.Gourmet choice(拓扑排序) E.String Multiplication(思路 ...

  4. Codeforces Round #532 (Div. 2):F. Ivan and Burgers(贪心+异或基)

    F. Ivan and Burgers 题目链接:https://codeforces.com/contest/1100/problem/F 题意: 给出n个数,然后有多个询问,每次回答询问所给出的区 ...

  5. Codeforces Round #346 (Div. 2) E F

    因为很久没有个人认真做题了 昨天晚上开了场虚拟cf来锻炼个人手速 选的是第一次做cf的场 那时候7出3还被hack...之后也没补题 这次做的时候顺便回忆了一下以前比赛的时候是怎么想的 发现经验还是很 ...

  6. Codeforces Round #600 (Div. 2)E F

    题:https://codeforces.com/contest/1253/problem/E 题意:给定n个信号源,俩个参数x和s,x代表这个信号源的位置,s代表这个信号源的波及长度,即这个信号源可 ...

  7. Codeforces Round #322 (Div. 2) E F

    E. Kojiro and Furrari 题意说的是 在一条直线上 有n个加油站, 每加一单位体积的汽油 可以走1km 然后每个加油站只有一种类型的汽油,汽油的种类有3种 求从起点出发到达终点要求使 ...

  8. Codeforces Round #506 (Div. 3) 1029 F. Multicolored Markers

    CF-1029F 题意: a,b个小正方形构造一个矩形,大小为(a+b),并且要求其中要么a个小正方形是矩形,要么b个小正方形是矩形. 思路: 之前在想要分a,b是否为奇数讨论,后来发现根本不需要.只 ...

  9. Codeforces Round #620 (Div. 2) D

    构造一个排列,要求相邻之间的数满足给定的大小关系,然后构造出两个序列,一个序列是所有可能的序列中LIS最长的,一个所有可能的序列中LIS最短的 最短的构造方法:我们考虑所有单调递增的部分,可以发现要让 ...

随机推荐

  1. pytorch之 RNN classifier

    import torch from torch import nn import torchvision.datasets as dsets import torchvision.transforms ...

  2. FTP的连接方式(防火墙的配置)

         FTP是仅基于TCP的服务,不支持UDP.与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口).通常来说这两个端口是21(命令端口)和20(数据端口).       ...

  3. 分区格式化大于2 TiB磁盘

    如果您要分区格式化一块大于2 TiB的作数据盘用的云盘(本文统一称为 大容量数据盘,小于2 TiB的数据盘统称为 小容量数据盘),您必须采用GPT分区形式.本文档描述了如何在不同的操作系统里分区格式化 ...

  4. 关于ETH/BTC区块的监控

    此次我写的是一个小型的shell, 链接钉钉的机器人, 使用过的应该会比较娴熟的了,下面就简述一下把 主要的功能就是, 当发现本地数据库区块跟网络上的区块差距相差较大的时候就代表, 数据同步有问题, ...

  5. 2000_narrowband to wideband conversion of speech using GMM based transformation

    论文地址:基于GMM的语音窄带到宽带转换 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12151027.html 摘要 在不改变现有通信网络的情 ...

  6. Failed to get convolution algorithm解决

    蒸腾了两天,终于搞定了 是cudnn版本的问题 更新cudnn的时候,首先要删除/usr/local/cuda-10.0/targets/x86_64-linux/lib路径下所有之前cudnn版本的 ...

  7. Hibernate框架预览以及基础介绍

    前言 从本节我们开始进入到对于Hibernate框架的学习,当前Hibernate框架还未正式发布6.0稳定版本,所以这里我们以5.4.12Final版本进行讲解. Hibernate框架 Hiber ...

  8. Android中通过数组资源文件xml与适配器两种方式给ListView列表视图设置数据源

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

  9. idea 工具 听课笔记 首页

    maven 创建 javaWeb站点结构标准及异常权限调整 解决Intellij Idea下修改jsp页面不自动更新(链接 idea中使用github  提交 idea 从github.com上恢复站 ...

  10. Hook 初学习

    Hook 概念 百度上的概念 每个Hook都有一个相关的指针列表,后加入的Hook再链表的开始,先加入的在链表的尾部 即后加入先获得控制权 Hook 原理 原本的流程 graph LR id1(Mes ...