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

    lwip2.0.2 netbuf_new——分配netbuf结构体的内存. netbuf_alloc,分配netbuf中pbuf内存(pbuf_alloc中PBUF_RAM类型,包括pbuf结构体和p ...

  2. IIS停止服务 报错Connections_Refused

    IIS版本6.0  无故停止工作.         重启IIS 没有效果,必须重启web服务器.出现客户端无法访问Web服务器上的站点,错误信息提示为"页面无法显示"的情况.登录服 ...

  3. awk sed 命令

    awk awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行的读入,以 空格或TAB 为默认分隔符 将每行 ...

  4. centos7.5下yum安装php-5.6.40(LNMP环境)

    cd /etc/yum.repos.d/ yum -y install epel-release #<===安装centos7下php5.6的epel和remi源 rpm -ivh http:/ ...

  5. pymongo(看后转载,在原基础上添加了类连接和简单调用)

    一.MongoDB 数据库操作 1. 连接数据库 import pymongo conn = pymongo.Connection() # 连接本机数据库 # conn = pymongo.Conne ...

  6. 【2020】DBus,一个更能满足企业需求的大数据采集平台

    功能远超Sqoop.DataX.Flume.Logatash.Filebeat等采集工具 注:由于文章篇幅有限,完整文档可扫免费获取 深知其他组件的局限性,才能彰显DBus的优越感 当前有很多数据采集 ...

  7. 标准 I/O 和管道

    1.标准输入和输出1>程序:指令+数据(指令服务于数据) 读入数据:input 输出数据:output 2>三种 I/O 设备 Linux 给程序提供三种 I/O 设备 标准输入(STDI ...

  8. DFA与NFA的等价性,DFA化简

    等价性 对于每个NFA M存在一个DFA M',使得L(M)=L(M')--------等价性证明,NFA的确定化 假定NFA M=<S, Σ, δ, S 0 , F>,我们对M的状态转换 ...

  9. 插入数据失败提示: Setting autocommit to false on JDBC Connection 自动提交失败

    来源:https://blog.csdn.net/qq_42799475/article/details/102742109 今天在执行mybstis的测试时,明明已经写好了插入语句但是数据库没有插入 ...

  10. List泛型

    .Net自从2.0以后开始支持泛型. 泛型的作用:可以创建独立于被包含类型的类和方法.泛型类使用泛型类型,并可以根据需要使用特定的类型替换泛型类型.这就保证了类型安全性:如果某个类型不支持泛型类,编译 ...