NOJ 1641 错误的算法(模拟)
[1641] 错误的算法
- 时间限制: 5000 ms 内存限制: 65535 K
- 问题描述
有道题目是这样的:
输入一个 n 行 m 列网格,找一个格子,使得它所在的行和列中所有格子的数之和最大。如果答
案不唯一,输出任意解即可。比如,在下面的例子中,最优解是(1,3),即第一行和的三列的交
点(行从上到下编号为 1~n,列从左到右编号为 1~m),所有 7个数之和为 35。
快要比赛的时候,有一个裁判想到了这样一个算法:
首先找一行 r(1<=r<=n) 使得该行所有数之和最大,然后找一列 c(1<=c<=m) 使得该列 所有数之和最大,最后直接输出(r,c)。如果有多个满足条件的 r,输出最小的 r。对 于 c 同样处理。
显然,这个算法是错的,但它竟然通过了大部分测试数据!你能找出那些让这个错误算法得到 正确结果的“弱”数据,以便裁判们改进这些数据吗?
- 输入
- 输入包含不超过 100 组数据。每组数据第一行为两个整数 n, m (1<=n<=500, 1<=m<=500),即行 数和列数。以下 n 行每行包含 m 个 1~100 的整数。输入的总大小不超过 2MB。
- 输出
- 对于每组数据,如果错误算法能得到正确结果,输出"Weak",否则输出"Strong"。
- 样例输入
4 4
5 5 5 5
1 1 5 1
1 1 5 1
1 1 5 1
5 4
2 5 1 1
1 1 9 1
1 1 1 1
1 1 1 1
1 1 1 1- 样例输出
Case 1: Weak
Case 2: Strong
昨晚做到十二点,经过聚聚的耐心教导(好吧我还是没听懂)后来去睡觉时又想了一会儿,知道了大神所说的不需要求正确解的意义(只要求正确解对应的SUM即可)。因为粗心忽略了题中的条件解可以为多个。因此只需证明题中裁判算法所给的解只是运气成分,碰巧正确而已。尼玛早上起来打开笔记本改了下代码果然AC了。我药丸啊
1、用题中所给条件算出裁判要的解。
2、用正确算法算出最优解们所符合的那个行列SUM值最大和MAX。
3、用裁判的解代入计算SUM的公式,要是错误,说明裁判的解错(Strong)。否则则是Weak。
代码:
#include<iostream>
#include<stdio.h>
using namespace std;
int list[510][510];
int hang,lie;
int sum1(int x,int y)
{
int i,j,sum=0;
for(i=x-1;i>=1;i--)
{
sum+=list[i][y];
}
for(i=x+1;i<=hang;i++)
{
sum+=list[i][y];
}
for(i=y-1;i>=1;i--)
{
sum+=list[x][i];
}
for(i=y+1;i<=lie;i++)
{
sum+=list[x][i];
}
return (sum+list[x][y]);
}
int main(void)
{
int i,j,ar,ac,sum,inr,inc,max,co=0,tsum,rc;
while(cin>>hang>>lie)
{
co++;
for (i=1 ;i<=hang ;i++)
{
for (j=1; j<=lie; j++)
cin>>list[i][j];
}
max=0;
inr=1;
for (i=1 ;i<=hang ;i++)
{
sum=0;
for (j=1; j<=lie; j++)
{
sum+=list[i][j];
}
if(sum>max)
{
max=sum;
inr=i;
}
}
max=0;
inc=1;
for (j=1 ;j<=lie ;j++)
{
sum=0;
for (i=1; i<=hang; i++)
{
sum+=list[i][j];
}
if(sum>max)
{
max=sum;
inc=j;
}
}
max=0;
for(i=1;i<=hang;i++)
{
for(j=1;j<=lie;j++)
{
tsum=sum1(i,j);
if(tsum>max)
{
max=tsum;
}
}
}
if(sum1(inr,inc)==max)
{
printf("Case %d: Weak\n",co);
}
else
{
printf("Case %d: Strong\n",co);
}
memset(list,0,sizeof(list));
}
return 0;
}
NOJ 1641 错误的算法(模拟)的更多相关文章
- CSU 1779: 错误的算法【矩阵/模拟】
Description 有道题目是这样的: 输入一个 n 行 m 列网格,找一个格子,使得它所在的行和列中所有格子的数之和最大.如果答 案不唯一,输出任意解即可.比如,在下面的例子中,最优解是(1,3 ...
- 虚存管理页面置换算法 — FIFO和RUL算法模拟实现
本篇博文为追忆以前写过的算法系列第一篇(20081021) 温故知新 目的: 为了解决内存容量有限与多作业执行的冲突.运用了虚拟存储技术.能从逻辑上对内存进行扩充,达到扩充内存的效果.分页存储管理是实 ...
- python蒙特卡洛算法模拟赌博模型
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...
- 【BZOJ4837】LRU算法 [模拟]
LRU算法 Time Limit: 6 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 小Q同学在学习操作系统中内存管理的 ...
- 【基础算法模拟+例题】-C++
在漫长的刷题练习过程中,几乎所有稍微熟练一点的OIer都会,但是都几乎没有经过系统的学习,今天,我们就来讲讲模拟算法,也是为了复习emm. 定义? 定义?模拟还有什么定义吗? 那什么是模拟呢? 就是按 ...
- Kruskal算法模拟讲解
Kruskal 算法是一个求最小生成树的算法,即求最小的开销等 算法可以这样,要求得最小生成树,那么n个节点只能包括n-1条边 所以我们应该转换为寻找这最短的n-1条边,因此,可以先对所有的 边进行从 ...
- Dijkstra算法模拟讲解
dijkstra算法,是一个求单源最短路径算法 其算法的特点为: 层层逼进,有点类似宽度搜索的感觉 其需要的数据结构为: int map[N][N] 所有点之间的权表 ...
- 操作系统,银行家算法模拟实现(Windows 环境 C++)
计算机操作系统课设需要,写了两个下午的银行家算法(陷在bug里出不来耽误了很多时间),参考计算机操作系统(汤子瀛) 实现过程中不涉及难度较大的算法,仅根据银行家算法的思想和步骤进行实现.以下为详细步骤 ...
- 【基础算法-模拟-例题-*校长的问题】-C++
为什么在题目前面打上星号呢? 这道题的正解不是模拟! 正解树状数组! 正解树状数组! 正解树状数组! 重要的事情说够三遍了! 但是,歪解模拟因为数据水都能AC! 因为这道题放在模拟专题中,所以我们就讨 ...
随机推荐
- Maven无法引入自定义构件依赖的解决方案
一般情况下,使用如下命令即可将自定义构件安装到本地仓库,供其他项目使用. mvn clean install 但是也有例外,今天我就分享一下我遇到问题,供相同遭遇的同学参考下. 我使用了父POM统一管 ...
- 一个iOS图片选择器的DEMO(实现图片添加,宫格排列,图片长按删除,以及图片替换等功能)
在开发中,经常用到选择多张图片进行上传或作其他处理等等,以下DEMO满足了此功能中的大部分功能,可直接使用到项目中. 主要功能如下: 1,图片九宫格排列(可自动设置) 2,图片长按抖动(仿苹果软件删除 ...
- jquery easy ui 1.3.4 内容组件(2)
2.1.panel(面板) panel面板是easyui里面非常基础的一个内容组件,在我们后期学的tabs (选项卡).accordion(手风琴)这两种内容组件都依赖于panel组件.构建一个pan ...
- jQuery 重新温习 遗忘知识点
解决jQuery和其他库的冲突 当把jQuery和其他JavaScript库(例如Prototype.MooTools或YUI)一起使用时 <script> jQuery.noConfli ...
- C#控制管理VisualSVN Server 分类: C# 2014-05-29 15:51 796人阅读 评论(0) 收藏
VisualSVN Server可以用WMI接口管理(Windows Management Instrumentation). VisualSVN Server安装的计算机中,位于%VISUALSVN ...
- poj 1276 多重背包
735 3 4 125 6 5 3 350 //735的最大额,3种,4个125,6个5,3个350 633 4 500 30 6 100 1 5 0 1 735 0 0 3 10 100 10 50 ...
- matlab练习程序(矩形变换为单连通形状)
变换使用的模板必须是单连通的,而且模板中心必须在模板内,如果在模板中打个结或是月牙形,这里的程序就处理不了了. 虽然非单连通模板也有办法处理,不过不是这里要讨论的. 这里用到的方法和矩形变换为圆那片文 ...
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Que
看错误提示就知道是因为SQL Server的Ad Hoc Distributed Queries组件被禁用了,这里我用的SQL Server版本是2005,只需要开启Ad Hoc Distribute ...
- Android Studio 1.0首次安装遇到的问题,无法下载SDK
相信,在安装Android Studio的过程中会遇到很多问题,特别是第一次启动下载不了sdk.郁闷了吧. 可以去官网下载,也可以点击这里下载Android Studio和sdk. 一.不下载SDK启 ...
- asp.net控件开发基础(1)(转)原文更多内容
asp.net本身提供了很多控件,提供给我们这些比较懒惰的人使用,我认为控件的作用就在此,因为我们不想重复工作,所以要创建它,这个本身便是一个需求的关系,所以学习控件开发很有意思. wrox网站上有本 ...