丽泽普及2022交流赛day19 半社论
No Problem
暴力
Str
存在循环节,大力找出来即可,长度显然不超过 \(10^3\) .
Not TSP
题面
TSP 问题,但是游览第 \(u\) 个点要满足下列条件之一
- \(1\dots u-1\) 均被游览过 .
- \(1\dots u-1\) 均未被游览过 .
题解
肯定是先往左跳然后往右填 .
dp 一下就好了 .
\(dp_{i,j}\) 表示 \(i\) 跳到 \(j\) .
代码
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
template<typename T>
inline int chkmin(T& a, const T& b){if (a > b) a = b; return a;}
template<typename T>
inline int chkmax(T& a, const T& b){if (a < b) a = b; return a;}
const int N = 1555;
const ll INF = 0x3f3f3f3f3f3f3f3fll;
ll n, d[N][N], dp[N][N], s[N], pre[N];
inline ll gg(int l, int r){return max(0ll, s[r-1] - s[l-1]);}
int main()
{
scanf("%lld", &n);
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++) scanf("%lld", d[i]+j);
for (int i=1; i<=n; i++) s[i] = s[i-1] + d[i-1][i];
for (int i=0; i<=n; i++){dp[0][i] = s[i]; d[0][i] = d[1][i];}
for (int i=2; i<=n; i++)
{
for (int j=0; j<i-1; j++) dp[j][i] = dp[j][j+1] + s[i] - s[j+1];
dp[i-1][i] = INF;
for (int j=0; j<i-1; j++) chkmin(dp[i-1][i], dp[j][i-1] + d[j][i]);
}
ll ans = INF;
for (int i=1; i<n; i++) chkmin(ans, dp[i][n]);
printf("%lld\n", ans);
return 0;
}
Game
题面
Alice 和 Bob 在做游戏 .
平面上有 \(n\) 个点,Alice 先手,每次每个人需要画一条平行于 \(x\) 或 \(y\) 轴的一条直线,穿过前一条直线穿过的某个点 . 不能画与之前直线重合的直线 . 不能操作的人输 .
问谁必胜 .
题解
如果有一个点 \(x,y\),就连一条边 \(x\to y\),这相当于是两条直线在转移 .
于是问题就等价于 Alice 和 Bob 在这张图上走,走过的点不能再走 .
然而我们把 \(x,y\) 取出来,会发现这玩意其实是一个二分图 .
这个有一个结论:后手必胜当且仅当图有完备匹配 .
证明:
如果有匹配:Alice 每动一步 Bob 就跑去它的匹配点,这样最后 Alice 就无路可走了 .
若不然:Alice 选一个不在匹配中的点,Bob 会选一个在匹配中的点,这样 Alice 就可以用上面的策略取胜了 .
代码
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
template<typename T>
inline int chkmin(T& a, const T& b){if (a > b) a = b; return a;}
template<typename T>
inline int chkmax(T& a, const T& b){if (a < b) a = b; return a;}
const int N = 1555;
template<typename T>
struct pool
{
unordered_map<T, unsigned> pol;
unsigned cc = 0;
unsigned get(T x)
{
auto ptr = pol.find(x);
if (ptr == pol.end()){pol[x] = ++cc; return cc;}
else return ptr -> second;
}
};
pool<int> T;
int n, vis[N], L[N], R[N];
vector<int> g[N];
set<int> vx, vy;
inline void addedge(int u, int v){g[u].emplace_back(v);}
bool dfs(int u, int t)
{
if (vis[u] == t) return false;
vis[u] = t;
for (int v : g[u])
if (!L[v] || dfs(L[v], t)){L[v] = u; R[u] = v; return true;}
return false;
}
inline void match(){for (int i=1; i<=n; i++) dfs(i, i);}
int main()
{
scanf("%d", &n);
for (int i=1, x, y; i<=n; i++)
{
scanf("%d%d", &x, &y);
x = T.get(x); y = T.get(y);
vx.insert(x); vy.insert(y);
addedge(x, y);
}
if (vx.size() != vy.size()){puts("Alice"); return 0;}
match();
for (int i : vx) if (!R[i]){puts("Alice"); return 0;}
for (int i : vy) if (!L[i]){puts("Alice"); return 0;}
puts("Bob");
return 0;
}
丽泽普及2022交流赛day19 半社论的更多相关文章
- 丽泽普及2022交流赛day22 无社论
开始掉分模式 . T3 有人上费用流了???(id) 不用 TOC 了 . T1 暴力 T2 没看见 任意两圆不相交,gg 包含关系容易维护,特判相切 . 单调栈即可 T3 贪心 T4 神秘题
- 丽泽普及2022交流赛day20 1/4社论
目录 T1 正方形 T2 玩蛇 T3 嗷呜 T4 开车 T1 正方形 略 T2 玩蛇 略 T3 嗷呜 (插一个删一个?) 找出相同的,丢掉循环节 . 感觉非常离谱,,, 正确性存疑 正确性问 SoyT ...
- 丽泽普及2022交流赛day15 社论
前言 link 太牛逼了,补完我一定放代码 . orz 越看越牛逼 orz . 时间复杂度都是口胡,不要信 . 以下是目录 目录 目录 前言 A 题面 题解 代码 B 题面 题解 代码 C 题面 题解 ...
- 丽泽普及2022交流赛day21 社论
A 暴力 . greater<double> -> greater<int> \(100\) -> \(50\) 代码丢了 . B dp . 考场上代码抢救一下就过 ...
- 丽泽普及2022交流赛day18 社论
A 暴力扫一遍 B 算法 0 似乎是二分 算法 1 随便贪心 C 算法 1 枚举一个点作为最大值 / 最小值,用单调栈维护其作为答案的左右端点即可轻易计算 . 时间复杂度 \(O(n)\) . 算法 ...
- 丽泽普及2022交流赛day17 社论
http://zhengruioi.com/contest/1088 SoyTony 重新 rk1 . stO SoyTony Orz 省流:俩计数 . 目录 目录 A 题面 题解 Key 算法 1( ...
- 丽泽普及2022交流赛day16 社论
这场比较平凡吧 . 省流: http://zhengruioi.com/contest/1087 目录 目录 A. Gene 题面 题解 算法一(正解) 算法二 B. Fight 题面 题解 算法一( ...
- 丽泽普及2022交流赛day14
目录 A 题面 题解 B 题面 题解 C 题面 题解 D 题面 题解 A 题面 一个 \(1\dots n\) 的排列 \(p\) 和一个 \(1\dots n-1\) 的排列 \(q\) 满足 对排 ...
- 青岛理工ACM交流赛 J题 数格子算面积
数格子算面积 Time Limit: 1000MS Memory limit: 262144K 题目描述 给你一个多边形(用’\’和’/’表示多边形的边),求多边形的面积. 输入 第一行两个正整数h ...
随机推荐
- 图解KMP字符串匹配算法+代码实现
kmp算法跟之前讲的bm算法思想有一定的相似性.之前提到过,bm算法中有个好后缀的概念,而在kmp中有个好前缀的概念,什么是好前缀,我们先来看下面这个例子. 观察上面这个例子,已经匹配的abcde称为 ...
- css修改文子背景浮动
伪元素选择器 """通过css操作文本内容""" 1.修改首个字体样式 p:first-letter{ color: blue; font- ...
- Typora详细教程以及下载
发现一篇非常不错的 Typora 教程,分享给大家. 原文链接:https://www.cnblogs.com/hyacinthLJP/p/16123932.html 作者:MElephant T ...
- bare Git 仓库是什么?
背景 今天,坐我旁边的同事问我一些关于服务器上命令的问题.其中有一个用了特殊参数的 git init 的命令,我也不认识,遂去 Google... bare Git 仓库 定义 A bare Git ...
- 阿里云FTP服务配置
阿里云的CENTOS 7.4 并没有开启防火墙服务 所以好多人配置了FTP后会出现各种不能访问的问题 关键原因在于端口没有开放.设置端口阿里云ECS的管理控制台中"安全组" &qu ...
- VBA驱动SAP GUI实现办公自动化(一)
小爬之前写过一系列Python驱动SAP GUI实现办公自动化的文章,其实如果我们的实际业务不是太复杂,且我们对VBA语法比较熟悉的话,我们完全可以借助Excel VBA来驱动SAP GUI做很多自动 ...
- 技术分享 | app测试中常用的Android模拟器
原文链接 Emulator Emualor 是 Android Studio 自带的模拟器,是官方提供的工具,Android 开发最常使用的就是这一款. 它功能非常齐全,电话本.通话等功能都可正常使用 ...
- C语言学习之我见-strlen()字符串长度函数
strlen()函数,负责给出字符串的长度.注意是字符串的长度,不是字符数组的长度. (1)函数原型: size_t __cdecl strlen(const char *_Str); (2)头文件` ...
- 论文解读(KP-GNN)《How Powerful are K-hop Message Passing Graph Neural Networks》
论文信息 论文标题:How Powerful are K-hop Message Passing Graph Neural Networks论文作者:Jiarui Feng, Yixin Chen, ...
- 关于使用 koa路由与mysql模块, ctx.body获取不到值的问题
var Koa = require('koa');var Router = require('koa-router' );var bodyParser = require('koa-bodyparse ...