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! 因为这道题放在模拟专题中,所以我们就讨 ...
随机推荐
- dbvisualizer中文乱码
.dbvisualizer中文乱码 tools--tool properties找到Fonts--修改SQL Editor/Text Editor 将字体换成:微软雅黑.新宋体.楷体.黑体 .dbvi ...
- win7下IIS配置MVC项目
第一步:添加MVC程序映射 1.双击打开,如下图: 2. 点击界面右边操作中的:添加脚本映射 请求路径:* 可执行文件路径:C:\Windows\Microsoft.NET\Framework\v4. ...
- stm32学习笔记——外部中断的使用
stm32学习笔记——外部中断的使用 基本概念 stm32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间只能使用一个.比如说,PA0,PB0 ...
- vijos 1038 括号+路径 ***
链接:点我 就是自己写不出来 #include <cstdio> #include <climits> #include <memory.h> using name ...
- hdu 3507 斜率dp
不好理解,先多做几个再看 此题是很基础的斜率DP的入门题. 题意很清楚,就是输出序列a[n],每连续输出的费用是连续输出的数字和的平方加上常数M 让我们求这个费用的最小值. 设dp[i]表示输出前i个 ...
- MVC的处理过程
MVC的处理过程,首先控制器接受用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户.
- Codeforces Round #313 (Div. 2) C. Gerald's Hexagon 数学
C. Gerald's Hexagon Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/559/pr ...
- 使用supervisor提高nodejs调试效率 (已验证)
开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止Node.js 再重新运行才会奏效. 这是因为 Node.js 只在第一次引用到某部份时才会去解析脚本文件, ...
- 食物链 poj 1182
C - 食物链 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- 源码安装Memcached服务器及其2种PHP客户端
本文所用源码包皆为当时最新stable稳定版. 安装memcached服务器 先安装libevent, 最新版为2.0.21 tar -zxvf libevent-2.0.21-stable.tar. ...