codeforces B. Multitasking 解题报告
题目链接:http://codeforces.com/problemset/problem/384/B
题目意思:给出n个数组,每个数组包括m个数字,当k = 0 时,需要把n个数组都按照从小到大的顺序排列,k = 1则把n个数组里面的数字按照从大到小的顺序排列。
直接模拟即可,不过有个地方注意下是可以减少工作量的,当处理第 i 行的时候,不再需要移动前 i - 1 行的数组下标。因为前 i - 1行的数组都排好序了。
| Time | Memory |
|---|
| 46 ms | 500 KB |
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std; const int maxn = + ;
const int maxm = + ; int a[maxn][maxm];
int ans[][]; int main()
{
int i, j, l, n, m, k, tj, cnt;
while (scanf("%d%d%d", &n, &m, &k) != EOF)
{
for (i = ; i <= n; i++)
{
for (j = ; j <= m; j++)
scanf("%d", &a[i][j]);
}
cnt = ;
for (i = ; i <= n; i++) // n 行
{
for (j = ; j < m; j++) // m 列
{
tj = j;
int tmp = a[i][j];
for (l = j+; l <= m; l++)
{
if (tmp > a[i][l] && k == || tmp < a[i][l] && k == )
{
tmp = a[i][l]; // 找出第 i 行中第 j 个最少的数
tj = l;
}
}
if (j != tj)
{
swap(a[i][tj], a[i][j]); // 找完之后要交换
if (k == )
{
ans[cnt][] = j;
ans[cnt][] = tj;
}
else
{
ans[cnt][] = tj;
ans[cnt][] = j;
}
cnt++;
for (l = i+; l <= n; l++) // 处理第i+1 ~ n 行的数组
{
if (a[l][j] > a[l][tj] && k == || a[l][j] < a[l][tj] && k == )
swap(a[l][j], a[l][tj]);
}
}
}
}
printf("%d\n", cnt);
for (i = ; i < cnt; i++)
printf("%d %d\n", ans[i][], ans[i][]);
}
return ;
}
解法二:堪称暴力中的暴力!!内存都省了
| Time | Memory |
|---|
| 78 ms | 0 KB |
k = 0:从小到大排列。意味着所有数组中的第一个数是最小的!这个最小的数如何找?无非就在该行中的某一个数里面。由于不确定在哪里,但用两重循环势必能找出,于是就有了以下简单的方法:对于i = 1,a[i] 可能不是最小的数,于是不断地跟a[i+1], a[i+2], ..., a[m] 比较,即找出排在第一个的数输出 1, 2; 1, 3; ...; 1, m 即可,这样能能保证每个数组都能找出最小的数。第二个最小的数就是2, 3; 2, 4; ...; 2, m了,后面的依次类推。但主要题目中说的,当第 i 个位置的 value > 第 j 个位置的 value 才能交换这个条件。k = 1 则是2, 1; 3, 1; ...; m 1 输出 。
#include <iostream>
using namespace std; int main()
{
int n, m, k, i, j;
while (cin >> n >> m >> k)
{
for (i = ; i < n * m; i++)
cin >> j;
cout << m * (m - ) / << endl;
for (i = ; i < m; i++)
{
for (j = i+; j <= m; j++)
{
if (!k)
cout << i << " " << j << endl;
else
cout << j << " " << i << endl;
}
}
}
return ;
}
codeforces B. Multitasking 解题报告的更多相关文章
- codeforces 31C Schedule 解题报告
题目链接:http://codeforces.com/problemset/problem/31/C 题目意思:给出 n 个 lessons 你,每个lesson 有对应的 起始和结束时间.问通过删除 ...
- codeforces 499B.Lecture 解题报告
题目链接:http://codeforces.com/problemset/problem/499/B 题目意思:给出两种语言下 m 个单词表(word1, word2)的一一对应,以及 profes ...
- codeforces 495C. Treasure 解题报告
题目链接:http://codeforces.com/problemset/problem/495/C 题目意思:给出一串只有三种字符( ')','(' 和 '#')组成的字符串,每个位置的这个字符 ...
- codeforces 490B.Queue 解题报告
题目链接:http://codeforces.com/problemset/problem/490/B 题目意思:给出每个人 i 站在他前面的人的编号 ai 和后面的人的编号 bi.注意,排在第一个位 ...
- CodeForces 166E -Tetrahedron解题报告
这是本人写的第一次博客,学了半年的基础C语言,初学算法,若有错误还请指正. 题目链接:http://codeforces.com/contest/166/problem/E E. Tetrahedro ...
- codeforces 489A.SwapSort 解题报告
题目链接:http://codeforces.com/problemset/problem/489/A 题目意思:给出一个 n 个无序的序列,问能通过两两交换,需要多少次使得整个序列最终呈现非递减形式 ...
- codeforces 485A.Factory 解题报告
题目链接:http://codeforces.com/problemset/problem/485/A 题目意思:给出 a 和 m,a 表示第一日的details,要求该日结束时要多生产 a mod ...
- codeforces 483A. Counterexample 解题报告
题目链接:http://codeforces.com/problemset/problem/483/A 题目意思:给出一个区间 [l, r],要从中找出a, b, c,需要满足 a, b 互质,b, ...
- codeforces 479C Exams 解题报告
题目链接:http://codeforces.com/problemset/problem/479/C 题目意思:简单来说,就是有个人需要通过 n 门考试,每场考试他可以选择ai, bi 这其中一个时 ...
随机推荐
- 【java】httpclient的使用之java代码内发送http请求
场景: 需要本项目发送HTTP请求到另一个项目中,处理完成返回值给本项目. 1.本项目引入架包 <!-- httpclient 后台发送http请求--> <dependency&g ...
- OpenCV学习教程入门篇<一、介绍>
OpenCV,是Inter公司开发的免费开源专门因为图像处理和机器视觉的C/C++库,英文全称是Open Source Computer Vision. 1. 可视化语言Matlab与OpenCV都能 ...
- SPFA 求带负权的单源最短路
int spfa_bfs(int s) { ///s表示起点. queue <int> q; memset(d,0x3f,sizeof(d)); ///d数组中存下的就是最短路径(存在的话 ...
- ARC forbids Objective-C objects in structs or unions
解决方法有二种: 1.在出错的地方加入__unsafe_unretained 2.关闭系统ARC.1.点击project 2.点击Build Setting 3.找到其以下的Objetive ...
- pyquery库的使用
pyquery标签选择 获取了所有的img标签(css选择器,你也可以换成不同的class和id) import requests import re from pyquery import PyQu ...
- Anacoda 介绍、安装、环境切换
官网下载 概述 很多学习python的初学者甚至学了有一段时间的人接触到anaconda或者其他虚拟环境工具时觉得无从下手, 其主要原因就是不明白这些工具究竟有什么用, 是用来做什么的, 为什么要这么 ...
- 从S3中导入数据到Dynamodb
本节如果你已经从Dynamodb中导出过数据,而且导出的文件以及被存入S3.文件内部结构会在Verify Data Export File 中描写叙述. 我们称之前导出数据的原始表为source ta ...
- Html.DropDownListFor的选项值为字符型问题
我快要疯了.asp.net mvc的这个DropDownListFor,无论在服务器端如何设置,设置哪个值被选中,结果到了页面输出,选中值根本没有被选中,没有任何一个值被选中,下拉框只冷冰冰地显示一个 ...
- EasyVideoRecorder短视频拍摄、短视频录制SDK支持IOS版本
在前面的博客<EasyDarwin开发出类似于美拍.秒拍的短视频拍摄SDK:EasyVideoRecorder>和<美拍.秒拍中安卓.IOS短视频拍摄的一些关键技术>中我们简单 ...
- Hackerspace
Hackerspace Software - HackerspaceWiki https://wiki.hackerspaces.org/Hackerspace_Software Hackerspac ...