HDU-6672-Seq

题目传送门

ps:一般这种给一个数列求第n项,n还特别大的。要么矩阵快速幂,要么转化递推式。不过这题数据也特别多有100000组,所以就算矩阵快速幂可能也要超时,而且我还没推出来。转化递推式需要比较强的数学基础,我也转化不了。ε=(´ο`*)))唉,只能打表找规律。

  • 打表代码
    #include "bits/stdc++.h"
    using namespace std;
    const int MAXN = 110;
    int a[MAXN];
    int main() {
        a[1] = 1;
        int sum = 0;
        for (int i = 2; i <= 100; i++) {
            sum += a[i - 1] * (i - 1);
            a[i] = sum % i;
        }
        for (int i = 1; i <= 100; i++) 
            printf("%d %d\n", i, a[i]);
        return 0;
    } 

     

sol:由上面代码打表后发现a[i] = i - 1或者a[i] * 2 = i的情况经常出现,罗列a[i] = i - 1的情况发现都满足i % 6 = 4,而a[i] * 2 = i 的情况下都满足i % 6 = 0 或 i % 6 = 2。其实这时候已经能猜到数列6个一组有规律,接下去应该把所有i % 6 = 1, i % 6 = 3, i % 6 = 5的情况分别罗列一下就能发现剩下的规律,而我当时却把这三种情况放一起看了。 i % 2 == 1。导致规律不易观察又花费了不少时间。

  • 规律
    #include "bits/stdc++.h"
    using namespace std;
    typedef long long LL;
    int main() {
        LL t, n;
        scanf("%lld", &t);
        while (t--) {
            scanf("%lld", &n);
            switch(n % 6) {
                case 0 : printf("%lld\n", n / 2); break;
                case 1 : printf("%lld\n", n / 6 * 4 + 1); break;
                case 2 : printf("%lld\n", n / 2); break;
                case 3 : printf("%lld\n", n / 6); break;
                case 4 : printf("%lld\n", n - 1); break;
                case 5 : printf("%lld\n", n / 6); break;
            }
        }
        return 0;
    }

    有一段时间没写博客了,也没有好好刷题了。乘着百度之星开始继续努力吧。

转载于:https://www.cnblogs.com/Angel-Demon/p/11371828.html

内容概要:本文探讨了在微电网优化中如何处理风光能源的不确定性,特别是通过引入机会约束和概率序列的方法。首先介绍了风光能源的随机性和波动性带来的挑战,然后详细解释了机会约束的概念,即在一定概率水平下放松约束条件,从而提高模型灵活性。接着讨论了概率序列的应用,它通过对历史数据分析生成多个可能的风光发电场景及其概率,以此为基础构建优化模型的目标函数和约束条件。文中提供了具体的Matlab代码示例,演示了如何利用CPLEX求解器解决此类优化问题,并强调了参数选择、模型构建、约束添加以及求解过程中应注意的技术细节。此外,还提到了一些实用技巧,如通过调整MIP gap提升求解效率,使用K-means聚类减少场景数量以降低计算复杂度等。 适合人群:从事电力系统研究、微电网设计与运营的专业人士,尤其是那些对风光不确定性建模感兴趣的研究者和技术人员。 使用场景及目标:适用于需要评估和优化含有大量间歇性可再生能源接入的微电网系统,旨在提高系统的经济性和稳定性,确保在面对风光出力波动时仍能维持正常运作。 其他说明:文中提到的方法不仅有助于学术研究,也可应用于实际工程项目中,帮助工程师们制定更为稳健的微电网调度计划。同时,文中提供的代码片段可供读者参考并应用于类似的问题情境中。
### 关于HDU - 6609 的题目解析 由于当前未提供具体关于 HDU - 6609 题目的详细描述,以下是基于一般算法竞赛题型可能涉及的内容进行推测和解答。 #### 可能的题目背景 假设该题目属于动态规划类问题(类似于多重背包问题),其核心在于优化资源分配或路径选择。此类问题通常会给出一组物品及其属性(如重量、价值等)以及约束条件(如容量限制)。目标是最优地选取某些物品使得满足特定的目标函数[^2]。 #### 动态转移方程设计 如果此题确实是一个变种的背包问题,则可以采用如下状态定义方法: 设 `dp[i][j]` 表示前 i 种物品,在某种条件下达到 j 值时的最大收益或者最小代价。对于每一种新加入考虑范围内的物体 k ,更新规则可能是这样的形式: ```python for i in range(n): for s in range(V, w[k]-1, -1): dp[s] = max(dp[s], dp[s-w[k]] + v[k]) ``` 这里需要注意边界情况处理以及初始化设置合理值来保证计算准确性。 另外还有一种可能性就是它涉及到组合数学方面知识或者是图论最短路等相关知识点。如果是后者的话那么就需要构建相应的邻接表表示图形结构并通过Dijkstra/Bellman-Ford/Floyd-Warshall等经典算法求解两点间距离等问题了[^4]。 最后按照输出格式要求打印结果字符串"Case #X: Y"[^3]。 #### 示例代码片段 下面展示了一个简单的伪代码框架用于解决上述提到类型的DP问题: ```python def solve(): t=int(input()) res=[] cas=1 while(t>0): n,k=list(map(int,input().split())) # Initialize your data structures here ans=find_min_unhappiness() # Implement function find_min_unhappiness() res.append(f'Case #{cas}: {round(ans)}') cas+=1 t-=1 print("\n".join(res)) solve() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值