hdu 4925规律题
来源:互联网 发布:程序员的qq头像 编辑:程序博客网 时间:2024/03/28 22:43
这道题是今天多校联合里相对简单的一道题
CLICK HE
题意就是 果园是一个n*m规模的~每个grid如果种苹果,那么可以得到一个苹果,如果不种苹果但是给它施肥,会使这个grid的四个方向的苹果树结的苹果数量翻倍;
那么问这个果园可以收获的最大苹果数量;
思路:
找规律,先找 1*1大小的果园 那么结果是1个,
.......再找1*2,1*3,1*4......1*m,最后会发现 结果是 1 2 4 6 8 10 ...... 这是第一行,那么第一列也是这个规律。。。
再接着找规律,可以发现最优解: 相当于隔一个空载个苹果树,然后暴力枚举即可;
#include <iostream>#include <stdio.h>#include <cmath>#include <string.h>using namespace std;int map[200][200];int n,m,t;long long dfs(int x,int y){ long long cnt=1; if(x-1>=1) { if(map[x-1][y]) cnt=cnt*2; } if(x+1<=n) { if(map[x+1][y]) cnt=cnt*2; } if(y-1>=1) { if(map[x][y-1]) cnt=cnt*2; } if(y+1<=m) { if(map[x][y+1]) cnt=cnt*2; } return cnt;}int main(){ cin>>t; while(t--) { scanf("%d%d",&n,&m); memset(map,0,sizeof(map)); if(n==1&&m==1) { printf("1\n"); continue; } if(n==1) { printf("%d\n",2*(m-1)); continue; } if(m==1) { printf("%d\n",2*(n-1)); continue; } for(int i=1;i<=n;i++) { if(i&1) { int j=1; while(j<=m) { map[i][j]=1; j+=2; } } else { int j=2; while(j<=m) { map[i][j]=1; j+=2; } } } long long ans=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(!map[i][j]) { ans+=dfs(i,j); } } printf("%I64d\n",ans); } return 0;}
0 0
- hdu 4925规律题
- HDU 2582 规律题
- hdu 1792规律题
- hdu 5524 规律题
- hdu 4148 规律题
- HDU 6043 规律题
- HDU 1046 数学规律题
- HDU 4602 Partition 规律题
- HDU 4279 Number 规律题
- hdu 1046 Gridland(规律题)
- hdu 1021 (找规律题)
- HDU 1719 Friend 【规律题】
- hdu 2041 简单规律题
- HDU 5835 Danganronpa ---规律题
- 规律:HDU
- HDU 4925 Apple Tree 找呀找规律
- hdu 1214 圆桌会议 规律题 小水
- hdu 1331 找规律 超级水题
- 关于phpcms中模块_tag.class.php中的pc_tag()方法的含义
- css元素定位
- Hive Python Streaming的原理及写法
- 03-2. 用天平找小球(10)
- 将HTML格式的String转化为HTMLElement的实现方法
- hdu 4925规律题
- ArmLinux BOOTLOADER全程详解[转]
- vivi开发笔记(十七):vivi与Linux kernel的参数传递情景分析(上)[转]
- Uboot-1.1.2 for PXA270源码分析-do_bootm_linux函数源码分析[转]
- linux 2.6.22.1内核在s3c2410平台的移植(完美版)
- ramdisk 和busybox在开发板上的移植[转]
- linux-2.6.14在开发板上的移植
- [转]USB驱动移植心得
- [转]一步一步解决 kernel 2.6 usb host drive