博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVALive 7512 November 11th 题解
阅读量:6367 次
发布时间:2019-06-23

本文共 1332 字,大约阅读时间需要 4 分钟。

思路:心态大崩,最多不讲了,最少应该是三个一组,比如......应该是.S..S.,这样占的最多

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef long long ll;using namespace std;const int maxn = 1000 + 10;const int MOD = 1e9 + 7;const int INF = 0x3f3f3f3f;int row[maxn][maxn], cnt[maxn];int getMax(int s){ return (s + 1) / 2;}int getMin(int s){ if(s % 3 == 0){ return s / 3; } else if(s % 3 == 1){ return (s + 2) / 3; } else return (s + 1) / 3;}int main(){ int t, ca = 1; scanf("%d", &t); while(t--){ int b, r, s; scanf("%d%d", &r, &s); scanf("%d", &b); memset(cnt, 0 ,sizeof(cnt)); for(int i = 1; i <= b; i++){ int x, y; scanf("%d%d", &x, &y); row[x][cnt[x]++] = y; } int Max = 0, Min = 0; for(int i = 0; i < r; i++){ if(cnt[i] == 0){ Max += getMax(s); Min += getMin(s); } else{ sort(row[i], row[i] + cnt[i]); for(int j = 0; j < cnt[i]; j++){ if(j == 0){ int tmp = row[i][j] - 0; Max += getMax(tmp); Min += getMin(tmp); } else{ int tmp = row[i][j] - row[i][j - 1] - 1; Max += getMax(tmp); Min += getMin(tmp); } } int tmp = s - 1 - row[i][cnt[i] - 1]; Max += getMax(tmp); Min += getMin(tmp); } } printf("Case #%d: %d %d\n", ca++, Max, Min); } return 0;}/*32 310 12 301 110 0*/

 

转载于:https://www.cnblogs.com/KirinSB/p/10325201.html

你可能感兴趣的文章
UIScrollView 大概是如何实现的,它是如何捕捉、响应手势的?
查看>>
asp.net MVC中实现调取web api
查看>>
keepalived实现服务高可用
查看>>
iOS模型以及使用
查看>>
NSString 去除空格
查看>>
swift - 网络请求数据处理 - 协议处理
查看>>
[BZOJ1588]营业额统计(Splay)
查看>>
[BZOJ 4869][SHOI&SXOI2017]相逢是问候(扩展欧拉定理+线段树)
查看>>
2017-08-13
查看>>
条件语句优化面面观
查看>>
集成友盟微信登录没有回调
查看>>
在CentOS Linux系统上,添加新的端口,启用ssh服务
查看>>
dbcp数据库连接池简单使用
查看>>
leetcode-38-Count and Say
查看>>
从零开始写一个node爬虫(上)—— 数据采集篇
查看>>
java调用远程服务器shell脚本
查看>>
贪吃蛇
查看>>
前端MVC学习总结(四)——NodeJS+MongoDB+AngularJS+Bootstrap书店示例
查看>>
Myeclipse快捷键集合
查看>>
linux安装ftp
查看>>