博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[luoguP1360] [USACO07MAR]黄金阵容均衡Gold Balanced L…
阅读量:5340 次
发布时间:2019-06-15

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

 

真的骚的一个题,看了半天只会个前缀和+暴力。。

纯考思维。。

 

#include 
#include
#include
#define M 41#define N 100011#define max(x, y) ((x) > (y) ? (x) : (y))int n, m, ans, last;struct node{ int sum[M], id; node() { id = 0; memset(sum, 0, sizeof(sum)); }}p[N];inline bool cmp(node x, node y){ int i; for(i = 1; i <= m; i++) if(x.sum[i] != y.sum[i]) return x.sum[i] < y.sum[i]; return x.id < y.id;}inline bool check(int x, int y){ int i; for(i = 1; i <= m; i++) if(p[x].sum[i] != p[y].sum[i]) return 0; return 1;}int main(){ int i, j, x; scanf("%d %d", &n, &m); for(i = 1; i <= n; i++) { scanf("%d", &x); p[i].id = i; for(j = 1; j <= m; j++) p[i].sum[j] = p[i - 1].sum[j] + bool(x & (1 << j - 1)); } for(i = 1; i <= n; i++) for(j = 1; j <= m; j++) p[i].sum[j] -= p[i].sum[m]; std::sort(p + 1, p + n + 2, cmp); last = p[1].id; for(i = 2; i <= n + 1; i++) { if(check(i, i - 1)) ans = max(ans, p[i].id - last); else last = p[i].id; } printf("%d\n", ans); return 0;}

  

转载于:https://www.cnblogs.com/zhenghaotian/p/7413602.html

你可能感兴趣的文章
Asp.Net MVC 获取当前 Controller Action Area
查看>>
团队现场编程实战(抽奖系统)
查看>>
Spring Security笔记:使用数据库进行用户认证(form login using database) - 菩提树下的杨过 - 博客园...
查看>>
php扩展redis链接失败,返回false
查看>>
【GOF23设计模式】--单例模式
查看>>
第五次作业
查看>>
电烙铁的使用小技巧
查看>>
cmder中文乱码、文字重叠等问题
查看>>
jenkins环境搭建
查看>>
Flink源码分析 - 剖析一个简单的Flink程序
查看>>
node模块系统常用命令
查看>>
输//ip提示找不到应用程序
查看>>
Excel中substitute替换函数的使用方法
查看>>
iOS 图形编程总结
查看>>
新年之际,盘点一些APP开发技巧
查看>>
司法机关
查看>>
bytes2HexString
查看>>
MySQL存储过程详解
查看>>
boost array
查看>>
[Dubbo开发]Zookeeper配置
查看>>