[CF480A]Exams

本文介绍了一个基于贪心算法和排序策略的具体实现案例。通过定义结构体存储数据,并使用自定义排序规则进行排序,实现了优先选择最优解的问题求解过程。代码中详细展示了如何通过C++实现这一算法思路。

题目描述

懒得写

贪心

排序,a第一关键字b第二关键字。
然后优先选b,不行选a。

#include<cstdio>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int maxn=5000+10;
struct dong{
    int a,b;
} a[maxn];
int i,j,k,l,t,n,m,now;
bool cmp(dong a,dong b){
    return a.a<b.a||a.a==b.a&&a.b<b.b;;
}
int main(){
    scanf("%d",&n);
    fo(i,1,n) scanf("%d%d",&a[i].a,&a[i].b);
    sort(a+1,a+n+1,cmp);
    fo(i,1,n){
        if (now<=a[i].b) now=a[i].b;
        else now=a[i].a;
    }
    printf("%d\n",now);
}
DECLARE v_max_add_time TIMESTAMP; v_check_time TIMESTAMP := SYSTIMESTAMP; -- 统一检测时间 v_sql VARCHAR2(4000); v_actual_value NVARCHAR2(4000); v_null_token CONSTANT NVARCHAR2(20) := '<<<NULL>>>'; -- 特殊标记用于空值比较 TYPE result_rec IS RECORD ( order_no NVARCHAR2(64), tb_name NVARCHAR2(128), col_name NVARCHAR2(128), cf_value NVARCHAR2(512), add_time TIMESTAMP, scene_code NVARCHAR2(32), scene_name NVARCHAR2(128), strategy_id NUMBER(19), strategy_name NVARCHAR2(128), rule_id NUMBER(19), rule_name NVARCHAR2(128) ); TYPE result_tab IS TABLE OF result_rec; v_results result_tab; -- 检查表名是否存在的函数 FUNCTION table_exists(p_table_name VARCHAR2) RETURN BOOLEAN IS v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count FROM all_tables WHERE table_name = UPPER(p_table_name) AND owner = 'GHANA_RISK'; -- 替换为实际schema名 RETURN (v_count > 0); EXCEPTION WHEN OTHERS THEN RETURN FALSE; END; -- 检查列名是否存在的函数 FUNCTION column_exists(p_table_name VARCHAR2, p_column_name VARCHAR2) RETURN BOOLEAN IS v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count FROM all_tab_columns WHERE table_name = UPPER(p_table_name) AND column_name = UPPER(p_column_name) AND owner = 'GHANA_RISK'; -- 替换为实际schema名 RETURN (v_count > 0); EXCEPTION WHEN OTHERS THEN RETURN FALSE; END; -- 获取列数据类型函数 FUNCTION get_column_data_type( p_table_name VARCHAR2, p_column_name VARCHAR2 ) RETURN VARCHAR2 IS v_data_type VARCHAR2(128); BEGIN SELECT data_type INTO v_data_type FROM all_tab_columns WHERE owner = 'GHANA_RISK' AND table_name = UPPER(p_table_name) AND column_name = UPPER(p_column_name); RETURN v_data_type; EXCEPTION WHEN OTHERS THEN RETURN 'UNKNOWN'; END; BEGIN -- 1. 获取最新检测时间范围 SELECT MAX(ADD_TIME) INTO v_max_add_time FROM GHANA_RISK.TQ_RULE_ITEM_RESULT_7; -- 2. 获取半小时内需检测的数据 SELECT TQ_ORDER_NO, TB_NAME, COL_NAME, CF_VALUE, ADD_TIME, SCENE_CODE, SCENE_NAME, STRATEGY_ID, STRATEGY_NAME, RULE_ID, RULE_NAME BULK COLLECT INTO v_results FROM GHANA_RISK.TQ_RULE_ITEM_RESULT_7 WHERE ADD_TIME BETWEEN v_max_add_time - INTERVAL '10' MINUTE AND v_max_add_time; -- 3. 遍历每条记录并动态检测 FOR i IN 1..v_results.COUNT LOOP DECLARE v_data_type VARCHAR2(128); v_conversion_expr VARCHAR2(100); BEGIN -- 验证表名和列名是否存在 IF NOT table_exists(v_results(i).tb_name) THEN RAISE_APPLICATION_ERROR(-20001, 'Table not found: ' || v_results(i).tb_name); END IF; IF NOT column_exists(v_results(i).tb_name, v_results(i).col_name) THEN RAISE_APPLICATION_ERROR(-20002, 'Column not found: ' || v_results(i).col_name); END IF; -- 获取列数据类型并构建转换表达式 v_data_type := get_column_data_type(v_results(i).tb_name, v_results(i).col_name); CASE v_data_type WHEN 'NUMBER' THEN -- 数字类型:使用TO_CHAR保留格式(包括小于1的前导0) v_conversion_expr := 'TO_CHAR(' || v_results(i).col_name || ', ''FM9999999999999999999990D99999999999999999999'')'; WHEN 'VARCHAR2', 'CHAR', 'NVARCHAR2', 'NCHAR' THEN -- 字符类型:直接使用原列 v_conversion_expr := v_results(i).col_name; ELSE -- 其他类型:默认转换为字符串 v_conversion_expr := 'TO_CHAR(' || v_results(i).col_name || ')'; END CASE; -- 构建动态SQL(转换为NVARCHAR2以匹配cf_value类型) v_sql := 'SELECT TO_NCHAR(' || v_conversion_expr || ') ' || 'FROM GHANA_RISK.' || v_results(i).tb_name || ' ' || 'WHERE TQ_ORDER_NO = :1'; -- 执行动态查询 EXECUTE IMMEDIATE v_sql INTO v_actual_value USING v_results(i).order_no; -- 4. 比较值并插入差异 IF NVL(v_actual_value, v_null_token) <> NVL(v_results(i).cf_value, v_null_token) THEN INSERT INTO FK_ADS.ADS_MONITORING_RESULT_DI ( TQ_ORDER_NO, TB_NAME, COL_NAME, CF_VALUE, ACTUAL_VALUE, CHECK_TIME, ADD_TIME, SCENE_CODE, SCENE_NAME, STRATEGY_ID, STRATEGY_NAME, RULE_ID, RULE_NAME ) VALUES ( v_results(i).order_no, v_results(i).tb_name, v_results(i).col_name, v_results(i).cf_value, v_actual_value, v_check_time, v_results(i).add_time, v_results(i).scene_code, v_results(i).scene_name, v_results(i).strategy_id, v_results(i).strategy_name, v_results(i).rule_id, v_results(i).rule_name ); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO FK_ADS.ADS_MONITORING_RESULT_DI ( TQ_ORDER_NO, TB_NAME, COL_NAME, CF_VALUE, ACTUAL_VALUE, CHECK_TIME, ADD_TIME, SCENE_CODE, SCENE_NAME, STRATEGY_ID, STRATEGY_NAME, RULE_ID, RULE_NAME ) VALUES ( v_results(i).order_no, v_results(i).tb_name, v_results(i).col_name, v_results(i).cf_value, 'RECORD_NOT_FOUND', v_check_time, v_results(i).add_time, v_results(i).scene_code, v_results(i).scene_name, v_results(i).strategy_id, v_results(i).strategy_name, v_results(i).rule_id, v_results(i).rule_name ); COMMIT; END; /报错[65000][6550] ORA-06550: 第 116 行, 第 24 列: PLS-00103: 出现符号 ","在需要下列之一时: * & = - + < / > at in is mod remainder not rem then <an exponent (* ...
07-17
由于未提供具体的引用材料,以下是关于 ECE241 课程可能涉及的内容以及一般性的解答框架。假设该题目与电子电路分析或设计有关(因为 ECE 常代表 Electrical and Computer Engineering),以下是对问题的推测性解析。 ### 可能的主题背景 ECE241 的考试通常会覆盖模拟电路、数字逻辑或者信号处理等内容。如果第7题A部分涉及到的是 **运算放大器电路分析** 或者 **滤波器设计**,那么可以按照如下方式进行讨论: #### 运算放大器电路分析 对于一个典型的运算放大器配置(如反相放大器或同相放大器),其增益可以通过电阻网络计算得出[^1]。 - 对于反相放大器,电压增益 \( A_v \) 表达式为: \[ A_v = -\frac{R_f}{R_i} \] 其中 \( R_f \) 是反馈电阻,\( R_i \) 是输入电阻。 - 如果题目要求求解闭环增益,则可以直接代入上述公式并验证稳定性条件。 ```python def calculate_gain(Rf, Ri): """ 计算反相放大器的增益 参数: Rf (float): 反馈电阻值(欧姆) Ri (float): 输入电阻值(欧姆) 返回: float: 放大器增益 """ gain = -(Rf / Ri) return gain # 示例参数 Rf_example = 10e3 # 10 kOhm Ri_example = 1e3 # 1 kOhm gain_result = calculate_gain(Rf_example, Ri_example) print(f"Amplifier Gain: {gain_result}") ``` #### 滤波器设计 如果是低通滤波器的设计问题,可能会要求确定截止频率 \( f_c \),这可通过电容器和电阻的关系得到: \[ f_c = \frac{1}{2\pi RC} \] 其中 \( R \) 和 \( C \) 分别表示串联电阻和旁路电容的数值[^2]。 --- ### 解决方案总结 如果没有具体试题内容,以上仅作为通用方法论展示。实际解决过程需依赖原始考题中的已知数据来完成定量分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值