HDU3474 Necklace
原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=3474
单调队列。
这题的模型可以这样描述:给一个只由1和-1组成的循环序列,求以每个点为起点且长度最长为n的子串的最小值。到这一步,应该能想到单调队列的解法了。
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #define N 2000005 5 6 int sum[N], a[N], q[N], n, ok1[N], ok2[N]; 7 8 void cal(int ok[]) 9 { 10 int i, head, tail, t = 2 * n; 11 12 for(i = 1; i <= t; i ++) 13 sum[i] = sum[i - 1] + a[i]; 14 15 for(head = tail = 0, i = 1; i < n; i ++) 16 { 17 while(head < tail && sum[i] <= sum[q[tail - 1]]) 18 tail --; 19 q[tail++] = i; 20 } 21 22 for(i = n; i <= t; i ++) // 这里i是区间右端点 23 { 24 while(head < tail && q[head] < i - n + 1) 25 head++; 26 while(head < tail && sum[i] <= sum[q[tail - 1]]) 27 tail--; 28 q[tail++] = i; 29 30 ok[i - n] = (sum[q[head]] - sum[i - n] >= 0); 31 } 32 } 33 34 int main() 35 { 36 int t, i, ans, cas; 37 char c; 38 scanf("%d\n", &t); 39 for(cas = 1; cas <= t; cas ++) 40 { 41 for(n = 0; (c = getchar()) != '\n';) 42 a[++n] = (c == 'C' ? 1 : -1); 43 44 for(i = 1; i <= n; i ++) 45 a[n + i] = a[i]; 46 47 cal(ok1); 48 49 std::reverse(a + 1, a + 2 * n + 1); // 算另一个方向 50 cal(ok2); 51 52 for(ans = 0, i = 1; i <= n; i ++) 53 ans += ok1[i] | ok2[n - i]; 54 printf("Case %d: %d\n", cas, ans); 55 } 56 return 0; 57 }
转载于:https://www.cnblogs.com/huangfeihome/archive/2012/10/17/2728501.html
HDU3474 Necklace相关推荐
- HDU 5727 Necklace
题目:Necklace 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5727 题意:要用n个阳石和n个阴石来串一个项链(环状),规定阳石旁边只能是阴石,阴 ...
- HDU 5730 Shell Necklace(生成函数 多项式求逆)
Shell Necklace 由题意可得f[n]=∑i=1na[i]f[n−i]f[n] = \sum\limits_{i = 1} ^{n} a[i] f[n - i]f[n]=i=1∑na[i] ...
- CF1361C. Johnny and Megan‘s Necklace(构造,欧拉回路,传递闭包)
CF1361C. Johnny and Megan's Necklace Solution 真duliu,快做吐了... 刚开始想了一个假做法(但前面还是很真的). 假的做法大概是你发现这个东西具有传 ...
- UVa10054 The Necklace 欧拉回路
如果图G中的一个路径包括每个边恰好一次,则路径称为欧拉路径. 如果一个回路是欧拉路径,则称为欧拉回路.(即起点终点相同的欧拉路) 有欧拉回路的称为欧拉图,有欧拉路径但无欧拉回路的称为半欧拉图. 无向图 ...
- Happy Necklace
happy necklace 题意:一个项链是由红蓝两个珠子构成,项链不是环,是一条线,要求每一个素数长度红色珠子的个数大于等于蓝色珠子的个数,给你n个珠子问符合条件的项链的个数. 思路:一看取模就知 ...
- HDU 5730 Shell Necklace
HDU 5730 Shell Necklace 原题连接: http://acm.hdu.edu.cn/showproblem.php?pid=5730 闻题而来. 设组合成长度为 k k的方案数量为 ...
- Accepted Necklace HDU - 2660
Accepted Necklace HDU - 2660 WA wa了两发又双叒叕是因为没读清楚题我裂开 AC代码 好家伙一手最low的dp竟然过了,我还一直不敢交hhhh #include < ...
- HDU-2660 Accepted Necklace
GDUT 2020寒假训练 专题一 D 原题链接 HDU-2660 Accepted Necklace GDUT-专题1-D BFS/DFS 题目大意 有N个石头想要从中选出K个做成项链,每颗石头有自 ...
- USACO Section 1.2 Broken Necklace
题目 题目分析 推的过程 需要避免的坑 整体代码 USACO的题解 题目 题目描述 输入描述 Line 1: N, the number of beads Line 2: a string of N ...
最新文章
- iOS 视频捕获系列Swift之AVFoundation(一)
- 从一个提问引发到你是怎么看待编程语言是一种工具这句话的?【笔记自用】
- 一文看透 Redis 分布式锁进化史(解读 + 缺陷分析)
- lock和wait+signal
- 【渝粤教育】 国家开放大学2020年春季 1108钢结构(本) 参考试题
- 【java8新特性】——Optional详解(三)
- 锻炼编程逻辑_通过锻炼提高编程技巧
- 【BZOJ1815BZOJ1488】有色图图的同构,Polya计数+暴力
- Eigen教程(6)之高级初始化方法
- OSChina 周二乱弹 —— 这样成功要到小护士姐姐的微信
- 从零实现深度学习框架——逻辑回归简介
- 超级简单:如何列出目录下所有文件的超链接
- php 61850,基于IEC61850智能电子设备(IED)系统解决方案.PDF
- 如何在计算机安装WPS,windowsxp系统电脑怎样安装wps插件
- Eclipse下载安装配置测试(超详细)
- 电脑公司Windows7_X86旗舰版V0911
- PS制作橙子鱼缸、折纸效果字
- Android查看手机sqlite数据库(可视化)
- 关于程序员的问题,我是看大佬说的不是我说的。
- JS 封装一个判断闰年平年的方法 aa(nian)
热门文章
- 解决Docker上安装RabbitMQ后Web管理页面打不开的问题
- IO流——流的分类、InputStream、OutputStream、Reader、Writer等
- tensorflow笔记:模型的保存与训练过程可视化
- android shell hello world,Android Framework 之HelloWorld(三)
- JZOJ 5234. 【NOIP2017模拟8.7A组】外星人的路径
- C# 调用C++写的dll的实现方法
- C#、C++、JAVA中虚函数和抽象函数的概念对比
- map怎么转化dto_java实现Object和Map之间的转换3种方式
- [转载]关于申请国外博后的一点经验和想法
- 分子计算机已经问世,纳米计算机指日可待?