C~K祝你元宵节快乐!—结构体数组+3重for循环暴力求解
2017-02-16 23:27
633 查看
think;
1题目一开始自己做的时候是用二维数组标记出现过的点,然后再用一个二维数组重新开始遍历,中间不断更新最大值和最大值的坐标,然后提交后超时,今天晚上终于看了题解,发现学哥是用结构体数组记录出现过的点,再用一个暴力的3重for循环求解,提交后AC,感觉自己还是做题少了,多做题目,开阔思路,并且一定要有题后反思,反思一下自己的收获和不足之处,严厉纠正自己的错误,努力使自己变得更加优秀,加油
C~K祝你元宵节快乐!
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
C~K 是个长得比较帅的吃货,现在在某一个平面直角坐标系中有 n 个汤圆(每个汤圆都在格点上),C~K 有一个正方形的框,现在他站在一个格点上,手持正方形框来框住一部分区域,他可以吃到正方形框内的汤圆(在正方形上的也计算在内,且正方形的边长与 x 轴,y 轴平行),C~K 比较忙,现在请你帮他计算一下站在哪个位置可以吃到最多的汤圆。
Input
第一行输入一个组数 T (1 <= T <= 20)。
对于每组数据:
每一行输入一个整数 n (1 <= n <= 100),代表汤圆的数量。
接下来 n 行每行输入两个整数 x, y (1 <= x, y <= 100),代表汤圆的坐标。
接下来的一行输入一个整数 h (1 <= h <= 100),代表 C~K 的正方形框的边长。
Output
对于每组输入,先输出 “Case x:”(不包括引号)代表第几组。
接下来一行输出三个数 X,Y,K,分别代表 C~K 可以吃到最多汤圆的坐标及汤圆的数量。
(如果有多个满足条件的格点,输出 x 坐标最小的哪一个,如果多个格点 x 坐标相同,则输出 y 坐标最小的那一个)
Example Input
1
2
1 1
2 2
1
Example Output
Case 1:
1 1 2
Hint
Author
「2017年寒假集训 阶段测试赛2 - 元宵节专场」C~K
1题目一开始自己做的时候是用二维数组标记出现过的点,然后再用一个二维数组重新开始遍历,中间不断更新最大值和最大值的坐标,然后提交后超时,今天晚上终于看了题解,发现学哥是用结构体数组记录出现过的点,再用一个暴力的3重for循环求解,提交后AC,感觉自己还是做题少了,多做题目,开阔思路,并且一定要有题后反思,反思一下自己的收获和不足之处,严厉纠正自己的错误,努力使自己变得更加优秀,加油
C~K祝你元宵节快乐!
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
C~K 是个长得比较帅的吃货,现在在某一个平面直角坐标系中有 n 个汤圆(每个汤圆都在格点上),C~K 有一个正方形的框,现在他站在一个格点上,手持正方形框来框住一部分区域,他可以吃到正方形框内的汤圆(在正方形上的也计算在内,且正方形的边长与 x 轴,y 轴平行),C~K 比较忙,现在请你帮他计算一下站在哪个位置可以吃到最多的汤圆。
Input
第一行输入一个组数 T (1 <= T <= 20)。
对于每组数据:
每一行输入一个整数 n (1 <= n <= 100),代表汤圆的数量。
接下来 n 行每行输入两个整数 x, y (1 <= x, y <= 100),代表汤圆的坐标。
接下来的一行输入一个整数 h (1 <= h <= 100),代表 C~K 的正方形框的边长。
Output
对于每组输入,先输出 “Case x:”(不包括引号)代表第几组。
接下来一行输出三个数 X,Y,K,分别代表 C~K 可以吃到最多汤圆的坐标及汤圆的数量。
(如果有多个满足条件的格点,输出 x 坐标最小的哪一个,如果多个格点 x 坐标相同,则输出 y 坐标最小的那一个)
Example Input
1
2
1 1
2 2
1
Example Output
Case 1:
1 1 2
Hint
Author
「2017年寒假集训 阶段测试赛2 - 元宵节专场」C~K
#include <stdio.h> #include <string.h> struct node { int x; int y; }a[104]; int main() { int T, n, h, i, j, k, u, v, sum, ans; scanf("%d", &T); for(k = 1; k <= T; k++) { scanf("%d", &n); for(i = 0; i < n; i++) { scanf("%d %d", &a[i].x, &a[i].y); } scanf("%d", &h); sum = 0;///初始化 u = v = 0; for(i = 1; i < 104; i++) { for(j = 1;j < 104; j++) { ans = 0;///注意初始化位置 for(int z = 0; z < n; z++) { if(a[z].x >= i-h && a[z].x <= i+h && a[z].y >= j-h && a[z].y <= j+h) ans++; } if(sum < ans) { u = i, v = j, sum = ans; } } } printf("Case %d:\n", k); printf("%d %d %d\n", u, v, sum); } return 0; } /*************************************************** User name: Result: Accepted Take time: 36ms Take Memory: 108KB Submit time: 2017-02-16 23:21:44 ****************************************************/
相关文章推荐
- leetcode 373. Find K Pairs with Smallest Sums 暴力循环求解
- 暴力求解——hdu 1799 循环多少次?
- UVa 725暴力求解
- Python:for循环的使用-----求解转轴率pi
- 枚举求解,也叫暴力破解
- 暴力求解最大乘积
- 暴力求解——打表,暴力
- 最大子数组问题-暴力求解-c++代码实现及运行实例结果
- 分书问题 暴力求解
- HDU-1015 Safecracker(DFS+暴力回溯 / 五重循环)
- Poj1320佩尔方程见数论书115或者110页(暴力求解)
- The Shortest Path Gym - 101498L 暴力求解?
- HDU - 2089 不要62 (暴力求解)
- hdu2069Coin Change(暴力求解----动态规划(背包)求解---搜索--)
- uva 10167(暴力求解)
- CSU 1553 Good subsequence(暴力求解)
- ZOJ 2856 Happy Life 暴力求解
- 循环链表示例:求解约瑟夫问题
- Python3基础 用while 循环求解 一个整数的阶乘
- UMR祝你元宵节快乐!