A
standard input/output

1 s, 256 MB

   x1916
B
standard input/output

1 s, 256 MB

   x3290
C
standard input/output

1 s, 256 MB

   x527
D
standard input/output

1 s, 256 MB

   x191
E
standard input/output

1 s, 256 MB

   x10

-----------

A 934A

两个人T,B有n和m个灯笼,

要从每个人选出一个灯笼,放在一起,其权值为两者之积,注意权值可以为负数

B来选择两个灯笼组合,目的是组合结果最大

T要提前删去一个灯笼,目的是让组合结果最小,注意T是知道两人的灯笼情况的

求最后B的最大值

分析:

模拟,算出所有组合,找到最大组合中T的灯笼编号A,然后删掉所有包含A的灯笼组合

注意:需要开ll,删除的时候可以用vis数组,可以用-INF,可以用最小的灯笼组合-INF

推荐vis数组和最小组合-INF,如果用-INF必须足够小,建议-2e18或者-0x3f3f3f3f3f3f3f3f

----------

B 934B

题意:

给一个n,要求输出一个数字,阿拉伯数字中封闭区域的数量等于n,不存在输出-1;,要求答案小于等于18位

分析

题目说的很不清楚,任何组合都是存在的,只是很多无法在19位之前达到而已,具体应该是"能在18位之内达到就输出,否则输出-1"

首先8是2个,6,4,9,0,是一个,

然后注意0不能做前导数字,所以不用0,在4,6,9里任选就行

一开始如果大于36(18个8)就输出-1

然后贪心就行...

---------

C 934C

题意:

给一个1,2组成的数列,可以将一个区间翻转,求最大的不下降子序列

分析:

比赛时候最后几分钟有了思路,那一瞬间脑内进行了大概1e5次博弈,然后决定放弃...

复杂度n2,qls说其实是线性的算法,orz..

首先 答案的子序列一定是111111....11222....2这样,注意有可能没有1或者没有2

递推过程,为了进行决策,先分析一波:

  1.如果当前是以2结尾的未翻转子序列最长,后面的区间根本不需要翻转.对结果没有影响

  2.如果当前是以1结尾的未翻转子序列最长,对于后面的所有翻转选择,

     以1开头的子区间一定不是最优的,简单来说 要反转肯定是从2开始,

     而如果要反转,最终的子序列一定是以2结尾,而且第一个2是在反转的区间之内,不然反转毫无意义

所以最终的决策就是:

 1.不反转,这部分的最大值可以提前On预处理得到,用递推或者前缀和都可以得到

  可以dp[x][maxn] 分别保存1结尾,2结尾+反转,也可以用一个值保存1结尾/2结尾不反转的最大值

 2,反转 我们考虑子序列的3个部分,反转区间之前,反转区间,反转区间之后

    反转区间之前,肯定是1结尾,所以直接由预处理的前缀和得到

    反转区间之后,肯定是2开头2结尾,所以也是预处理前缀和得到

    反转区间中,一定是1.....12....2这样,没有别的情况了

  那具体怎么实现?

  具体过程就是直接枚举反转区间里面,第一个2的位置

  然后分别向前和向后枚举反转区间的起点p1和终点p2

  转移的时候,利用前缀和计算,转移时间是O(1)

  记第一个2的位置为P0,显然翻转之后,P0左边的2全部到P0右边了,右边的1到了左边

  所以,P0左边的最长子序列是S1[1,p1-1]+S2[p1,p0],p0右边是S2[p2+1,n]+S1[p0,p2]

  然后比较 1结尾不反转的最大值,以2结尾且反转的最大值(区间长度为1的时候就是不反转)

  简单来说还是...On2的算法...

 /**********************
*@Name:
*
*@Author: Nervending
*@Describtion:
*@DateTime:
***********************/
#include <bits/stdc++.h>
#define show(x) cout<<#x<<"="<<x<<endl
using namespace std;
const int maxn=1e5+;
const int maxm=1e6+;
const int INF=0x3f3f3f3f;
typedef long long ll;
typedef unsigned long long ull;
int casn,n,m,k;
int num[maxn];
int s1[maxn],s2[maxn];
int dp[][maxn];
int ans;
int main() {
//#define test
#ifdef test
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif cin>>n;
for(int i=; i<=n; i++) {
cin>>num[i];
s1[i]=s1[i-]+(num[i]==);
s2[i]=s2[i-]+(num[i]==);
}
for(int i=; i<=n; i++) {
if(num[i]==) dp[][i]=max(dp[][i-],dp[][i-])+;
else {
dp[][i]=dp[][i-]+;
dp[][i]=dp[][i-];
}
}
for(int i=; i<=n; i++) {
ans=max(dp[][i],max(ans,dp[][i]));
if(num[i]!=) continue;
for(int j=; j<=i; j++) {
dp[][i]=max(dp[][i],s1[j-]+(s2[i]-s2[j-]));
}
for(int j=i; j<=n; j++) {
dp[][i]=max(dp[][i],s1[j]-s1[i]+(s2[n]-s2[j]));
}
ans=max(ans,dp[][i]+dp[][i]);
}
cout<<ans<<endl; #ifdef test
fclose(stdin);
fclose(stdout);
system("out.txt");
#endif
return ;
}

codeforces 462div.2的更多相关文章

  1. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  2. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  3. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  4. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  5. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  6. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

  7. CodeForces - 261B Maxim and Restaurant

    http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...

  8. CodeForces - 696B Puzzles

    http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...

  9. CodeForces - 148D Bag of mice

    http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...

随机推荐

  1. bzoj千题计划314:bzoj3238: [Ahoi2013]差异(后缀数组+st表+单调栈)

    https://www.lydsy.com/JudgeOnline/problem.php?id=3238 跟 bzoj3879 差不多 #include<cstdio> #include ...

  2. Spark源码剖析 - 计算引擎

    本章导读 RDD作为Spark对各种数据计算模型的统一抽象,被用于迭代计算过程以及任务输出结果的缓存读写.在所有MapReduce框架中,shuffle是连接map任务和reduce任务的桥梁.map ...

  3. 实惠VPS推荐

    1. Topmain 2. Virmach 3. BanwagonHost  [备用地址1] [备用地址2] 4. HiFormance  (跑路) 5. my.hosteons.com 6. . 以 ...

  4. 酷狗.kgtemp文件加密算法逆向

    该帖转载于孤心浪子--http://www.cnblogs.com/KMBlog/p/6877752.html 酷狗音乐上的一些歌曲是不能免费下载的,然而用户仍然可以离线试听,这说明有缓存文件,并且极 ...

  5. ButterKnife官方使用例子

    Introduction Annotate fields with @BindView and a view ID for Butter Knife to find and automatically ...

  6. 多态(upcast)减少分支判断 以及 多态继承设计、具体类型判断。

    Influenced by <java 八荣八耻>,翻了下<java编程思想> 印象中多态产生的条件:1.子类继承父类 2.父类[指针]指向子类 3.父类引用调用重写(@Ove ...

  7. 【bzoj 3669】[Noi2014]魔法森林

    Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节 ...

  8. MVC下 Area和Web同名的Controller问题

    错误如下图: 解决方案: 1:Area下的XXXAreaRegistration 添加:new string[] { "xxx.Areas.xxx.Controllers" } 2 ...

  9. c# c/s 框架读取的配置文件时是app.exe.config

    c# c/s 框架读取的配置文件时是app.exe.config, 一般在bin中间中俄debug中或者Release中

  10. 理解JS的执行环境

    执行环境(Execution context,EC)或执行上下文,是JS中一个极为重要的概念 EC的组成 当JavaScript代码执行的时候,会进入不同的执行上下文,这些执行上下文会构成了一个执行上 ...