hdu 4928 Series 2 (优化+模拟)
题意:
一个含n个数的序列a,每两个相邻的数相减得到一个新数,这些数组成一个新的序列。
假设全部得到的序列都满足非严格的单调性。则原序列为nice series。假设给出的序列
本来不满足单调性。它是ugly series。否则输出k,表示前k个序列都满足单调性,第k+1不满足。
算法:
模拟合并和推断单调性,假设不优化会Tle.
假设去掉前导0和后导0,由于0-0还是0,省去一部分操作。
可是为了避免得到的下一个序列的推断有误,应该前后各留一个0.
比方:
7
1 1 1 3 5 7 9
第一次变换得到 0 0 2 2 2 2 -->满足单调性
第二次 假设全然忽略前导0 则下一个序列变为 0 0 0
而实际上应该是 0 2 0 0 0不满足单调性
- #include<cstdio>
- #include<iostream>
- #include<cstring>
- #define maxn 100010
- using namespace std;
- typedef long long ll;
- ll a[maxn];
- int main()
- {
- int T,n;
- scanf("%d",&T);
- while(T--)
- {
- scanf("%d",&n);
- for(int i=1;i<=n;i++)
- scanf("%I64d",&a[i]);
- int l = 1,r = n;
- int k = 0,f1,f2;
- for(int i=0;i<n;i++)
- {
- while(l<r && !a[l])
- l++;
- if(l>1) //因为把前导0和后导0去掉了,可能会影响下一轮的推断
- l = l-1; //所曾经面留一个0
- else l = 1; //本来就没有前导0
- while(l<r && !a[r])
- r--;
- if(r<n-i)
- r = r+1; //后面留一个0
- else r = n-i; //本来就没有后导0
- if(l>=r) break;
- f1 = f2 = 0;
- for(int d=l;d<r;d++)
- {
- if(a[d+1]>a[d]) //假设单调递增
- f1 = 1;
- if(a[d+1]<a[d]) //假设单调递减
- f2 = 1;
- }
- if(f1 && f2) //既有单调递增的段也有递减的部分,即不满足单调性
- {
- if(k==0)
- printf("ugly series\n");
- else printf("%d\n",k-1);
- break;
- }
- for(int j=l;j<r;j++)
- a[j]=a[j+1]-a[j];
- r--; //得到下一个序列,个数减一
- k++;
- }
- if(!f1 || !f2)
- printf("nice series\n");
- }
- return 0;
- }
- /*
- 7
- 1 1 1 3 5 7 9
- ans = 1
- */
hdu 4928 Series 2 (优化+模拟)的更多相关文章
- HDU 4928 Series 2
有了题解以后这题就成了一个模拟题.不过写了好久才把它写对…… Sad #include <iostream> #include <cstdio> #include <cs ...
- HDU 4927 Series 1(推理+大数)
HDU 4927 Series 1 题目链接 题意:给定一个序列,要求不断求差值序列.直到剩一个,输出这个数字 思路:因为有高精度一步.所以要推理一下公式,事实上纸上模拟一下非常easy推出公式就是一 ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- hdu 2829 Lawrence(斜率优化DP)
题目链接:hdu 2829 Lawrence 题意: 在一条直线型的铁路上,每个站点有各自的权重num[i],每一段铁路(边)的权重(题目上说是战略价值什么的好像)是能经过这条边的所有站点的乘积之和. ...
- HDU 2920 分块底数优化 暴力
其实和昨天写的那道水题是一样的,注意爆LL $1<=n,k<=1e9$,$\sum\limits_{i=1}^{n}(k \mod i) = nk - \sum\limits_{i=1}^ ...
- HDU 1014 Uniform Generator(模拟和公式)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1014 Uniform Generator Time Limit: 2000/1000 MS (Java ...
- 多重背包问题:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(HDU 2191)(二进制优化)
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 HDU 2191 一道裸的多重背包问题: #include<iostream> #include<algorithm> #i ...
- HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Thickest Burger Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))
Ugly Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
随机推荐
- Android API之android.view.View.MeasureSpec
android.view.View.MeasureSpec MeasureSpec是View的内部类 public static class MeasureSpec MeasureSpec封装从par ...
- 【Redis】windows环境下安装redis服务器,并配置php的redis扩展
win7示例: 1.下载Redis服务器 : https://github.com/dmajkic/redis/downloads:(随便下,建议不要太老的) 2.在D:\phpStudy\ 新建Re ...
- cmd启动JMeter
<配置cmd当前变量启动JMeter> 前因: 不想配置当前windows的环境变量,减少配置污染,故自己写一个启动脚本.每次启动直接双击就可以了. 启动脚本和目录结构是下面这样的: 脚本 ...
- hdu 1022 Train Problem I(栈的应用+STL)
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- spring in action 8.1 使用Spring web flow
一.说明 Spring Web Flow是spring MVC的扩展,它支持基于流程的应用程序,他将流程的定义和实现流程行为的类和视图分离开来. 1.1 spring中配置web flow,目前需要在 ...
- unity, water cube
<纪念碑谷>里有一关开始是一个宝箱展开后里面有一个water cube,其中还有小鱼在游.如下截图: 因为我们知道<纪念碑谷>是unity做的,而现在正开始学unity,所以也 ...
- Object-C中的字符串对象1-不可变字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...
- beyond compare比较工具设置
beyond compare用于比较的工具,云盘:比较 链接: https://pan.baidu.com/s/1boZbB0F
- dubbo接口测试
1.下载所需工具eclipse或intellij idea,下载maven,maven中config/settings.xml中要添加公司(测试人员公司)的maven库,不然被测dubbo服务jar包 ...
- 0070 过滤器调用Spring的bean操作数据库
假设有这样的需求:将用户每次请求的ip.时间.请求.user-agent存入数据库,很明显可以用过滤器实现,在过滤器中获取到这些数据调用mybatis的mapper存入数据库,但问题来了:mybati ...