A. Regular Bracket Sequence

题意:给出四种括号的数量 ((  )) ()  )( 问是否可以组成合法的序列(只能排序不能插在另外一个的中间)

思路: 条件一:一个或 n个)( 都可以组成 )()()( 这种结构 这只需要 一个((和一个))就可以合成合法的序列

   条件二: (( 和))需要相等

()本身就合法不用管

  1. ude<bits/stdc++.h>
  2. #define FOR(i,f_start,f_end) for(int i=f_startl;i<=f_end;i++)
  3. #define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
  4. using namespace std;
  5. const int maxn=;
  6. const int maxm=2e4+;
  7. int main(){
  8. int cnt1,cnt2,cnt3,cnt4;
  9. cin>>cnt1>>cnt2>>cnt3>>cnt4;
  10. if(cnt1==cnt4&&(cnt3&&cnt1||!cnt3)){
  11. printf("");
  12.  
  13. }
  14. else printf("");
  15. return ;
  16. }

B. Discounts

题意:给出n个数a 和m个数 q      求 选择q个数a 求他们的和-q个数中最小的那个 +剩余的数 的最小值

思路 :直接sort a  求出总和a 然后暴力  每次减去可以删除的那个数即可

  1. #include<bits/stdc++.h>
  2. #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
  3. #define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
  4. using namespace std;
  5. const int maxn=3e5+;
  6. typedef long long ll;
  7. ll a[maxn],q[maxn],sum[maxn];
  8. int main(){
  9. int n;
  10. scanf("%d",&n);
  11. FOR(i,,n)scanf("%I64d",&a[i]);
  12. sort(a+,a++n);
  13. FOR(i,,n)sum[i]=sum[i-]+a[i];
  14. int m;
  15. scanf("%d",&m);
  16. int ans=0x3f3f3f3f;
  17. FOR(i,,m-)scanf("%I64d",&q[i]);
  18. FOR(i,,m-){
  19. cout<<sum[n]-sum[n-q[i]+]+sum[n-q[i]]<<endl;;
  20. }
  21.  
  22. return ;
  23. }
C. Painting the Fence
题意:给出q个区间 问q-2个区间的最大覆盖 n,q<5000
思路:给每个区间计数例如 给出区间 l--r  则FOR(i,l,r)cnt[i]++;
然后先枚举第一个删的区间 把这个要删的区间cnt[i]--  然后统计现在还有多少个区间可以用 这个还有一个重点 统计cnt为1的点的前缀和 这样枚举第二个删的区间时只要 多少个区间能用 - 第二个区间删去能使多少个点为0就可以计算了,很巧妙
  1. #include<bits/stdc++.h>
  2. #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
  3. #define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
  4. #define F first
  5. #define S second
  6. #define pii pair<int ,int >
  7. #define mkp make_pair
  8. using namespace std;
  9. const int maxn=+;
  10. typedef long long ll;
  11. pii a[maxn];
  12. int sum[maxn],cnt[maxn];
  13. int main(){
  14. int n,q;
  15. scanf("%d%d",&n,&q);
  16. FOR(i,,q-){
  17. scanf("%d%d",&a[i].F,&a[i].S);
  18. FOR(j,a[i].F,a[i].S)cnt[j]++;
  19. }
  20. // for(int i=1;i<=n;i++)cout<<cnt[i];
  21. int ans=;
  22. FOR(i,,q-){
  23.  
  24. FOR(j,a[i].F,a[i].S)cnt[j]--;
  25. int tot=;
  26. FOR(k,,n){
  27. tot+=(cnt[k]>);
  28. if(cnt[k]==)sum[k]=;
  29. else sum[k]=;
  30. sum[k]+=sum[k-];
  31. }
  32. // FOR(k,1,n)cout<<sum[k];
  33. // cout<<endl;
  34. int tmp=;
  35. FOR(j,,q-){
  36.  
  37. if(i==j)continue;
  38. tmp= max(tmp,tot-(sum[a[j].S]-sum[a[j].F-]));
  39. //if(tmp==3)cout<<i<<" "<<j<<" "<<tot<<" "<<sum[a[i].S]<<" "<<sum[a[i].F-1]<<endl;
  40. }
  41. FOR(j,a[i].F,a[i].S)cnt[j]++;
  42. ans=max(tmp,ans);
  43. }
  44. cout<<ans<<endl;
  45. return ;
  46. }

F. Clear the String

题意:祖玛游戏 问最小多少次能全部消掉

思路 :区间dp[i][j] 表示 i 到j全部消掉要多少次  初始化 当s[i]==s[j]时dp[l][j]=dp[l+1][r-1]+1 不能时dp[l][r]=min(dp[l+1][r],dp[l][r-1])+1;然后在l r区间dp[l][r]=min(dp[l][r],dp[l][k]+dp[k][r]-1); 这里k取了两次 所以要减1

  1. #include<bits/stdc++.h>
  2. #define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
  3. #define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
  4. #define F first
  5. #define S second
  6. #define pii pair<int ,int >
  7. #define mkp make_pair
  8. using namespace std;
  9. const int maxn=+;
  10. char s[maxn];
  11. int dp[maxn][maxn];
  12.  
  13. int main(){
  14. int n;
  15. scanf("%d",&n);
  16. scanf("%s",s+);
  17. FOR(i,,n)dp[i][i]=;
  18. FOR(len,,n){
  19. for(int l=,r=len;r<=n;r++,l++)
  20. {
  21. if(s[l]==s[r])dp[l][r]=dp[l+][r-]+;
  22. else dp[l][r]=min(dp[l+][r],dp[l][r-])+;
  23. FOR(k,l,r){
  24. dp[l][r]=min(dp[l][r],dp[l][k]+dp[k][r]-);
  25. }
  26. }
  27. }
  28. cout<<dp[][n]<<endl;
  29.  
  30. return ;
  31. }

Educational Codeforces Round 61 (Rated for Div. 2)的更多相关文章

  1. Educational Codeforces Round 61 (Rated for Div. 2) D,F题解

    D. Stressful Training 题目链接:https://codeforces.com/contest/1132/problem/D 题意: 有n台电脑,每台电脑都有初始电量ai,也有一个 ...

  2. Educational Codeforces Round 61 (Rated for Div. 2) E 多重背包优化

    https://codeforces.com/contest/1132/problem/E 题意 有8种物品,重量是1~8,每种数量是\(cnt[i]\)(1e16),问容量为W(1e18)的背包最多 ...

  3. Educational Codeforces Round 61 (Rated for Div. 2)-C. Painting the Fence 前缀和优化

    题意就是给出多个区间,要求去掉两个区间,使得剩下的区间覆盖范围最大. 当然比赛的时候还是没能做出来,不得不佩服大佬的各种姿势. 当时我想的是用线段树维护区间和,然后用单点判0,维护区间间断个数.然后打 ...

  4. Educational Codeforces Round 61 (Rated for Div. 2) E. Knapsack

    非常经典的dp题,因为1至8的最大公约数是840,任何一个数的和中840的倍数都是可以放在一起算的, 所以我只需要统计840*8的值(每个数字(1-8)的sum%840的总和),剩下都是840的倍数 ...

  5. Educational Codeforces Round 61 (Rated for Div. 2) G(线段树,单调栈)

    #include<bits/stdc++.h>using namespace std;int st[1000007];int top;int s[1000007],t[1000007];i ...

  6. Educational Codeforces Round 61 (Rated for Div. 2)F(区间DP,思维,枚举)

    #include<bits/stdc++.h>typedef long long ll;const int inf=0x3f3f3f3f;using namespace std;char ...

  7. Educational Codeforces Round 61 (Rated for Div. 2)D(二分,模拟,思维)

    #include<bits/stdc++.h>using namespace std;typedef long long ll;int n,k;ll a[200007],b[200007] ...

  8. Educational Codeforces Round 37 (Rated for Div. 2)C. Swap Adjacent Elements (思维,前缀和)

    Educational Codeforces Round 37 (Rated for Div. 2)C. Swap Adjacent Elements time limit per test 1 se ...

  9. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

随机推荐

  1. 朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则

    朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则 [下载本文PDF进行阅读] 本文有两个部分,先介绍一下给飞机换引擎这个事情我的一些经验,因为篇幅较短然后介绍一下安全意识方面的一些心得. ...

  2. 根据指定条件使CheckBox 无法选中

    var trList = $("#tab1").children("tr")for (var i=0;i<trList.length;i++) {var ...

  3. 面试题-如何测试一个APP

    问: 假如给你一个APP,你应该如何测试,分别从哪些方面来针对该APP进行测试. --- 1.安装.卸载测试 测试软件在不同操作系统(Android.iOS)下安装是否正常.软件安装后的是否能够正常运 ...

  4. HNOI2013 BZOJ3144 切糕

    在n×m的表格上,在(x,y)填v的代价是w(x,y,v),且相邻格子填的数相差≤d.求填满表格的最小代价.n,m,maxv≤40. 每个点上选择一个数填,因此将上面的数串起来.考虑限制条件,矛盾条件 ...

  5. Daily Scrum 12.19

    Member Task on 12.19 Task on 12.20 仇栋民 请假 完成Task972 : 完成活动评分基础功能 康家华 完成 Task1004 : 百度map UI优化 完成Task ...

  6. pandas删除某一列的方法

    方法一:直接del df['column-name'] 删除sub_grade_列, 输入del df['sub_grade_x'] 方法二:采用drop方法,有下面三种等价的表达式: 1. df= ...

  7. Java Core - static关键字的理解

    一.基本常识 二.关于main方法 我们最常见的static方法就是main方法,至于为什么main方法必须是static的,现在就很清楚了.因为程序在执行main方法的时候没有创建任何对象,因此只有 ...

  8. NGINX Docs | Load Balancing Apache Tomcat Servers with NGINX Open Source and NGINX Plus

    NGINX Docs | Load Balancing Apache Tomcat Servers with NGINX Open Source and NGINX Plushttps://docs. ...

  9. Linux的LiveCd与CD、DVD版

    https://blog.csdn.net/sun_168/article/details/6744401

  10. c# Mongodb两个字段不相等 MongoDB原生查询

    var document = new BsonDocument{ { "$where","this.StarTime!=this.EndTime"}, { }, ...