zoukankan      html  css  js  c++  java
  • Edu Round#93(div2)

    有多菜就不用说了,我是真的不会做,真的不是教育场坑的原因。

    C. Good Subarrays

    给一个数组 (A) , $A_i in [0,9] $ , 求区间和等于区间长度的区间个数

    想到了是不是尺取,但是如果全一的数据显然不能。

    又想到了 (dp)

    想到了,我真菜

    $A_i = A_i - 1 $ , 则转化为区间和为 (0) , 就变成了之前有多少个前缀和与目前相等

    ... 我好菜

    scanf("%d",&T);
        while(T--){
            scanf("%d",&n);
            int x,sum = 0;
            long long ans = 0;
            map<int,int>P;P[0]++;
            for(int i = 1;i <= n;i++){
                scanf("%1d",&x);
                sum += x-1;
                ans += P[sum];
                P[sum]++;
            }
            printf("%lld
    ",ans);    
        }
    

    D. Colored Rectangles

    有若干对三种颜色的木棍,给出他们的长度,选取不同颜色的两对木棍行成矩形,求最大的面积之和。

    最先开始想的是直接贪心,但是碰到如下数据就不能贪心

    7 8

    9

    10

    如果贪心搞 9 和 10 的话,就浪费了第一种颜色的两对

    后来又搞了dfs暴力,稳妥妥的 t 了。

    然后搞了个记忆化,结果脑子有点迷糊。

    好像是一个三维dp...

    我吐了,跟昨天写的记忆化搜索差不多,稍微改一下就过了

    /* Author: coding_like_cxk
     * Time: 2020-08-15 10:35:01
    **/
    
    #include<bits/stdc++.h>
    using namespace std;
    
    const int maxn = 2e5 + 10;
    
    int a, b, c;
    int A[220], B[220], C[220];
    int dp[220][220][220];
    
    int ans;
    
    int dfs(int x, int y, int z) {
    	int cnt = 0;
    	if (dp[x][y][z] != 0)return dp[x][y][z];
    
    	if (x > 0)cnt++; if (y > 0)cnt++; if (z > 0)cnt++;
    	if (cnt < 2) {
    		return dp[x][y][z] = 0;
    	}
    	int ans = 0;
    
    	if (x > 0 && y > 0) {
    		ans = max(ans, dfs(x - 1, y - 1, z) + A[x] * B[y]);
    	}
    	if (x > 0 && z > 0) {
    		ans = max(ans, dfs(x - 1, y, z - 1) + A[x] * C[z]);
    	}
    	if (y > 0 && z > 0) {
    		ans = max(ans, dfs(x, y - 1, z - 1) + B[y] * C[z]);
    	}
    	return dp[x][y][z] = ans;
    }
    int main() {
    	cin >> a >> b >> c;
    	for (int i = 1; i <= a; i++)cin >> A[i];
    	for (int i = 1; i <= b; i++)cin >> B[i];
    	for (int i = 1; i <= c; i++)cin >> C[i];
    	sort(A + 1, A + a + 1); sort(B + 1, B + b + 1); sort(C + 1, C + c + 1);
    
    	cout << dfs(a, b, c) << endl;
    }
    
    
  • 相关阅读:
    Django~1
    Python 正则表达式入门(初级篇)
    pytho占位符
    django之基于cookie和装饰器实现用户认证
    form error
    Python之路【第十七篇】:Django【进阶篇 】
    djangoform详解
    django自定义form验证error
    Django CRM客户关系管理系统
    ulimit
  • 原文地址:https://www.cnblogs.com/sduwh/p/13507807.html
Copyright © 2011-2022 走看看