51nod——1285 山峰和分段(暴力出奇迹)

  要求每段的点数都一样,因此分的段数cnt肯定是n的因子,要求每段都有山峰,因此cnt肯定小于等于山峰数量。分段的宽度d=n/cnt,对山峰数量做一个前缀和,检查一下每一段的山峰数量是否没有增加即可。

  

 1 ///暴力枚举段数
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 #define maxn 50050
 5 int high[maxn],num[maxn];
 6
 7 int main(){
 8     std::ios::sync_with_stdio(0);
 9     cin.tie(0);
10     int n; cin>>n;
11     for(int i=1;i<=n;++i) cin>>high[i];
12     for(int i=2;i<=n-1;++i){
13         num[i]=num[i-1];
14         if(high[i]>high[i-1]&&high[i]>high[i+1]) ++num[i];
15     }
16     int cnt=num[n]=num[n-1];
17
18     int d;
19     bool flag;
20     int ans=0;
21     while(cnt--){
22         if(n%(cnt+1)) continue;
23         d=n/(cnt+1);
24         flag=1;
25         for(int i=d;i<=n;i+=d){
26             if(num[i]-num[i-d]==0){
27                 flag=0;
28                 break;
29             }
30         }
31         if(flag){
32             ans=cnt+1;
33             break;
34         }
35     }
36     cout<<ans<<endl;
37
38     return 0;
39 }

原文地址:https://www.cnblogs.com/noobimp/p/10947057.html

时间: 2024-08-06 14:20:36

51nod——1285 山峰和分段(暴力出奇迹)的相关文章

SID1190471 / 烦人的幻灯片 暴力出奇迹 !!!!!!!!!!!!!!!!!!

PID221 / 烦人的幻灯片 ☆ 提交你的代码 查看讨论和题解 你还木有做过哦 我的状态 查看最后一次评测记录 质量还不能统计出来哦~ 题目评价 质量 无 ★★★★★ ★★★★☆ ★★★☆☆ ★★☆☆☆ ★☆☆☆☆ 0% 0% 0% 0% 0% ★ ★ ★ ★ ☆ 通过人数 186 / 337 通过统计 最短耗时 0ms 最小内存 0KB 其它 题目标签 类型 其它 题目描述 李教授于今天下午做一个非常重要的演讲.不幸的是他不是一个非常爱整洁的人,他把自己做演讲要用的幻灯片随便堆放在一起.因此

烦人的幻灯片 暴力出奇迹

题目描述 李教授于今天下午做一个非常重要的演讲.不幸的是他不是一个非常爱整洁的人,他把自己做演讲要用的幻灯片随便堆放在一起.因此,演讲之前他不得不去整理这些幻灯片.做为一个讲求效率的学者,他希望尽可能简单地完成它.情况是这样,教授这次演讲一共要用n张幻灯片(n<=26),这n张幻灯片按照演讲要使用的顺序已经用数字1,2,…,n在上面编上了号.因为幻灯片是透明的,所以我们不能一下子看清每一个数字所对应的幻灯片. 现在我们用大写字母A,B,C,...再次把幻灯片依次编上号,如样例所示,我们可以很快发

莫队算法——暴力出奇迹

简介: 莫队这个算法是莫涛提出的. ? 用于处理一类不带修改的区间查询问题的离线 算法,其核心在于利用曼哈顿距离最小生成树 算法对区间处理顺序进行处理 . --zrt课件 这个算法本质上其实是暴力,但是由于可以离线处理循环的顺序,使得复杂度可以从n^2降到n^根号n甚至更低. 对于可以找到以下特点的题可以尝试使用莫队: 1.莫队算法是离线处理一类区间不修改查询类问 题的算法.就是如果你知道了 [ L,R] 的答案.你 可以在 O(1 ) 或 O( lgn ) 的 时间下得到 [ L,R 1] 和

Post Lamps CodeForces - 990E(暴力出奇迹?)

题意: 在一个从0开始的连续区间上  放置几个小区间,使得这些小区间覆盖整个大区间,不同长度的小区间有不同的花费,其中有m个点,小区间的左端点不能放在这些点上 解析: 显然如果0是这m点中的一个 则无解 然后就是标记上连续不能放的点  然后遍历每一个小区间  从0开始放 求花费最小值即可 · 注意最大值的设置 代码都加了1,从1开始 #include <bits/stdc++.h> using namespace std; const int maxn = 2000006, INF = 0x7

D. Berland Fair (暴力出奇迹 + 时间复杂度证明)

题目:传送门 题意:有 n 个糖果,第 i 个糖果卖 ai 块钱,你现在有 T 块钱,你每次都从第一块糖果开始看,如果你的钱数够买当前的糖果,那么你就会花钱买它,如果你看完了所有 n 块糖果,那么你会从 1 重新开始看,直到你的钱数小于最便宜的糖果的价格. 1 <= n <= 2e5, 1 <= ai <= 1e9, 1 <= T <= 1e18 思路:直接暴力就行了. 最多跑 logT 次 for,那时间复杂度才 o(n*logT) 完全可接受. 关于复杂度的证明:

Topcoder SRM 638 DIV 2 (大力出奇迹)

水题,就是一个暴力.大力出奇迹. Problem Statement   There is a narrow passage. Inside the passage there are some wolves. You are given a vector <int> size that contains the sizes of those wolves, from left to right. The passage is so narrow that some pairs of wolv

codeforces 514C Watto and Mechanism (分段暴力)

codeforces 514C Watto and Mechanism (分段暴力) 题意: 给出一个包含n个单词的字典,给出m个待查询单词,如果单词在有且仅有一个字符不相同的情况下可以在字典里找到,则输出YES,否则输出NO 限制: 0 <= n,m <= 3*10^5; 总字符长度不大于6*10^5 思路: 分段暴力. 以查询单词长度为500分段: 查询单词长度<500则:采用set查询,复杂度为600*500*500=1.5*10^8 查询单词长度>500则:暴力查询,复杂度

51nod 1732 婚姻介绍所 (暴力 / DP)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1732 题目: 51nod除了在做OJ之外,还开展了很多副业.婚姻介绍所就是其中之一. 对于一个客户,我们可以使用一个字符串来描述该客户的特质. 假设现在我们有两个客户A和B. A的特质字符串为:abcdefg B的特质字符串为:abcxyz 则A和B的匹配度f(A, B)为A和B的最长公共前缀的长度,即len('abc') = 3 由于最近51nod经费紧张,

51Nod1285 山峰和分段

Problem 用一个长度为N的整数数组A,描述山峰和山谷的高度.山峰需要满足如下条件, 0 < P < N - 1 且 A[P - 1] < A[P] > A[P + 1]. 现在要将整个山分为K段,要求每段的点数都一样,且每段中都至少存在一个山峰,问最多可以分为多少段. Solution 枚举因数,前缀和优化查询. 复杂度是因子之和,试了一下,1e6之内一个大于5*n的也没有,最大比率4.5多一点. Code #include<stdio.h> #include&l