实现技巧之分段

POJ3273

按每个月的权值进行分段

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cmath>
 4 #include<cstdio>
 5 #include<cstring>
 6 #include<vector>
 7 #include<set>
 8 #include<queue>
 9 #define pii pair<int,int>
10 #define fi first
11 #define se second
12 #define mp make_pair
13 #define pb push_back
14 #define rep(i, a, b) for(int i=(a); i<(b); i++)
15 #define sz(a) (int)a.size()
16 #define de(a) cout << #a << " = " << a << endl
17 #define dd(a) cout << #a << " = " << a << " "
18 #define all(a) a.begin(), a.end()
19 #define endl "\n"
20 #define INF 0x3f3f3f3f
21 #include <iostream>
22 using namespace std;
23 #define M 200000+
24 const int maxn=1e5+7;
25 #define eps 1e-5
26 typedef long long ll;
27 ll n,m,sum;
28 double a[maxn];
29 bool check(ll mid)
30 {
31     int ret=0,cnt=1;
32     rep(i,0,n){
33         ret+=a[i];
34         if(ret>mid){
35             cnt++;
36             ret=a[i];
37         }
38     }
39     return cnt<=m;
40 }
41 int main()
42 {
43     cin>>n>>m;
44     ll max=0;
45     rep(i,0,n){
46         cin>>a[i],sum+=a[i];if(a[i]>max)max=a[i];
47     }
48     ll l=max,r=sum,ans=0,mid;
49     while(r>=l)
50     {
51         mid=(r+l)/2;
52         if(check(mid))r=mid-1;
53         else l=mid+1;
54     }
55     cout<<mid<<endl;
56     return 0;
57  } 

最长递增子段

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<vector>
 5 #include<cstring>
 6 #include<map>
 7 #include<set>
 8 #include<cmath>
 9 #include<queue>
10 #include<bitset>
11 #include<utility>
12 #include<functional>
13 #include<iomanip>
14 #include<sstream>
15 #include<ctime>
16 #include<cassert>
17 #define A first
18 #define B second
19 #define mp make_pair
20 #define pb push_back
21 #define pw(x) (1ll << (x))
22 #define sz(x) ((int)(x).size())
23 #define all(x) (x).begin(),(x).end()
24 #define rep(i,l,r) for(int i=(l);i<(r);i++)
25 #define per(i,r,l) for(int i=(r);i>=(l);i--)
26 #define FOR(i,l,r) for(int i=(l);i<=(r);i++)
27 #define eps 1e-9
28 #define PIE acos(-1)
29 #define cl(a,b) memset(a,b,sizeof(a))
30 #define fastio ios::sync_with_stdio(false);cin.tie(0);
31 #define lson l , mid , ls
32 #define rson mid + 1 , r , rs
33 #define ls (rt<<1)
34 #define rs (ls|1)
35 #define INF 0x3f3f3f3f
36 #define lowbit(x) (x&(-x))
37 #define sqr(a) a*a
38 #define ll long long
39 #define ull unsigned long long
40 #define vi vector<int>
41 #define pii pair<int, int>
42 #define dd(x) cout << #x << " = " << (x) << ", "
43 #define de(x) cout << #x << " = " << (x) << "\n"
44 #define endl "\n"
45 using namespace std;
46 //**********************************
47 const int maxn=135+300;
48 int a[maxn],front[maxn],rear[maxn];
49 int n;
50 //**********************************
51
52 //**********************************
53 int main()
54 {
55     cin>>n;
56     int cnt=1;
57     FOR(i,1,n){
58         scanf("%d",&a[i]);
59         if(a[i]>a[i-1]&&i!=1)cnt++;
60         else cnt=1;
61         rear[i]=cnt;
62         int tmp=cnt;
63         do{
64             front[i-tmp+1]=tmp;
65         }while(tmp--);
66     }
67 //    FOR(i,1,n){
68 //        dd(i);dd(front[i]);de(rear[i]);
69 //    }
70 //    per(i,n-1,1){
71 //        front[i-rear[i]]=front[i];
72 //    }
73     int ans=1;
74     FOR(i,1,n){
75 //        ans=max(ans,front[i]);
76 //        dd(i);dd(front[i]);de(rear[i]);
77         if(a[i+1]>=a[i-1]+2)ans=max(ans,front[i+1]+rear[i-1]+1);
78         else {
79             ans=max(ans,1+rear[i-1]);
80             ans=max(ans,1+front[i+1]);
81         }
82     }
83     cout<<ans<<endl;
84     return 0;
85 }

原文地址:https://www.cnblogs.com/klaycf/p/9644602.html

时间: 2024-08-04 07:45:07

实现技巧之分段的相关文章

word项目编号和分段使用技巧

取消段前换页 项目符号和编号 原文地址:https://www.cnblogs.com/celine/p/10347610.html

sas数据读取详解 四种读取数据方式以及数据指针的位置 、读取mess data的两个小工具、特殊的读取技巧、infile语句及其选项(dsd dlm missover truncover obs firstobs)、proc import、自定义缺失值

(The record length is the number of characters, including spaces, in a data line.) If your data lines are long, and it looks like SAS is not reading all your data, then use the LRECL= option in the INFILE statement to specify a record length at least

mysql写Shell小技巧

今天终于在表哥的帮助下解决了文件导入/出这个问题了.(很菜逼的一个问题),然后将最近看到的文章都自己测试了下,顺便奉上记录.1.Mysql数据库支持union的时候写文件小技巧: 采用常规的union写入,可以看到前面的字段占位数肯定也会被写入,替换成null也是一样的结果,这个对于写shell没啥大碍,但是如果用来写bat,mof,vbs等文件就会出问题了,那么怎么去掉这个只写入我们需要的内容呢?采用hex编码就好了. 将我们要写入的内容使用hex编码在分段写在每个字段位上,这样就可以只写入我

SEO:提高关键词排名的28个SEO技巧

28个让关键词排名明显改观的SEO技巧: 关键词位置.密度.处理 URL中出现关键词(英文) 网页标题中出现关键词(1-3个) 关键词标签中出现关键词(1-3个) 描述标签中出现关键词(主关键词重复2次) 内容中自然出现关键词 内容第一段和最后一段出现关键词 H1,H2标签中出现关键词 导出链接锚文本中包含关键词 图片的文件名包含关键词 ALT属性中出现关键词 关键词密度6-8% 对关键词加粗或斜体 内容质量.更新频率.相关性 原创的内容最佳,切忌被多次转载的内容 内容独立性,与其他页面至少30

MarkDown写作技巧

# MarkDown写作技巧 #年轻的我们往往苦恼于没有充实的社会经历.社会阅历,很难有较强的个人能力.个人魅力!就个人能力而言,无非分为两种:“吸收能力”和“输出能力”.吸收能力主要体现了个人对外界知识的摄入能力,主要包括:学习能力.阅读能力.听取能力.分析能力.理解能力等,这些能力可以帮助自己吸取理解进而加以分析自身的外界知识.与吸收能力相比,输出能力更是体现个人社会价值的一种能力了,其主要包括:概括能力.总结能力.表达能力.沟通能力.讲演能力和写作能力等.为了更好地表达与沟通,也许我们要做

(转)Facebook内部分享:26个高效工作的小技巧

春节假期马上就要结束了,该收收心进入新一年的工作节奏了~分享 26 个高效工作的小技巧,希望对大家有所帮助~(我发现自己只有最后一条执行得很好,并且堪称完美!) 1.时间常有,时间优先. 2.时间总会有的:每天只计划4-5 小时真正的工作. 3.当你在状态时,就多干点:不然就好好休息:有时候会连着几天不是工作状态,有时在工作状态时却又能天天忙活 12 小时,这都很正常的. 4.重视你的时间,并使其值得重视:你的时间值 1000 美元/小时,你得动起来. 5.不要多任务,这只会消耗注意力:保持专注

Facebook内部分享:26个高效工作的小技巧

春节假期马上就要结束了,该收收心进入新一年的工作节奏了~分享 26 个高效工作的小技巧,希望对大家有所帮助~(我发现自己只有最后一条执行得很好,并且堪称完美!) 1.时间常有,时间优先. 2.时间总会有的:每天只计划4-5 小时真正的工作. 3.当你在状态时,就多干点:不然就好好休息:有时候会连着几天不是工作状态,有时在工作状态时却又能天天忙活 12 小时,这都很正常的. 4.重视你的时间,并使其值得重视:你的时间值 1000 美元/小时,你得动起来. 5.不要多任务,这只会消耗注意力:保持专注

Word 使用技巧

文档的写作,例来分为latex与word两大阵营.一个是论文界的宠儿,一个是平民的所见即所得.看起来好像前者更加牛一些. 本来我也是觉得latex比word好.但是使用latex时苦于找不到一个好的编辑软件.Ctex自带的WinEdit交互简直是一团渣.作为Vim的爱好者,又研究了一段时间latex-suite,并在一段时间以此为主战线,甚至连画图都是使用Tikz. 有人说,你觉得latex比word好,那是因为你没有花和研究latex一样的时间去研究word.后来在花了一定时间研究word之后

Facebook内部分享:25个高效工作的小技巧

Facebook内部分享:25个高效工作的小技巧 Facebook 内部分享:不论你如何富有,你都赚不到更多的时间,你也回不到过去.没有那么多的假如,只有指针滴答的时光飞逝和你应该好好把握的现在,以下25张PPT的分享将为您带来时间价值管理的技巧. 1.时间常有,时间优先. 2.时间总会有的: 每天只计划 4-5 小时真正的工作. 3.当你在状态时,就多干点:不然就好好休息: 有时候会连着几天不是工作状态,有时在工作状态时却又能天天忙活 12 小时,这都很正常的. 4.重视你的时间,并使其值得重