2016/10/20

hdu5908

划分子序列为等长子串,这些子串要求两两匹配,匹配的含义是各个数字出现的次数一样。10w规模。

显然剪枝的方法就是利用子长度为总长的约数。匹配其实所有都和第一个子序列去匹配就好了。先++统计第一个,其余的

遇到一次--,全部是0就匹配成功。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<string>
 6 #include<cmath>
 7 #include<set>
 8 #include<map>
 9 #include<stack>
10 #include<queue>
11 #include<algorithm>
12 #include<sstream>
13 using namespace std;
14 #define ll long long
15 #define LL long long
16 #define inf 0x3f3f3f3f
17 #define llinf 0x3f3f3f3f3f3f3f3f
18 #define FOR(i,a,b) for(int i=a;i<=b;i++)
19 #define FORD(i,a,b) for(int i=b;i>=a;i--)
20 #define fp freopen("/Volumes/未命名2/Downloads/acm/in.txt","r",stdin)
21 #define ptarr(a,x,y) for(int _=x;_<=y;_++) if(_!=y) cout<<a[_]<<" ";else cout<<a[_]<<endl;
22 #define pt1(a) cout<<a<<endl;
23 #define pt2(a,b) cout<<a<<" "<<b<<endl;
24 #define pt3(a,b,c) cout<<a<<" "<<b<<" "<<c<<endl;
25 #define pt4(a,b,c,d) cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
26 #define ln1 cout<<"----------------------"<<endl;
27 #define ln2 cout<<"~~~~~~~~~~~~~~~~~~~~~~"<<endl;
28 #define CLR(a,b) memset(a,b,sizeof(a));
29 struct node{
30     int a, b;
31     bool operator<(const node& rhs)const {
32         if(a==rhs.a)
33             return b<rhs.b;
34         else return a<rhs.a;
35     }
36 };
37 int T,n,m,K;
38 #define maxn 200000
39 int a[maxn],cnt[maxn];
40 void read(){
41     cin>>n;
42     FOR(i,1,n) cin>>a[i];
43 }
44 void solve(){
45     vector<int>ans;
46     FOR(len,1,n)
47     {
48         if(n%len!=0) continue;
49         else
50         {
51             int l=1,r=len,flg=1;
52             for(l=1,r=len;r<=n;l+=len,r+=len)
53             {
54                 FOR(k,1,len) cnt[a[k]]++;
55                 FOR(k,l,r) if(cnt[a[k]]) cnt[a[k]]--;
56                 FOR(k,1,len) if(cnt[a[k]]!=0) cnt[a[k]]=0,flg=0;
57
58             }
59             if(flg) ans.push_back(len);
60             FOR(k,1,len) cnt[a[k]]=0;
61         }
62     }
63     int sz=ans.size();
64     FOR(k,0,sz-1)
65     {
66         if(k!=sz-1) printf("%d ",ans[k]);
67         else printf("%d\n",ans[k]);
68     }
69 }
70 int main()
71 {
72     cin>>T;
73     while(T--)
74     {
75         read();
76         solve();
77     }
78     return 0;
79 }

时间: 2024-10-19 23:23:59

2016/10/20的相关文章

【Dairy】2016.10.20

今天又有人生日耶(朱子鸿)~破壳快乐! 遥犇献歌一曲<就是现在>掌声!!!!!! 开森,呲到了草莓蛋糕,很好呲的.. 然后下去跑步,拿着奶油叉子,往卜卜脸上抹,可惜zks吸引不够(坑队友),被发现了,但卜卜头怔了一下,擦到奶油了,哈哈!nozunodie 发现校猫,路面正常,随意开车.然后开始逗弄,可愛い!忍不住就抹奶油在她(ta)身上,wa,漂酿!但最后还是又给他(ta)吃了,她(ta)似乎很喜欢吃耶,哈哈. 舔啊舔曾的很可爱,我的手跟着颤动.G10似乎也想喂猫,ha,哼!这么有情调的事我坚

每周进度及工作量统计——2016.10.13-2016.10.20

项目:四则运算出题程序--GUI支持和改进 项目类型:结对项目 项目成员:张金生    张政 项目完成情况:已完成 项目改进:已变更,GUI支持,错题本,倒计时等 项目日期:2016.10.11-2016.10-13 C类别 C内容 S开始时间 E结束时间 I间隔 T净时间 P预计时间 分析 改进设计  9:25  10:39  9  65  60 编码 功能优化  10:42  22:43  163  557  500   补全功能 +18:18 +21:54  47  169  240 编码

2016/02/20 codes

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>2016/02/20</title></head><body><div id="mainDiv"> <div id = "content"> <div id = &qu

每周进度及工作量统计——2016.10.06-2016.10.13

项目:词频统计--web支持 项目类型:个人项目 项目完成情况:已完成 项目改进:新项目 项目日期:2016.10.9-2016.10.10 C类别 C内容 S开始时间 E结束时间 I间隔 T净时间 P预计时间 分析 设计  9:12  10:37  55  30  20 学习 查阅资料  10:37  11:46  0  69  30 编码 实现上传  16:03  21:53  127  223  180 优化 改进 9:56 17:41  149  316  120 文档 程序说明,随笔

Andriod学习过程(每日更新2016/10/9)

从2016/10/9日开始自学Andriod,菜鸟晋级有很多不会的东西,整理出自己觉得比较好用的笔记仅供后人参考.首先下载Andriod studio,网址http://www.android-studio.org/  安转后会提示没有还要安装SDK,SDKhttp://android-sdk.en.softonic.com/  都配置好以后新建项目, Application name:项目名称 Company Domain:公司域名 Package name:app打包名称 project l

10.19-10.22 iptables规则备份和恢10.20 firewalld的9个zone

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 # 10.19 iptables 规则备份和恢复 - 保存和备份iptables 的规则 - service iptables save 会把规则保存到 /etc/sysconfig/iptables - 把iptables规则备份到my.ipt 文件中 - iptables-save > my.ipt

个人回忆录 2014.10.20 至 2015.7.30

时间过的太快.以至于对我来说都记不起来每天做了些什么事情.工作节奏太快,下班.上班 然后再下班再上班. 每天下班后都晚上9点左右.真的看不见日出看不见日落. 从2014.10.20 到现在已经快10个月了.新的工作环境以及新的同事.上司都已熟悉了.回想刚刚开始进入这个研发团队的时候. 高原反应非常强烈,总是在疑问自己为何选择这个方向—C++ 客户端开发.为何不沿用最熟悉的.NET 平台开发.当从新学习一门新技术的时候 才发现自己太笨.有点像当年的高考,时间很紧.因为没有太多的时间用在学习上.MF

每周例行报告2016.10.07-2016.10.14

PSP 日期 类型 任务 开始时间 结束时间 被打断时间(min) 实际(min) 2016.10.07 需求分析 看spec,分析每个功能的需求 14:59 15:38 3 36 编码学习 设计文件存放.分词.词频统计,阅读同学的代码 15:44 17:11 5 82 编码学习 词频排序.读取目录下书目.主函数设计 19:00 21:26 19 127 2016.10.08 编码学习 学习重定向 15.01 15:39 2 36 代码复审 写博客.调试运行结果 15:45 17:12 6 81

(转自http://www.blogjava.net/moxie/archive/2006/10/20/76375.html)WebWork深入浅出

(转自http://www.blogjava.net/moxie/archive/2006/10/20/76375.html) WebWork深入浅出 本文发表于<开源大本营> 作者:钱安川 前言 本篇文章并没有太多WebWork 的实战代码细节.本人非常希望能充当一名导游的角色,带领读者逐步游览WebWork的功能特性和原理.在第一章,我们将提出基于三层架构的Web层需要解决的10个问题,这是本文的纵轴.围绕着纵轴,我们按照横轴的顺序逐步描述讲解:WebWork简介.WebWork入门.We