当前位置: 首页 > news >正文

Neowise Labs Contest 1 (Codeforces Round 1018, Div. 1 + Div. 2)

AB 略

C

当同一行中相邻的数相等,我们改变列。同一列中相邻的数相等,我们改变行。行和列是相互隔绝的,我们分开考虑。不妨先考虑同一列的相等。用动规,阶段是行,状态是列。相邻的两个数存在三种情况:相等,相差1 -1。f[i][0/1]表现前i行的最小花费,第i行是否+1。我们结合三种情况转移即可。

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+10;
int T,n,a[1010],b[1010],h[1010][1010],f1[1010][2],f2[1010][2];
void init()
{for(int i=1;i<=n;i++)f1[i][0]=f1[i][1]=f2[i][0]=f2[i][1]=0x3f3f3f3f3f3f;
}
void solve()
{cin>>n;init();for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>h[i][j];for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)cin>>b[i];for(int i=1;i<=n;i++){int flag=0,ok=0,pd=0;for(int j=1;j<=n;j++){if(h[i][j]==h[i-1][j]) flag=1;if(h[i][j]+1==h[i-1][j]) ok=1;if(h[i][j]-1==h[i-1][j]&&i!=1) pd=1;}if(flag&&ok){if(!pd) f1[i][0]=f1[i-1][1];}if(flag&&!ok){f1[i][1]=f1[i-1][0]+a[i];if(!pd) f1[i][0]=f1[i-1][1];}if(!flag&&ok){f1[i][1]=f1[i-1][1]+a[i];f1[i][0]=f1[i-1][0];if(!pd) f1[i][0]=min(f1[i][0],f1[i-1][1]);}if(!flag&&!ok){f1[i][1]=min(f1[i-1][1],f1[i-1][0])+a[i];f1[i][0]=f1[i-1][0];if(!pd) f1[i][0]=min(f1[i][0],f1[i-1][1]);}}for(int j=1;j<=n;j++){int flag=0,ok=0,pd=0;for(int i=1;i<=n;i++){if(h[i][j]==h[i][j-1]) flag=1;if(h[i][j]+1==h[i][j-1]) ok=1;if(h[i][j]-1==h[i][j-1]&&j!=1) pd=1;}if(flag&&ok){if(!pd) f2[j][0]=f2[j-1][1];}if(flag&&!ok){f2[j][1]=f2[j-1][0]+b[j];if(!pd) f2[j][0]=f2[j-1][1];}if(!flag&&ok){f2[j][1]=f2[j-1][1]+b[j];f2[j][0]=f2[j-1][0];if(!pd) f2[j][0]=min(f2[j][0],f2[j-1][1]);}if(!flag&&!ok){f2[j][1]=min(f2[j-1][1],f2[j-1][0])+b[j];f2[j][0]=f2[j-1][0];if(!pd) f2[j][0]=min(f2[j][0],f2[j-1][1]);}}if(min(f1[n][0],f1[n][1])+min(f2[n][0],f2[n][1])>2e12) cout<<-1<<endl;else cout<<min(f1[n][0],f1[n][1])+min(f2[n][0],f2[n][1])<<endl;
}
signed main()
{std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>T;while(T--) solve();
}

D

如果不考虑开始亮着的灯,那么每列的亮灯都是偶数个,考虑开始的灯,那么哪一列亮灯是奇数,宝藏就在哪列。如果不考虑开始亮着的灯,那么从左上到右下斜线的亮灯都是偶数个,考虑开始的灯,那么哪一斜线亮灯是奇数,宝藏就在哪列斜线由此推出横坐标。

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+10;
int T,n,s,t;
void init()
{
}
void solve()
{cin>>n;init();map<int,int> mp,mpp;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;mp[x]++;mpp[x+y]++;}for(auto&& [i,j]: mp){if(j&1) {s=i; break;}}for(auto&& [i,j]: mpp){if(j&1) {t=i-s; break;}}cout<<s<<" "<<t<<endl;
}
signed main()
{std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>T;while(T--) solve();
}

相关文章:

  • 前端权限管理
  • C语言学习之结构体
  • 《代码整洁之道》第9章 单元测试 - 笔记
  • 《代码整洁之道》第5章 格式 - 笔记
  • MRI学习笔记-conjunction analysis
  • docker(3) -- 图形界面
  • 驱动开发硬核特训 · Day 22(下篇): # 深入理解 Power-domain 框架:概念、功能与完整代码剖析
  • 《操作系统真象还原》第十章(1)——输入输出系统
  • 加密算法 AES、RSA、MD5、SM2 的对比分析与案例(AI)
  • 「Docker已死?」:基于Wasm容器的新型交付体系如何颠覆十二因素应用宣言
  • 2025.4.21-2025.4.26学习周报
  • 泰迪杯实战案例超深度解析:基于YOLOv5的农田害虫图像识别系统设计
  • 「Mac畅玩AIGC与多模态04」开发篇01 - 创建第一个 LLM 对话应用
  • 迷你世界UGC3.0脚本Wiki组件事件管理
  • 显存在哪里看 分享查看及优化方法
  • 分布式一致性算法起源思考与应用
  • 从“世界工厂”到“智造之都”:双运放如何改写东莞产业基因?
  • 云原生--核心组件-容器篇-5-Docker核心之-容器
  • 大模型、知识图谱和强化学习三者的结合,可以形成哪些研究方向?
  • 给视频自动打字幕:从Humanoid-X、UH-1到首个人形VLA Humanoid-VLA:迈向整合第一人称视角的通用人形控制
  • 阿联酋启动第三届全球航空奖评选,奖金总额达百万美元
  • 2025全球智慧城市指数排名揭晓,阿布扎比跃升至第五位
  • 牛市早报|特朗普称或将“大幅降低”对华关税,外交部回应
  • 《哪吒2》票房已达157亿,光线传媒一季度净利增至20亿元
  • 大学2025丨本科专业大调整,教育专家:化解就业难背后供需错配
  • 李家超率团访问浙江