【USACO3.2】解题报告

信息学奥赛一本通 1446:素数方阵 通过100分 我的主页信息学奥赛一本通(C++版)在线评测系统 1446:素数方阵 【题目描述】 在下面的方格中,每行,每列,以及两条对角线上的数字可以看作是五位的素数。方格中的行按照从左到右的顺序组成一个素数,而列按照从上到下的顺序。两条对角线也是按照从左到右的顺序来组成。 +---+---+---+---+---+ | 1 | 1 | 3 | 5 | 1 | +---+---+---+---+---+ | 3 | 3 | 2 | 0 | 3 | +---+---.. 阅读详情

前言

这次终于没有真香了 q w q qwq qwq
这一章一共有6道题目,其中2道是以前做过的。
题目还是比较简单。恐怕要到第4或5章才开始难一些。
USACO:https://train.usaco.org/usacogate


USACO3.2.1 Factorials

思路:

沙雕模拟题我还能说什么?
把末尾的0弄掉再进行下一个阶乘。

代码:
#include <cstdio>
using namespace std;
typedef long long ll;

ll n,ans=1;

int main()
{
    scanf("%lld",&n);
    for (register ll i=1;i<=n;i++)
    {
        ans*=i;
        while (!(ans%10)) ans/=10;
        ans%=10000000000;
    }
    while (!(ans%10)) ans/=10;
    printf("%lld",ans%10);
    return 0;
}

USACO3.2.3 Stringsobits

思路:

又是一道沙雕题目。
有点类似康拓展开的方法。不解释。

代码:
/*
ID:ssl_zyc2
TASK:kimbits
LANG:C++
*/
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;

ll f[50][50],n,m,k;

int main()
{
    //freopen("kimbits.in","r",stdin);
    //freopen("kimbits.out","w",stdout);
    scanf("%lld%lld%lld",&n,&m,&k);
    f[0][0]=1;
    for (int i=1;i<=n;i++)
        for (int j=0;j<=i;j++)
        {
            if (j) f[i][j]=f[i-1][j]+f[i-1][j-1];
                else f[i][j]=f[i-1][j];
        }
    for (int i=0;i<=n;i++)
        for (int j=1;j<=m;j++)
            f[i][j]+=f[i][j-1];
    for (;n;n--) 
    {
        if (f[n-1][m]<k)
        {
            k-=f[n-1][m];
            putchar(49);
            m--;
        }
        else putchar(48);
    }
    return 0;
}

USACO3.2.4 Spinning Wheels

思路:

又是一道沙雕模拟。
由于在360秒后所有情况都会出现,所以就枚举0 ∼ \sim ∼ 360的时间。
对于任意一个时间,我们计算出每一个孔现在所在的位置,用 v i s [ i ] [ j ] vis[i][j] vis[i][j]表示齿轮 i i i在第 j j j度是否通光。
把 v i s vis vis数组标记好之后就枚举每一度,如果这一度5个轮子同时通光,就输出答案。

代码:
#include <cstdio>
#include <cstring>
using namespace std;

int v[6],sum[6],w[6][6][3];
bool vis[6][400];

bool check()
{
    for (int i=0;i<360;i++)
        if (vis[1][i]&&vis[2][i]&&vis[3][i]&&vis[4][i]&&vis[5][i]) return 1;
    return 0;
}

int main()
{
    for (int i=1;i<=5;i++)
    {
        scanf("%d%d",&v[i],&sum[i]);
        for (int j=1;j<=sum[i];j++)
        {
            scanf("%d%d",&w[i][j][1],&w[i][j][2]);
            for (int l=0;l<=w[i][j][2];l++)
                vis[i][(l+w[i][j][1])%360]=1;
        }
    }
    for (int k=0;k<=360;k++)
    {
        if (check()) return !printf("%d\n",k);
        memset(vis,0,sizeof(vis));
        for (int i=1;i<=5;i++)
            for (int j=1;j<=sum[i];j++)
            {
                w[i][j][1]=(w[i][j][1]+v[i])%360;
                for (int l=0;l<=w[i][j][2];l++)
                    vis[i][(l+w[i][j][1])%360]=1;
            }
    }
    printf("none\n");
    return 0;
}

USACO3.2.5 Feed Ratios

思路:

先 o r z orz orz一波数竞 d a l a o dalao dalao用数竞做。
由于只有3中配料,所以可以考虑 d f s dfs dfs每一种配料的数量。
这样的复杂度是 O ( 10 0 3 ) O(100^{3}) O(1003)。
然后判断一下是否成立就可以了。注意0的情况。

代码:
#include <cstdio>
#define A a[0][1]
#define B a[0][2]
#define C a[0][3]
using namespace std;

int a[4][4],ans[4];
bool flag;

bool check(int x,int y,int z)
{
    int k=-1;
    if (A) k=x/A;
    if (B) k=y/B;
    if (C) k=z/C;
    if (k<0)
    {
        if (!x&&!y&&!z) return 1;
        return 0;
    } 
    else
    {
        if (A*k==x&&B*k==y&&C*k==z&&x>=A&&y>=B&&z>=C) return 1;
        return 0;
    }
}

void dfs(int x,int s1,int s2,int s3)
{
    if (x==4)
    {
        if (check(s1,s2,s3))
        {
            printf("%d %d %d %d\n",ans[1],ans[2],ans[3],s1/a[0][1]);
            flag=1;
        }
        return;
    }
    for (int i=0;i<=100;i++)
    {
        ans[x]=i;
        dfs(x+1,s1+a[x][1]*i,s2+a[x][2]*i,s3+a[x][3]*i);
        if (flag) return;
    }
}

int main()
{
    for (int i=0;i<=3;i++)
        scanf("%d%d%d",&a[i][1],&a[i][2],&a[i][3]);
    dfs(1,0,0,0);
    if (!flag) printf("NONE\n");
    return 0;
}

USACO3.2.6 Magic Squares

题解 https://blog.youkuaiyun.com/SSL_ZYC/article/details/79472430

都不知道多久之前写的了。。。现在看来就是一个非常基础的 b f s bfs bfs。
可以不用 h a s h hash hash的。直接用8维数组搞定。。。


USACO3.2.7 Sweet Butter

题解 https://blog.youkuaiyun.com/SSL_ZYC/article/details/80921478

一个很简单的最短路。


后记

我真的是最菜的

问题 E: 素数方阵(C++算法题) 时间限制: 1.000 Sec 内存限制: 128 MB。 阅读详情

相关推荐

常用经典算法及讲解

常用经典算法及讲解 包括:贪婪算法,分而治之算法,动态规划,回溯,分枝定界 以及八女王问题,卡车更新问题 1. 最小数字子串   2. 邮票面值   3. 字符移动   4. 子集定和问题   5. 素数方阵   6. 全排列问题   7. 移盘子问题   8. N 女王问题   9. 组合问题  10. 电子锁  11. 高精度数加减法  12. 高精度数乘法  13. 高精度数除法(一)  14. 高精度数除法(二)  15. 高精度数阶乘  16. P×S=11...1  17. P×S=987654321...  18. 受控时钟  19. 高精度八进制除法  20. 八数码问题  21. 取火柴游戏  22. 取奇数游戏  23. 最长公共子串 等问题的源码(C语言)

1446:素数方阵 90'代码

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<math.h> using namespace std; bool qz[100000]; bool hz[100000]; int djx1,djx2; int l[6]...

qq_42552468的博客 1030

算法-素数方阵(信息学奥赛一本通-T1446).rar

算法-素数方阵(信息学奥赛一本通-T1446).rar

USACO3.2.6 香甜的黄油 解题报告

【问题描述】        农夫John发现做出全威斯康辛州最甜的黄油的方法:把糖放在一片牧场上,他知道N(1   农夫John很狡猾。像以前的巴甫洛夫,他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。他打算将糖放在那里然后下午发出铃声,以至他可以在晚上挤奶。    农夫John知道每只奶牛都在各自喜欢的牧场(一个牧场不一定只有一头牛)。给出各头牛在的牧场和牧

cqyz_holiday的博客 1696

Python海康相机api---超简单入坑学习必看

海康官网下载相机驱动​安装好以后找到Python的开发文件目录参考:D:\MVS\MVS\Development\Samples\Python\MvImport这几个文件很重要,想调用海康相机取图会用到.​为了写代码方便可以把这几个文件拷贝一下,跟你的api主文件放在同一个文件夹下可以减少80%的烦恼.​。

weixin_59360687的博客 3478

MATLAB对pcap文件抓包的读取

应用范围 常用的雷达信号,无线网通信信号的格式大多为pcap、wj文件,这里记录一下MATLAB读取pcap文件的方法,具体处理过程及读取协议针对不同的雷达有不同的处理方式,在这里不做说明。 程序 clc;clear;close all; %% 文件位置 filename= 'E:\File\JOB\JOB_1\data.pcap'; fid = fopen(filename,'r'); % 打开包 tmpPack = fread(fid,1350); % 只读前1350个数 读到

诗酒趁年华的博客 3579

USACO 3.3.2 Shopping Offers解题报告

写在前面:因为之前没写的C++的USACO Training的解题报告太多……所以就不写了,要是想要代码可以联系我:xiedong_1993@foxmail.com 这题就是传说中的五维背包,其实写起来难度不大。但是我写的时候可以说是遇到了重重困难。因为我对C++的掌握还不如Pascal,所以很多东西写的不是很熟。这题有一个很大的问题就在于,最后有用的只有五种物品,但是物品的编号却又很...

diekang6987的博客 272

Adams中AKISPL和DX函数的妙用:打造精准的非线性衬套模型

本文深入探讨了在Adams动力学软件中,如何巧妙运用AKISPL插值函数与DX等位移测量函数,构建高精度的非线性衬套模型。文章通过实战案例,详细解析了从单轴非线性刚度到完整六自由度耦合模型的实现步骤与调试技巧,帮助工程师将复杂的实验或有限元数据转化为可靠的多体动力学仿真模型,有效提升系统仿真置信度。

sky77的博客 318

【USACO2.3】解题报告

前言 本章主要是动态规划,但是其中几道题的方法比较多,我采用了其他的方法。 题目已经开始变难,有几道题还特别值得思考。已经达到普及T3/T4T3/T4T3/T4水平。 USACO:http://train.usaco.org/ 2.3.1.Longest Prefix 博客地址博客地址博客地址 2.3.2.Cow Pedigrees 思路: 这道题还是很有难度的。 很明显是一个DPDPDP,但...

stoorz 380

从“Segmentation fault”到流畅运行:深入解析CARLA Engine crash与Signal 11报错排查指南

本文深入解析了CARLA仿真平台运行时遭遇的Engine crash与Signal 11(Segmentation fault)报错。文章指出,该错误的根本原因常与NVIDIA显卡驱动版本不兼容有关,并提供了从日志分析、常见方案试错到驱动安全降级的完整排查指南,帮助用户从崩溃走向流畅运行。

pca5navigator的博客 463

scGPT实战指南:如何用生成式AI加速你的单细胞多组学研究?

本文提供了scGPT在单细胞多组学研究中的实战指南。详细介绍了从环境部署、数据预处理到细胞类型注释与扰动预测等核心任务的操作流程。通过利用生成式AI和Transformer基础模型,scGPT能够显著加速分析,并提升细胞注释的准确性及基因调控网络推断的深度,为研究人员提供了强大的AI分析引擎。

weixin_29215815的博客 402

USACO 3.2解题思路报告

Factorials 求n!最后面的非零位。O(n)模拟,为防止溢出,每乘一次都要先除去末尾的零,然后模100000,最后输出最后一位即可。Stringsobits 求出长度为N(开头可以是0)且1的个数不超过L的二进制串中第k小的串。f[i][j]表示长度为i且1的个数不超过j的串的数量; 边界情况:f[i][0]=1(1<=i<=N),f[0][i]=1(1<=i<=L),f[i][j]=

SmallSXJ的博客 483

ADRC自抗扰控制:工程抗扰“黑科技”,附C代码实战!

自抗扰控制(ADRC)是一种革新性的强鲁棒控制策略,通过主动估计和补偿系统扰动,无需精确数学模型即可实现优异控制性能。本文详细解析ADRC三大核心组件:跟踪微分器(TD)实现指令柔化,扩张状态观测器(ESO)实时估计总扰动,非线性状态反馈(NLSEF)完成动态补偿。针对二阶系统,文章提供完整的参数设计方法和C语言实现框架,包括关键函数fhan和fal的代码实现。ADRC将复杂对象"线性化"为积分器串联系统,显著提升抗扰能力,特别适用于电机控制、飞行器姿态等存在模型不确定性和强干扰的场景。

技术工作者 1734

USACO3.2.6 香甜的黄油 解题报告

【问题描述】   农夫John发现做出全威斯康辛州最甜的黄油的方法:把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油。当然,他将付出额外的费用在奶牛上。   农夫John很狡猾。像以前的巴甫洛夫,他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场。他打算将糖放在那里然后下午发出铃声,以至他可以在晚上挤奶。   ...

czsupercar的博客 813

i.MX6ULL系统移植 | 使用busybox制作根文件系统(1.29.0)

一. 下载BusyBox BusyBox是一个继承了大量Linux命令核工具的软件,像常用的ls、cp、mv、ifconfig等命令。一般下载BusyBox的源码,然后配置Busybox,选择自己想要的功能,最后编译即可。 BusyBox在官方可以直接下载:https://www.busybox.net/。目前最新是1.35.0,这里我使用1.29.0版本。 axel https://www.busybox.net/downloads/busybox-1.29.0.tar.bz2 下载之后解压: tar

Mculover666的博客(嵌入式) 1145

Alist/Openlist 的 WebDAV 老是连不上?别再乱试了,这才是标准答案!(1Panel如何使用Alist/Openlist作为备份账号)

😫服务器硬盘告急,想用 Alist/Openlist 的 WebDAV 备份却屡屡失败?别慌!本文带你揭秘正确的连接地址和权限配置,手把手教你搞定 1Panel 备份设置,让你的网盘秒变备份仓库!

XiaoqiangClub的博客 5586

USACO 2.3.1 Longest Prefix 解题报告

今天完全不行啊,USACO只做了一题,今天也只刷了两题,USACO还卡题了 Longest PrefixIOI'96 The structure of some biological objects is represented by the sequence of their constituents denoted by uppercase letters. Biologists are ...

weixin_30825581的博客 131

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

USACO2.3.3 Zero Sum 和为零 解题报告(dfs)

Description 请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N。 现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白,来将每一对数字组合在一起(请不在第一个数字前插入符号)。 计算该表达式的结果并注意你是否得到了和为零。 请你写一个程序找出所有产生和为零的长度为N的数列。 Input 单独的一行表示整数N (3 &...

bestsort 731

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

USACO 2.2.3 Runaround Numbers解题报告

Runaround Numbers Runaround numbers are integers with unique digits, none of which is zero (e.g., 81362) that also have an interesting property, exemplified by this demonstration: If you start at ...

weixin_30878501的博客 120

jre9下载 jdk9

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

USACO 2.3.3 Zero Sum 解题报告

Zero Sum Consider the sequence of digits from 1 through N (where N=9) in increasing order: 1 2 3 ... N. Now insert either a `+' for addition or a `-' for subtraction or a ` ' [blank] to run the digi...

weixin_30677617的博客 173

USACO Section2.3 Zero Sum 解题报告 【icedream61】

    zerosum解题报告------------------------------------------------------------------------------------------------------------------------------------------------【题目】   给你N。   把1到N依次写出,每相邻两个数字中间加上一个字符,三...

weixin_30555125的博客 242

USACO Section2.3 Controlling Companies 解题报告 【icedream61】

    concom解题报告------------------------------------------------------------------------------------------------------------------------------------------------【题目】   有至多100个公司,每个公司可能会有很多子公司,请你输出每个公司有哪...

weixin_30586257的博客 3271

USACO 2.3.2 Cow Pedigrees 解题报告

分类:DP 作者:ACShiryu 时间:2011-7-17 Cow Pedigrees Silviu Ganceanu -- 2003 Farmer John is considering purchasing a new herd of cows. In this new herd, each mother cow gives birth to two children. The r...

weixin_30305735的博客 98
上一篇: 埃雷萨拉斯寻宝【最短路】
下一篇: 【JZOJ4637】大鱼海棠【博弈论】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值