UVA 111 History Grading(题意杀,最长公共子序列)

本文介绍了解决UVA111 History Grading问题的方法,通过将事件按时间排序并求最长公共子序列来计算学生的得分。具体实现采用C++编程语言。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:
UVA 111 History Grading
题意:
【题意杀!】
先给出 n 个事件的正确发生时间顺序,在给出一些学生排出来的时间发生时间顺序,有两种得分方式;

  •  在相应的时间点发生事件相同则得1分
  •  可以得到的分数等于发生事件的相对时间顺序正确的最长长度

求按照第二种方式可以获得的得分?
n范围: 2n20

  • denotes the ranking of event i in the correct chronological order
  • you are asked to write a program to score such questions using the second method

分析:
看样例我也看了好久才明白是怎么来的。。。。
因为要按照事件的相对发生顺序求最长公共子序列,所以先按照时间对时间发生顺序排序,实际上读入时就是记录时间 i 发生的事件编号t,剩下的就是求最长公共子序列了。

#include <stdio.h>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std;
const int MAX_N = 50;

int n, tmp;
int dp[MAX_N][MAX_N], base[MAX_N], data[MAX_N];

void solve()
{
    memset(dp, 0, sizeof(dp));
    for(int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            if(base[i] == data[j]) dp[i][j] = dp[i - 1][j - 1] + 1;
            else {
                dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
            }
        }
    }
}

int main()
{
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i) {
        scanf("%d", &tmp);
        base[tmp] = i;
    }
    while(~scanf("%d", &tmp)) {
        data[tmp] = 1;
        for(int i = 2; i <= n; ++i) {
            scanf("%d", &tmp);
            data[tmp] = i;
        }
        solve();
        printf("%d\n", dp[n][n]);
    }
}
在Unity中,动态设置PostProcessingBehaviour的ColorGrading可以通过以下步骤实现: 1. **确保导入PostProcessing包**:首先,确保你的项目中已经导入了PostProcessing包。如果没有,可以通过Unity的Package Manager进行导入。 2. **添加PostProcessingBehaviour组件**:在你的相机上添加PostProcessingBehaviour组件。如果没有,可以通过`AddComponent<PostProcessingBehaviour>()`方法动态添加。 3. **创建PostProcessingProfile**:创建一个PostProcessingProfile资产,并配置好ColorGrading设置。 4. **动态修改ColorGrading设置**:通过代码动态修改PostProcessingProfile中的ColorGrading设置。 以下是一个示例代码,展示了如何动态设置ColorGrading: ```csharp using UnityEngine; using UnityEngine.Rendering.PostProcessing; public class DynamicColorGrading : MonoBehaviour { public PostProcessProfile postProcessProfile; void Start() { // 获取ColorGrading设置 ColorGrading colorGrading; if (postProcessProfile.TryGetSettings(out colorGrading)) { // 设置ColorGrading的参数 colorGrading.temperature.value = 2000f; // 设置色温 colorGrading.tint.value = 50f; // 设置色调 colorGrading.postExposure.value = 0.5f; // 设置曝光 colorGrading.contrast.value = 1.5f; // 设置对比度 } } } ``` 在这个示例中,我们首先确保导入了`UnityEngine.Rendering.PostProcessing`命名空间。然后,我们通过`TryGetSettings`方法获取ColorGrading设置,并动态修改其参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值