ZJGSU-ACM OJ 心得
一个我觉得蛮重要的问题,也是会经常碰到的问题
就是觉得自己对的代码提交到OJ发现输出超限
我是真的输出超限了吗?
QAQ
其实,不然。
我把这类问题分为几类:
(一):死循环:while(1)
比如以下这行代码:
while()
{ }
看似此while(1)很不起眼,那我就再举一个例子吧
2264: 矩阵转换(指针题)
时间限制: 1 Sec 内存限制: 32 MB
提交: 665 解决: 168
[提交][状态][讨论版]
题目描述
输入
输出
样例输入
样例输出
我的原代码是:
#include<stdio.h>
#include<string.h>
int main()
{
void fun(int a[][]);
int i,j;
int a[][];
while()
{
for(i=;i<;i++)
for(j=;j<;j++)
scanf("%d",&a[i][j]);
fun(a);
for(i=;i<;i++)
{
for(j=;j<;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
return ;
}
void fun(int a[][])
{
int i,j,max,min1,min2,min3,min4;
int tmp;
int ti,tj;
max=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(a[i][j]>=max)
{
max=a[i][j];
ti=i;tj=j;
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min1=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(a[i][j]<=min1)
{
min1=a[i][j];
ti=i;tj=j;
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min2=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(i!=||j!=)
{
if(a[i][j]<=min2)
{
min2=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min3=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if((i!=||j!=)&&(i!=||j!=))
{
if(a[i][j]<=min3)
{
min3=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min4=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if((i!=||j!=)&&(i!=||j!=)&&(i!=||j!=))
{
if(a[i][j]<=min4)
{
min4=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp;
return;
}
(查看完全代码点击)
解决方案:
#include<stdio.h>
#include<string.h>
int a[][];
void fun()
{
int i,j,max,min1,min2,min3,min4;
int tmp;
int ti,tj;
max=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(a[i][j]>=max)
{
max=a[i][j];
ti=i;tj=j;
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min1=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(a[i][j]<=min1)
{
min1=a[i][j];
ti=i;tj=j;
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min2=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(i!=||j!=)
{
if(a[i][j]<=min2)
{
min2=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min3=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if((i!=||j!=)&&(i!=||j!=))
{
if(a[i][j]<=min3)
{
min3=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp; min4=a[][];
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if((i!=||j!=)&&(i!=||j!=)&&(i!=||j!=))
{
if(a[i][j]<=min4)
{
min4=a[i][j];
ti=i;tj=j;
}
}
}
}
tmp=a[][];a[][]=a[ti][tj];a[ti][tj]=tmp;
return;
}
int main()
{
int i,j; while(scanf("%d",&a[][])!=EOF)
{
for(i = ;i < ;i++)
{
scanf("%d",&a[][i]);
}
for(i=;i<;i++)
for(j=;j<;j++)
scanf("%d",&a[i][j]);
fun();
for(i=;i<;i++)
{
for(j=;j<;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
}
return ;
}
(查看完全代码点击)
(二)不当输入 while(gets(string)!=EOF)
比如以下这段代码:
while(gets(string)!=EOF)
{ }
举个刚刚AC了的例子~
问题 B: 能被四整除吗???
时间限制: 1 Sec 内存限制: 32 MB
提交: 30 解决: 17
[提交][状态][讨论版]
题目描述
这题有点水,主要的目的是想让你们知道数字的一些奇妙之处。题意很简单,给你一个数,让你判断是否能被4整除。
输入
输出
输出Yes或者No。我比较喜欢逆向思维,所以呢,能被四整除输出No,不能则输出Yes。
样例输入
ababababababababababababab
样例输出
No
#include <stdio.h>
#include <string.h>
int main()
{
int ll,i;
int uiu;
char sun[];
while(gets(sun)!=EOF)
{
ll=strlen(sun);
for(i=;i<ll;i++)
{
if(sun[i]>='a'&&sun[i]<='z')
sun[i]=sun[i]-'a'+'';
else if(sun[i]>='A'&&sun[i]<='Z')
sun[i]=sun[i]-'A'+'';
}
if(ll==)
{
if((sun[]-'')%==)
{
printf("No\n");
}
else
printf("Yes\n");
}
else
{
uiu=(sun[ll-]-'')+(sun[ll-]-'')*;
if(uiu%==)
printf("No\n");
else
printf("Yes\n");
}
}
return ;
}
(查看完全代码点击)
解决方案:
#include <stdio.h>
#include <string.h>
int main()
{
int ll,i,uiu;
char sun[];
while(scanf("%s",sun)!=EOF)
{
ll=strlen(sun);
for(i=;i<ll;i++)
{
if(sun[i]>='a'&&sun[i]<='z')//将字母转化成数字
sun[i]=sun[i]-'a'+'';
else if(sun[i]>='A'&&sun[i]<='Z')
sun[i]=sun[i]-'A'+'';
}
if(ll==)//如果数组长度只有一位的时候
{
if((sun[]-'')%==)
{
printf("No\n");
}
else
printf("Yes\n");
}
else//数组长度超过两位,则取最后两位判断是否能被4整除
{
uiu=(sun[ll-]-'')+(sun[ll-]-'')*;
if(uiu%==)
printf("No\n");
else
printf("Yes\n");
}
}
return ;
}
(查看完全代码点击)
ZJGSU-ACM OJ 心得的更多相关文章
- 各大ACM OJ网址
做快乐的程序员 以你的条件,你不必追求优秀,但你可以做到良好. 各大OJ网址 ACM OJ Collection(排名不分先后): 中国:(China) 华东地区: 浙江: 杭州电子科技大学(HDU) ...
- ACM#学习心得0
加入实验室也有些日子了,这是第一个近来的小小学习心得 1.在之前的训练题和考核题以及平时刷过的题中,我发现自己对字符串这一块的基础知识掌握还是比较差的,总是不能正确的接收的字符或字符串. 这两个星期, ...
- ACM OJ Collection
浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 同济大学(TJU):http://acm.t ...
- 山东理工大学SDUT - ACM OJ 题: Python代码 及分析
Python基础语法学习完成,先刷基础题100道巩固 ,附 题目.代码.知识分析 题目:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index ...
- 老的acm & oj学习站点
1.网易小鱼博客 http://gisyhy.blog.163.com/blog/#m=0&t=1&c=fks_087069086082087064085081082095085084 ...
- ACM讲座心得
- ACM学习心得
今天打比赛,调整好了心态,不管rank榜,所以做的比上次好,今天A了四个题,都很水,memset的清零时间,需要好长,因为memset 跟cin超时了,它的数据量1e6,所以超时了还是多用scanf, ...
- 我的ACM参赛故事
从我接触程序竞赛到现在应该有十多年了,单说ACM竞赛,从第一次非正式参赛到现在也差不多有7年多的样子.有太多的故事,想说的话,却一直没能有机会写下来.一方面是自己忙,一方面也是自己懒.所以很感谢能有人 ...
- acm学习指引
acm学习心得及书籍推荐 一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划练练: 第 ...
随机推荐
- iOS 面试集锦
是第一篇: 1.Difference between shallow copy and deep copy? 浅复制和深复制的区别? 答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身. 深层 ...
- js的命令模式
命令模式: 什么叫命令模式: 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能. 命令模式主要有四个部分: 命令对象(comma ...
- GIMP语言设置
初学GIMP,需要设置语言:点击 编辑 - 首选项 其他的配置如: 配置快捷键 自己熟悉吧!
- 重置windows用户漫游配置文件
1.备份用户数据 2.删除或修改漫游配置文件 3.用户PC管理员登陆,删除本地用户缓存文件 注册表打开: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows N ...
- python爬虫基础03-requests库
优雅到骨子里的Requests 本文地址:https://www.jianshu.com/p/678489e022c8 简介 上一篇文章介绍了Python的网络请求库urllib和urllib3的使用 ...
- iOS UITextView点击事件处理
自定义一个UITextView UITextView 的selectedRange 影响 selectedTextRange 改变前者可影响后者 self.selectedRange -->se ...
- SpringMVC之HandlerMapping源码分析
01.doDispatch方法中代码如下:HandlerExecutionChain mappedHandler=this.getHandler(processedRequest) 02.Dispat ...
- 检查DLL,EXE文件是64位或者32位的方法
检查DLL,EXE文件是64位或者32位:输入corflags <assembly path>:
- luogu2604 [ZJOI2010]网络扩容
先做一遍普通的dinic 然后再更改源点为超级源,超级源向原源加一条capacity=k && cost=0的边,再加上有费用的边跑最小费用最大流 #include <iostr ...
- Centos7 安装python3详细教程,解决升级后不兼容问题
一.确认当前python版本 [root@centos Python-3.6.1]# python Python 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC ...