BuaacodingT141 microhhh的回城 题解(模拟)
题目链接
解题思路
这题挺有意思的。本来寻思放在\(DS\)第一次练习赛应该不会很难吧,结果愣是卡在数据范围上写不出来。
然后暴力过掉了,但是用了\(1019ms\)。感觉可以继续优化。(放一下暴力代码,不解释了)
#include<stdio.h>
#include<string.h>
int n,m;
char map[10010][10010];//char防止卡空间
int main(){
	int i,T,j,x,c,b,l,k;
	scanf("%d",&T);
	for(k=1;k<=T;k++){
		printf("Case %d #:",k);
		memset(map,0,sizeof(map));
		scanf("%d%d%d",&n,&m,&l);
		for(i=0;i<m;i++){
			scanf("%d%d",&c,&b);
			map[c][b]=1;
			map[c+1][b]=2;
		}
		for(i=0;i<n;i++){
			x=i;
			for(j=1;j<=l;j++){
				if(map[x][j]==1)x++;
				else if(map[x][j])x--;
			}
			printf(" %d",x);
		}
		printf("\n");
	}
	return 0;
}
又在想如果在暴力模拟的时候记录一下每列的头结点,可以进行二分查找,复杂度会下来一个\(logn\)。
码量略大,不过优化了不少。代码这里就不放了。
然后突然想到其实这就是一个交换终点的问题。从下面向上每一条边都对应一次终点的交换,去掉重边即可。\(7msAC\)。
AC代码
#include<cstdio>
#include<algorithm>
int n,m,l;
struct Path{
	int c,k;
	bool operator<(const Path&b)const{return k>b.k||(k==b.k&&c<b.c);}
}e[100010];
int pre[10010],end[10010],T,i,j,p,q,t;
int main(){
	scanf("%d",&T);
	for(j=1;j<=T;j++){
		scanf("%d%d%d",&n,&m,&l);
		for(i=0;i<m;i++)scanf("%d%d",&e[i].c,&e[i].k);
		std::sort(e,m+e);
		for(i=0;i<n;i++)pre[i]=i;
		for(i=0;i<m;i++){
			p=e[i].c,q=p+1;
			if(i&&e[i].c==e[i-1].c&&e[i].k==e[i-1].k);//去重
			else t=pre[p],pre[p]=pre[q],pre[q]=t;
		}
		printf("Case %d #:",j);
		for(i=0;i<n;i++)printf(" %d",pre[i]);
		putchar('\n');
	}
	return 0;
}
												
											BuaacodingT141 microhhh的回城 题解(模拟)的更多相关文章
- Blocked Billboard II题解--模拟到崩溃的模拟
		
前言 比赛真的状态不好(腐了一小会),导致差点爆0. 这个题解真的是在非常非常专注下写出来的,要不然真的心态崩. 题目 题目描述 奶牛Bassie想要覆盖一大块广告牌,她在之前已经覆盖了一小部分广告牌 ...
 - PAT甲级1017题解——模拟排序
		
题目分析: 本题我第一次尝试去做的时候用的是优先队列,但是效率不仅代码量很大,而且还有测试样例过不去,很显然没有找到一个好的数据结构来解决这道题目(随着逐渐的刷PAT甲级的题会发现有时选择一个好的解题 ...
 - 洛谷P5020 货币系统 题解 模拟
		
题目链接:https://www.luogu.org/problem/P5020 这道题目是一道模拟题,但是又有一点多重背包的思想在里面. 首先我们定义一个 vis[i] 来表示和为 i 的情况在之前 ...
 - 洛谷P5019 铺设道路 题解 模拟/贪心基础题
		
题目链接:https://www.luogu.org/problemnew/show/P5019 这道题目是一道模拟题,但是它有一点贪心的思想. 我们假设当前最大的深度是 \(d\) ,那么我们需要把 ...
 - CF1B.Spreadsheets(电子表格) 题解 模拟
		
作者:zifeiy 标签:模拟 题目出处:Spreadsheets 题目描述 在流行的电子表格系统中(例如,在Excel中),使用如下计算方式来对列号进行计算. 第1列对应A,第2列对应B,--,第2 ...
 - 洛谷 P2482 loj #2885 [SDOI2010]猪国杀 题解【模拟】【贪心】【搜索】
		
好玩的模拟题. 以后要经常写模拟题鸭 题目描述 游戏背景 <猪国杀>是一种多猪牌类回合制游戏,一共有\(3\)种角色:主猪,忠猪,反猪.每局游戏主猪有且只有\(1\)只,忠猪和反猪可以有多 ...
 - Codeforces Round #271 (Div. 2)题解【ABCDEF】
		
Codeforces Round #271 (Div. 2) A - Keyboard 题意 给你一个字符串,问你这个字符串在键盘的位置往左边挪一位,或者往右边挪一位字符,这个字符串是什么样子 题解 ...
 - Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) A B C D 水 模拟 并查集 优先队列
		
A. Broken Clock time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
 - 【bzoj1150】[CTSC2007]数据备份Backup  模拟费用流+链表+堆
		
题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏 ...
 
随机推荐
- VSCode VUE常用配置
			
{ // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detectIndentation": false, // 重新设定tabsi ...
 - Linux 驱动框架---i2c驱动框架
			
i2c驱动在Linux通过一个周的学习后发现i2c总线的驱动框架还是和Linux整体的驱动框架是相同的,思想并不特殊比较复杂的内容如i2c核心的内容都是内核驱动框架实现完成的,今天我们暂时只分析驱动开 ...
 - μC/OS-III---I笔记5---多值信号量
			
多值信号量 操作系统中利用信号量解决进程间的同步和互斥(互斥信号量)的问题,在多道程序环境下,操作系统如何实现进程之间的同步和互斥显得极为重要.比如对同一部分资源的访问是要互斥,不能在另一个进程A在访 ...
 - vue 自动注册全局组件
			
vue 自动注册全局组件 vue 注册全局组件的方式 const plugins = { install(Vue) { const requireComponent = require.context ...
 - Dart SDK All In One
			
Dart SDK All In One Dart SDK archive https://dart.dev/tools/sdk/archive https://dart.dev/get-dart Th ...
 - Koa & node.js
			
KOA https://github.com/koajs/koa https://koajs.com/ $ nvm install 7 # node.js 7 + $ nvm install 10 $ ...
 - CSS3 & Flex Layout All In One
			
CSS3 & Flex Layout All In One demos https://www.cnblogs.com/xgqfrms/p/10769302.html .flex-contai ...
 - 为什么10月上线的NGK Global即将燎原资本市场
			
近日据社区透露,NGK Global将在10月全面启动,数据公开透明,人人可以参与运营监管. 现在,区块链经济已经处于爆发前夜.金融行业的探索领先一筹,而其他行业的应用正在快速展开.区块链行业应用头部 ...
 - 【PY从0到1】 一文掌握Pandas量化进阶
			
# 一文掌握Pandas量化进阶 # 这节课学习Pandas更深的内容. # 导入库: import numpy as np import pandas as pd # 制作DataFrame np. ...
 - 【重榜?】.NET 6 Preview 1 开箱上手!带你尝试新版本更新!
			
目录 跨平台 UI 应用 Blazor 桌面应用 System.CommandLine 其它更新 ASP.NET Core 最近 .NET 6 Preview 1 发布了,.NET 统一是此版本的核心 ...