2019第十五届“强智杯”湖南省大学生计算机程序设计竞赛 | 部分题解

叉姐出的题

题解链接:

https://github.com/ftiasch/problem-setting-public/tree/master/2019-hunan

A.全1子矩阵 签到题

题目大意:给出一个01矩阵 判断所有的1是否充满了一个完整的矩阵

思路:遍历一遍矩阵的所有数据,得到含1的位置矩阵的最小值,最大值(即该矩阵的左下角和右上角

长*宽 = 1的数量

#include 
using namespace std;
char a[105][105];
int main()
{
    int n,m;
    while (~scanf("%d%d",&n,&m))
    {
        for (int i=0; i

 

F.4 Buttons 推公式/签到

题目大意:每走一次往右至多a步,往上至多b步,往左至多c步,往下至多d步

每个样例走n次 告诉a,b,c,d

思路:把每一个象限分别计算,最后加上在数轴上的可到达的点

#include 
using namespace std;
const int mod = 1e9+7;
#define ll long long
int main()
{
    ll n,a,b,c,d;
    while (~scanf("%lld%lld%lld%lld%lld",&n,&a,&b,&c,&d))
    {
        if (n==1)
            printf("%lld\n",a+b+c+d+1);
        else
        {
            ll sum=0;
            sum = (sum+ (n-1)*n/2%mod *a%mod *b%mod)%mod;
            sum = (sum+ (n-1)*n/2%mod *a%mod *d%mod)%mod;
            sum = (sum+ (n-1)*n/2%mod *c%mod *b%mod)%mod;
            sum = (sum+ (n-1)*n/2%mod *c%mod *d%mod)%mod;
            sum = (sum+ (a+b+c+d)%mod *n%mod)%mod;
            printf("%lld\n",(sum+1)%mod);
        }
    }
    return 0;
}

注意:int 和long long 要统一

E.Numbers dfs

大白和Alone做的

只要判断一位还是两位的数字……

你可能感兴趣的:(比赛周记)