2015微软编程之美挑战赛初赛第2场

编程之美初赛第二场 扑克牌(四维dp,难) 一副不含王的扑克牌由52张牌组成,由红桃、黑桃、梅花、方块4组牌组成,每组13张不同的面值。现在给定52张牌中的若干张,请计算将它们排成一列,相邻的牌面值不同的方案数。 牌的表示方法为XY,其中X为面值,为2、3、4、5、6、7、8、9、T、J、Q、K、A中的一个。Y为花色,为S、H、D、C中的一个。如2S、2H、TD等。 输入 第一行为一个整数T,为数据组数。 之后每组数据占一行。这 阅读详情

题目列表:http://hihocoder.com/contest/msbop2015round2b/problems

第一题:扑克牌。

题意:一副不含王的扑克牌由52张牌组成,由红桃、黑桃、梅花、方块4组牌组成,每组13张不同的面值。现在给定52张牌中的若干张,请计算将它们排成一列,相邻的牌面值不同的方案数。输出模2^64之后的值。牌的表示方法为XY,其中X为面值,为2、3、4、5、6、7、8、9、T、J、Q、K、A中的一个。Y为花色,为S、H、D、C中的一个。如2S、2H、TD等。

输入:第一行为一个整数T,为数据组数。之后每组数据占一行。这一行首先包含一个整数N,表示给定的牌的张数,接下来N个由空格分隔的字符串,每个字符串长度为2,表示一张牌。每组数据中的扑克牌各不相同。

思路:小数据搜索就能过,大数据(N<=52)需要用动态规划(记忆化搜索)。可以有两种思路。

1、四维dp。dp[a][b][c][d]表示用a个只出现1次的、b个出现2次的、c个出现3次的和d个出现4次的能够放置的方法数。每次枚举当前位放置的是出现几次(1~4)的,然后求和。对于当前放置出现1~4次的转移方程见代码。拿出现3次的来解释:当前位放置的方法数有3c个,这样放置会减少一个出现3次的,增加一个出现两次的,所以剩下的放置数是dp(a,b+1,c-1,d)。但是后者包括下一个位置放置的与当前位相同的情况,所以要减去这种情况。与当前位相同有两种选择,所以是2*dp(a+1,b,c-1,d)。但是一定注意,这样减又减多了,因为减去的部分包括下一位和下下位都相同的情况,而这种在dp(a,b+1,c-1,d)里是不会出现的,所以还得加回来。如此这般,转移方程就写好了。

2、dp[a][b][c][d][pre]表示用a个只出现1次的、b个出现2次的、c个出现3次的和d个出现4次的以及上一位是pre次能够放置的方法数。总体思路与1差不多,这样的好处是不用考虑加多减多。状态转移方程见代码。


注意:题目要求对答案模2^64,那么应该用unsigned long long 来存储(输出是%llu),而且相当于不做任何处理直接加即可,因为如果溢出就相当于模2^64运算。

思路1:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MOD 1<<64
#define N 54
#define M 13
char ch[5];
int num[M+5],hh[1000];
int T,c,n;
unsigned long long dp[M+3][M+3][M+3][M+3];
void init(){
    int i;
    for(i = 2;i<=9;i++)
        hh['0'+i] = i;
    hh['T'] = 10;
    hh['J'] = 11;
    hh['Q'] = 12;
    hh['K'] = 13;
    hh['A'] = 1;
    memset(dp, -1, sizeof(dp));
    dp[0][0][0][0]= 1;
}
unsigned long long test(int a,int b,int c,int d){
    unsigned long long res = 0;
    if(dp[a][b][c][d] != -1)
        return dp[a][b][c][d];
    if(a > 0)           //放置出现一次的
        res += a*test(a-1,b,c,d);
    if(b > 0)           //放置出现两次的
        res += 2*b*(test(a+1, b-1, c, d) - test(a, b-1, c, d));
    if(c > 0)           //放置出现三次的
        res += 3*c*(test(a, b+1, c-1, d) - 2*(test(a+1,b,c-1,d) - test(a,b,c-1,d)));
    if(d > 0)           //放置出现四次的
        res += 4*d*(test(a, b, c+1, d-1) - 3*(test(a,b+1,c,d-1) - 2*(test(a+1,b,c,d-1) - test(a,b,c,d-1))));
    return dp[a][b][c][d] = res;
}
int main(){
    init();
    scanf("%d",&T);
    for(c = 1;c<=T;c++){
        int i,x,y,z,w;
        memset(num, 0, sizeof(num));
        scanf("%d",&n);
        for(i = 1;i<=n;i++){
            scanf("%s",ch);
            num[hh[ch[0]]]++;
        }
        x = y = z = w = 0;
        for(i = 1;i<=M;i++){
            if(num[i]==1)
                x++;
            else if(num[i] == 2)
                y++;
            else if(num[i] == 3)
                z++;
            else if(num[i] == 4)
                w++;
        }
        printf("Case #%d: %llu\n",c,test(x,y,z,w));
    }
    return 0;
}

思路2:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MOD 1<<64
#define N 54
#define M 13
char ch[5];
int num[M+5],hh[1000];
int T,c,n;
unsigned long long dp[M+3][M+3][M+3][M+3][5];
void init(){
    int i;
    for(i = 2;i<=9;i++)
        hh['0'+i] = i;
    hh['T'] = 10;
    hh['J'] = 11;
    hh['Q'] = 12;
    hh['K'] = 13;
    hh['A'] = 1;
    memset(dp, -1, sizeof(dp));
    for(i = 0;i<5;i++)
        dp[0][0][0][0][i] = 1;
}
unsigned long long test(int a,int b,int c,int d,int pre){
    unsigned long long res = 0;
    if(dp[a][b][c][d][pre] != -1)
        return dp[a][b][c][d][pre];
    if(a > 0){
        if(pre != 1)
            res += a*test(a-1,b,c,d,0);
        else
            res += (a-1)*test(a-1,b,c,d,0);
    }
    if(b > 0){
        if(pre != 2)
            res += 2*b*(test(a+1, b-1, c, d ,1));
        else
            res += 2*(b-1)*(test(a+1, b-1, c, d ,1));
    }
    if(c > 0){
        if(pre != 3)
            res += 3*c*(test(a, b+1, c-1, d ,2));
        else
            res += 3*(c-1)*(test(a, b+1, c-1, d ,2));
    }
    if(d > 0){
        if(pre != 4)
            res += 4*d*(test(a, b, c+1, d-1 ,3));
        else
            res += 4*(d-1)*(test(a, b, c+1, d-1 ,3));
    }
    return dp[a][b][c][d][pre] = res;
}
int main(){
    init();
    scanf("%d",&T);
    for(c = 1;c<=T;c++){
        int i,x,y,z,w;
        memset(num, 0, sizeof(num));
        scanf("%d",&n);
        for(i = 1;i<=n;i++){
            scanf("%s",ch);
            num[hh[ch[0]]]++;
        }
        x = y = z = w = 0;
        for(i = 1;i<=M;i++){
            if(num[i]==1)
                x++;
            else if(num[i] == 2)
                y++;
            else if(num[i] == 3)
                z++;
            else if(num[i] == 4)
                w++;
        }
        printf("Case #%d: %llu\n",c,test(x,y,z,w,0));
    }
    return 0;
}

第二题:攻城略地。

题意:A、B两国间发生战争。已知A国共有n个城市(编号1, 2, …, n),城市间有一些道路相连。每座城市的防御力为w,直接攻下该城的代价是w。若该城市的相邻城市(有道路连接)中有一个已被占领,则攻下该城市的代价为0。除了占领城市,B国还要摧毁A国的交通系统,因而他们需要破坏至少k条道路。由于道路损毁,攻下所有城市的代价相应会增加。假设B国可以任意选择要摧毁的道路,那么攻下所有城市的最小代价是多少?

输入:第一行一个整数T,表示数据组数,以下是T组数据。每组数据第一行包含3个整数n, m, k。第二行是n个整数,分别表示占领城市1, 2, …, n的代价w。接下来m行每行两个数i, j,表示城市i与城市j间有一条道路。

思路:实际上是贪心的想法。首先考虑原图(不删除任何边),其最小代价是每个连通分支中的最小代价之和。下面考虑删边,如果可以继续删边而不增加连通分支数量,那么最小代价不会增加。直到将原图删成了一棵森林。如果还需要继续删边,那么必然会增加代价,而显然增加的量为没有计入总代价的代价最小点的代价(设为t点)。因为总可以在t所在的连通分支中将t与之前此连通分支内的最小代价点分开。如此删除直到删除符合题意的边为止。

一开始大数据没有过,因为我在读入数据后先排序,然后每找到一个连通分支的最小代价就标记相应位置的数已经选取。实际上这样的话如果原始的图没有边,那么复杂度变成了O(n^2),所以会TLE。实际上在深搜判连通的时候再产生t数组,最后排序扫一遍即可,复杂度O(nlogn)。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 1000005
#define INF 0x3fffffff
int c,T,n,m,q,w,len;
int s[N],t[N],first[N],flag[N],top;
struct edge{
    int y,next,w;
}e[N<<1];
long long res;
void add(int x,int y){
    e[top].y = y;
    e[top].next = first[x];
    first[x] = top++;
}
void dfs(int x){
    int i;
    flag[x] = 1;
    if(w>s[x]){                 //此时再生成t数组
        if(w != INF)
            t[len++] = w;
        w = s[x];
    }else
        t[len++] = s[x];
    for(i = first[x];i!=-1;i=e[i].next)
        if(-1 == flag[e[i].y])
            dfs(e[i].y);
}
int main(){
    scanf("%d",&T);
    for(c = 1;c<=T;c++){
        int i,j,a,b,con=0;
        res = len = 0;
        memset(flag, -1, sizeof(flag));
        memset(first, -1, sizeof(first));
        top = 0;
        scanf("%d %d %d",&n,&m,&q);
        for(i = 1;i<=n;i++)
            scanf("%d",&s[i]);
        for(i = 1;i<=m;i++){
            scanf("%d %d",&a,&b);
            add(a,b);
            add(b,a);
        }
        for(i = 1,con=0;i<=n;i++)
            if(flag[i] == -1){
                w = INF;
                dfs(i);
                res += w;       //w求得为每个连通分支的最小代价
                con ++;         //连通分支数
            }
        sort(t,t+len);
        j = n-con-(m-q);        //j是将原图删成森林之后还需要删除的边数
        for(i = 0;j>0;j--,i++)
            res += t[i];
        printf("Case #%d: %lld\n",c,res);
    }
    return 0;
}

第三题:八卦的小冰。

题意:某社交网站中有N个用户,用户和用户之间有亲密度。亲密度非负,若大于零表示这两个用户之间是好友关系。小冰会不停地更新用户之间的亲密度,同时,小冰也有可能会改变对一个用户性别的判断。小冰想知道这个社交网络的八卦度是多少。八卦度的定义是社交网络中所有异性好友之间的亲密度之和。对于每一个询问,输出一行包含询问的八卦度。

输入:第一行一个整数T,表示数据组数。接下来是T组数据,每组数据的格式如下:第一行是三个整数N, M, Q,分别表示用户数、初始的好友对数、操作数。
第二行是N个空格隔开的数,第i个数表示i号用户的性别,用0或1表示。
接下来的M行,每行三个数x, y, z,代表初始状态用户x和用户y之间的亲密度是z。除此之外的用户之间的亲密度初始为0。
接下来是Q行,每行是以下三种操作中的一种:
1. “1 x”:改变用户x的性别
2. “2 x y z”:改变用户x与用户y之间的亲密度为z
3. “3”:询问八卦度

思路:最原始的思路就是模拟,但着实没想到模拟就能过大数据。因为大数据范围是:1 ≤ N, M, Q ≤ 100000,那么如果最后每两个人之间都有亲密度,那么2*100000^2这个量级的边没法存。看了下别人的AC代码也基本都是模拟过的。其实这题的数据可能就是询问八卦度(操作3)的数量比较多,所以应该维护结果的值而不是每次询问现计算。初次之外没有什么可注意的。

#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100005
int c,T,n,m,q;
int s[N],first[N],top;
struct edge{
    int y,next,w;
}e[N<<5];
long long res;
void add(int x,int y,int w){
    e[top].y = y;
    e[top].w = w;
    e[top].next = first[x];
    first[x] = top++;
}
void update(int x){
    int i,y;
    for(i = first[x];i!=-1;i=e[i].next){
        y = e[i].y;
        if(s[x] == s[y])
            res -= e[i].w;
        else
            res += e[i].w;
    }
}
int change(int x,int y,int w){
    int i,tmp = -1;
    for(i = first[x];i!=-1;i=e[i].next){
        if(e[i].y == y){
            tmp = e[i].w;
            e[i].w = w;
            return tmp;
        }
    }
    add(x,y,w);
    return 0;
}
int main(){
    scanf("%d",&T);
    for(c = 1;c<=T;c++){
        int i,j,a,b,w,op;
        res = 0;
        memset(first, -1, sizeof(first));
        top = 0;
        scanf("%d %d %d",&n,&m,&q);
        for(i = 1;i<=n;i++)
            scanf("%d",&s[i]);
        for(i = 1;i<=m;i++){
            scanf("%d %d %d",&a,&b,&w);
            add(a,b,w);
            add(b,a,w);
            if(s[a] != s[b])
                res += w;
        }
        printf("Case #%d:\n",c);
        while(q--){
            scanf("%d",&op);
            if(op == 1){
                scanf("%d",&a);
                s[a] = 1-s[a];
                update(a);
            }else if(op == 2){
                scanf("%d %d %d",&a,&b,&w);
                j = change(a,b,w);
                change(b,a,w);
                if(s[a] != s[b]){
                    res -= j;
                    res += w;
                }
            }else
                printf("%lld\n",res);
        }
    }
    return 0;
}


2020数学建模美赛C题完整解答(结合代码) 今年的美赛在一次又一次的日夜颠倒中结束了,相信每个人,在付出极大努力之后,会有酣畅淋漓的快感,也会认识到自己的不足。 这次的c题是一个纯粹的数据挖掘的题 涉及到的 知识有: 文本情感分析 文本聚类(可选) 关联分析 拟合(或者神经网络预测) 美赛的难点之读题 看到老美的题,作为一个中国人,完全不能做到native speaker,看到题目的那一刻真的有一种“一万个人心中有一万个哈姆雷特的感觉”... 阅读详情

相关推荐

2015数学建模美赛C题

2 0 1 5 数 学 建 模 美 赛 C 题

CSP-S 复习总结 ---- DP

前言:最近刷了一些水题 CH5E26 题意:一副不含王的扑克牌由52张牌组成,由红桃、黑桃、梅花、方块4组牌组成,每组13张不同的面值。现在给定 52 张牌中的若干张,请计算将它们排成一列,相邻的牌面值不同的方案数 计数 dpdpdp 考虑到剩 1 张花色,剩 2 张花色 … 本质是一样的 令 fa,b,c,df_{a,b,c,d}fa,b,c,d​ 表示还剩 aaa 种剩一个花色的,bbb 种...

FSYo 的博客 771

Android逆向实战:用Xposed Hook微信消息发送(附完整代码)

本文提供了一份Android逆向实战指南,详细讲解如何使用Xposed框架Hook微信消息发送功能。内容涵盖环境搭建、逆向分析定位关键方法、编写Hook模块代码以及调试部署的全过程,并附有完整代码示例,帮助开发者深入理解Android应用底层交互与Hook技术。

weixin_29196315的博客 1118

美赛C题纪实

一些美赛的记录,等我忙完雅思和缓考就来贴源码(源码还需要整理)

qq_52225090的博客 472

人工智能顶会投稿指南:CCF-A类会议ACL、ICML、NeurIPS、ICLR的投稿周期与影响力解析

本文详细解析了CCF-A类会议ACL、ICML、NeurIPS、ICLR的投稿周期与影响力,涵盖各会议的投稿时间线、评审特点及录用率。ACL注重自然语言处理,ICML强调机器学习理论,NeurIPS覆盖神经信息处理,ICLR聚焦表征学习。文章还提供了实战投稿策略,帮助研究者提升投稿成功率。

weixin_29211309的博客 3346

2024年捡垃圾指南:E5 V3/V4服务器CPU怎么选?从游戏多开到深度学习,附华南X99主板搭配清单

本文详细解析2024年E5 V3/V4服务器CPU的选购策略,涵盖游戏多开、深度学习等多种应用场景。通过对比E5 V3与V4系列的制程、功耗及性能差异,提供高性价比的CPU型号推荐及华南X99主板搭配方案,帮助用户在有限预算下打造高效能工作站。

weixin_42549451的博客 1579

hihoCoder 1159 扑克牌 编程之美2015初赛第二场

这一题DP的状态真难想>. 我们考虑这个process,从input一堆牌中逐个选择一张从左到右放在空位上。定义状态(a,b,c,d,z),a表示相同面值总共有1张的牌有几种,b、c、d分别表示相同面值的牌总共有2、3、4张的种类数,a、b、c、d即为四个等价类。每一种牌最多四个花色,且没有重复的牌,所以最多4个等价类。 z表示前一个位置选择的牌在当前状态下属于相同面值总共有z张的等价类。初始

TimeForMiracles 809

从2804云台电机到桌面机械臂:一个STM32/GD32玩家的FOC驱动踩坑全记录

本文详细记录了从2804云台电机到桌面机械臂的FOC驱动开发历程,涵盖了硬件选型、驱动方案优化、软件调试等关键环节。特别分享了L6234P驱动芯片的发热问题、AS5600编码器的I2C通信陷阱以及PID调参的实战经验,为DIY爱好者提供了宝贵的参考。

weixin_26897585的博客 481

2020美赛C题的一些想法总结

       2020年的C题是一道典型的数据分析的题目,基于大数据分析处理进行相关建模。对于这道题而言,最难之处莫过于各个数据项关系的梳理总结,以及对数据的挖掘建模。网上很多大神给了很多高级的方法(深度学习、神经网络等)。其实作为小白,很多参赛的同学并不了解这方面的算法,以及背后的数学原理,很多人指望一两个高级算法就能解决问题...

xiaofeiyu321的博客 7510

Eclipse 数据空间组件(EDC)项目介绍

在当今数字经济的背景下,数据成为了新的“石油”。但与石油不同的是,数据可以无限共享且再生。然而,如何在保持数据主权的前提下实现高效、安全的数据共享,成为了企业和组织面临的主要挑战。这时,**Eclipse 数据空间组件(Eclipse Dataspace Components, EDC)**应运而生,它为企业在多方参与的数据交换中提供了一个标准化、可扩展的解决方案。数据空间不仅是一个多组织间的数据共享协议,还是一套支撑这些协议运行的技术基础设施。

m0_74331272的博客 4599

WorldPop数据集

WorldPop数据集介绍

qq_43874102的博客 1万+

2015微软编程之美挑战赛初赛第1场

#include #include #include using namespace std; #define N 1005 int n,c,T; int s[N]; int first[N<<1],top,used[N],link[N]; struct edge{ int y,next; }e[N*N/2]; int isprime(int x){ int i; if

dearmango 624

手把手教你逆向京东搜索接口:H5ST 556位参数生成与V8补环境技巧

本文深入解析了京东搜索接口中关键的H5ST 556位参数生成机制,并提供了详细的逆向实战指南。针对其复杂的反爬虫环境检测,文章重点介绍了通过链式补环境技巧,在Node.js中完整模拟浏览器环境(包括原型链检测和指纹验证)的方法,帮助开发者成功绕过防护并生成有效参数。

weixin_29315091的博客 482

2015微软技术俱乐部科技文化月 —— “第七届SeedCoder编程大赛”火热报名中!!!

【Code人心弦】 Duang!!Duang!!Duang!!话说微软2015 编程之美挑战赛即将来袭,福利太美,我都不敢看!不信?微信扫扫看!比赛难不?低调告诉你,有微软技术俱乐部在,信心杠杠的! 友情链接(2015微软编程之美官网):http://programming2015.cstnet.cn/ 我们将承办“第七届SeedCoder编程大赛”,提前给你热热身!奖品照样丰富

SeedCoder2015的专栏 1314

Jupyter实战:解决ModuleNotFoundError之xgboost缺失问题

本文详细解析了在Jupyter Notebook中遇到ModuleNotFoundError: No module named 'xgboost'错误的完整解决方案。通过诊断环境、使用pip正确安装xgboost、配置Python路径以及最终验证,帮助用户彻底解决模块缺失问题,并理解Jupyter内核与Python环境的关系,提升问题排查能力。

weixin_29064103的博客 384

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

官宣 | 首届云原生编程挑战赛报名通道正式开启

“云原生编程挑战赛”是“中间件性能挑战赛”的全新升级!自 2015 年开始,大赛已经成功举办了五届,共吸引超过 12000 支队伍,15000 名顶尖选手参加,覆盖 10 余个国家和地区。 往届大赛毕业生是这样说的:视频点击这里 经历了跌宕起伏的比赛过程,感悟到冠军不是最重要的,重要的是参与了这场提升自己的赛事,攻克了自己的懈怠,结识了优秀的技术同胞。 --北京字节跳动网络技术有限公司--吴得瑀/微软中国有限公司--黎强/北京大学在读博士--张博洋 比赛带我们的不仅仅是荣誉,对生活和工作都会产生影响,

阿里云云栖号 2185

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

活动推荐 | 首届云原生编程挑战赛开始报名啦~

“云原生编程挑战赛”是“中间件性能挑战赛”的全新升级!自 2015 年开始,大赛已经成功举办了五届,共吸引超过 12000 支队伍,15000 名顶尖选手参加,覆盖 10 余个国家和地区...

Ververica的博客 485

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

引领技术风向的云原生编程挑战赛火热报名中······

“云原生编程挑战赛”是“中间件性能挑战赛”的全新升级!自 2015 年开始,大赛已经成功举办了五届,共吸引超过 12000 支队伍,15000 名顶尖选手参加,覆盖 10 余个国家和地区...

python爬虫人工智能大数据 546

这场1.5W+名技术达人参加的挑战赛你报名了吗?

“云原生编程挑战赛”是“中间件性能挑战赛”的全新升级!自 2015 年开始,大赛已经成功举办了五届,共吸引超过 12000 支队伍,15000 名顶尖选手参加,覆盖 10 余个国家和地区...

闲鱼技术的博客 1037

2020美赛建模C题思路和理解

2020美赛建模C题思路和理解。问题中心:评论数据星级建模; 简要思路:理解成京东淘宝商城的评论数据,解释4.8星的指数怎么来的,你对商品的一段评论对该等级有多大影响?

Zhuoning Guo's Blog 3万+

【MCM-2017】2017年数学建模美赛题目原文及翻译-C (个人思路)

Auto-Car和 Traffic flow 的相互作用 无人车车队车辆超过10%-50%的交通流量规模时,保留一些车道用于无人驾驶车辆,因为它们比单个车辆具有更高效的移动性(有研究无人车车辆专用车道上的吞吐量可以是人驾驶车道的吞吐量的两倍) 50%-90% 那说明大部分交通流量都是无人车辆,完全可以考虑控制红绿灯,交通信号灯的,来提供一半以上车辆的运行效率! 90%以上意味着基本全城流量都是无人车,刚我们做了『能

移动智能 6万+

题目2:大神与三位小伙伴 Beauty of Programming 2014

描述 L国是一个有着优美景色且物产丰富的国家,很多人都喜欢来这里旅游并且喜欢带走一些纪念品,大神同学也不例外。距离开L国的时间越来越近了,大神同学正在烦恼给她可爱的小伙伴们带什么纪念品好,现在摆在大神同学面前的有三类纪念品A, B, C可以选择,每类纪念品各有N种。其中种类为A_i, B_i, C_i的纪念品价值均为i, 且分别有N+1-i个剩余。现在大神同学希望在三类纪念品中各挑选一件然后

Michael20070810625的专栏 1088

2016年数学建模美赛题目原文及翻译-C [个人思路]

PROBLEM C: The Goodgrant Challenge The Goodgrant Foundation is a charitable organization that wants to help improve educational performance of undergraduates attending colleges and universiti

移动智能 4万+
上一篇: poj 2752 KMP的next数组应用(prefix-suffix string)
下一篇: poj 3080(3450) KMP(暴力也能过) 多个串的最长公共子串
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值