清华集训2014 day2 task3 矩阵变换
题目
算法 稳定婚姻系统(其实就是贪心)
一个方案不合法,当且仅当下面这种情况:
设第\(i\)行选了数字\(x\),如果第\(j\)行有一个\(x\)在第\(i\)行的\(x\)后面,并且第\(j\)行所选的数字在第\(j\)行的\(x\)后面。
分析到这里就是典型的稳定婚姻系统了。
代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <assert.h>
using namespace std;
#ifdef debug
#define ep(...) fprintf(stderr, __VA_ARGS__)
#else
#define ep(...) assert(true)
#endif
template <class T>
void relax(T &a, const T &b)
{
if (b > a) a = b;
}
template <class T>
void tension(T &a, const T &b)
{
if (b < a) a = b;
}
int geti()
{
int ret = 0;
char ch = getchar();
while (ch < '0' || ch > '9') ch = getchar();
do
{
ret = ret * 10 + (int) ch - 48;
ch = getchar();
}while (ch >= '0' && ch <= '9');
return ret;
}
const int MaxN = 203;
const int MaxM = 403;
int n, m;
int A[MaxN][MaxM];
void output(const int *x)
{
ep("answer ");
for (int i = 0; i < n; i ++)
{
printf("%d ", x[i]);
ep("%d ", x[i]);
}
printf("\n");
ep("\n");
}
void output_nosolution()
{
ep("no solution\n");
printf("\\\n");
}
int posi[MaxN][MaxN];
int choice[MaxN];
void next_choice(const int &i)
{
int &tmp = choice[i];
tmp ++;
while (tmp < m && A[i][tmp] == 0)
tmp ++;
if (tmp >= m) tmp = -1;
}
void Main()
{
n = geti();
m = geti();
for (int i = 0; i < n; i ++)
for (int j = 0; j < m; j ++)
{
A[i][j] = geti();
if (A[i][j])
posi[i][ A[i][j] ] = j;
}
{
for (int i = 0; i < n; i ++)
{
choice[i] = -1;
next_choice(i);
}
static int row_love[MaxN], num_love[MaxN];
for (int i = 0; i < n; i ++)
row_love[i] = num_love[i + 1] = -1;
int cnt = 0;
while (cnt < n)
{
for (int i = 0; i < n; i ++)
{
if (row_love[i] == -1)
{
int num = A[i][choice[i]];
assert(num != -1);
next_choice(i);
if (num_love[num] == -1)
{
cnt ++;
row_love[i] = num;
num_love[num] = i;
}
else if (posi[i][num] > posi[ num_love[num] ][num])
{
row_love[num_love[num]] = -1;
row_love[i] = num;
num_love[num] = i;
}
}
}
}
output(row_love);
}
}
int main()
{
#if defined(debug) || defined(local)
freopen("c.in", "r", stdin);
freopen("c.out", "w", stdout);
#endif
int cases = geti();
for (int i = 0; i < cases; i ++)
Main();
return 0;
}
清华集训2014 day2 task3 矩阵变换的更多相关文章
- 清华集训2014 day2 task1 简单回路
题目 如题. 算法 就是刚学习的插头DP. 从前往后和从后往前分别进行一次DP. 要点 合法的括号序列只有103个 如何合并两次dp的信息 一开始犯傻了,以为当且仅当两个轮廓线的状态相同才是合法的方案 ...
- 清华集训2014 day1 task3 奇数国
题目 题目看起来好像很难的样子!其实不然,这是最简单的一道题. 算法 首先要注意的是: \(number \cdot x + product \cdot y = 1\) ,那么我们称\(number\ ...
- uoj 41 【清华集训2014】矩阵变换 婚姻稳定问题
[清华集训2014]矩阵变换 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/41 Description 给出 ...
- AC日记——【清华集训2014】奇数国 uoj 38
#38. [清华集训2014]奇数国 思路: 题目中的number与product不想冲: 即为number与product互素: 所以,求phi(product)即可: 除一个数等同于在模的意义下乘 ...
- UOJ#46. 【清华集训2014】玄学
传送门 分析 清华集训真的不是人做的啊嘤嘤嘤 我们可以考虑按操作时间把每个操作存进线段树里 如果现在点x正好使一个整块区间的右端点则更新代表这个区间的点 我们不难发现一个区间会因为不同的操作被分成若干 ...
- 清华集训2014 sum
清华集训2014sum 求\[∑_{i=1}^{n}(-1)^{⌊i√r⌋}\] 多组询问,\(n\leq 10^9,t\leq 10^4, r\leq 10^4\). 吼题解啊 具体已经讲得很详细了 ...
- [BZOJ3816][清华集训2014]矩阵变换(稳定婚姻问题)
3816: 矩阵变换 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 803 Solved: 578[Submit][Status][Discuss] ...
- [UOJ 41]【清华集训2014】矩阵变换
Description 给出一个 $N$ 行 $M$ 列的矩阵A, 保证满足以下性质: $M > N$. 矩阵中每个数都是 $[0, N]$ 中的自然数. 每行中, $[1, N]$ 中每个自然 ...
- UOJ#41. 【清华集训2014】矩阵变换 构造
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ41.html 题解 首先写个乱搞: 一开始每一行都选择第一个非0元素,然后,我们对这个方案不断做更新,直到 ...
随机推荐
- Oracle递归sql笔记
查询一个机构下所辖机构: select * from t00_organ t start with t.organkey=#uporgankey# connect by prior t.organke ...
- 【原】spring boot在整合项目依赖的问题
最近要开发新的项目,就花了几天时间看了下spring boot的相关资料,然后做了一个demo,不得不说开发效率确实很快,几行注解就完成了事务,aop,数据库等相关配置:但由于先前习惯了spring ...
- ansible模块
ansible模块: 模块(Modules),类似于 "任务插件"("task plugins")或"库插件"("library ...
- HTML5 DTD
HTML5/HTML 4.01/XHTML 元素和有效的 DTD 下面的表格列出了所有的 HTML5/HTML 4.01/XHTML 元素,以及它们会出现在什么文档类型 (DTD) 中: 标签 HTM ...
- Android 开发笔记 “SQLite”
SQLite 入门与分析 1.SQLite介绍 自几十年前出现的商业应用程序以来,数据库就成为软件应用程序的主要组成部分.正与数据库管理系统非常关键一样,它们也变得非常庞大,并占用了相当多的系统资源, ...
- win64位 apache2.4 php5.4 mysql5.6
apache2.4 php5.4 mysql5.6 源文件下载 +以前的配置数据参考 链接:http://pan.baidu.com/s/1skfmGyT 密码:hqtp 比较好的参考资料 http: ...
- LNMP安装包sh脚本
Xshell 5 (Build 0719) Copyright (c) 2002-2015 NetSarang Computer, Inc. All rights reserved. Type `he ...
- PHP学习笔记14-操作session
PHP会话管理图: 创建index: <?php /** * Created by PhpStorm. * User: Administrator * Date: 2015/7/2 * Time ...
- web.py入门
官网介绍: web.py is a web framework for Python that is as simple as it is powerful. web.py is in the pub ...
- PROPAGATION_REQUIRED
PROPAGATION_REQUIRED (2009-05-13 13:26:52) 转载▼ 事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传 ...