【USACO1.5】解题报告

NOIP 2021 数列 解题报告 NOIP 2021 第二题 数列 解题报告。 阅读详情

前言

这章只有两道题,但是质量都不比上一章低。
第一题正解肯定很难,但是数据神奇般的把 O ( n 4 ) O(n^4) O(n4)即 O ( 25 0 4 ) O(250^4) O(2504)的程序过掉了。。。
第二题标准的深搜。
USACO:http://train.usaco.org


1.5.2.Arithmetic Progressions

这里只能给出神奇的卡常解法。对于想找正解的 O I e r OIer OIer们感到非常抱歉。
首先需要证明当 n ≥ 4 n\geq 4 n≥4时有 4 ∣ b 4|b 4∣b。这里给出题解的证明,非常简洁明了。

设 p = a 2 + b 2 p=a^2+b^2 p=a2+b2
1.当 a , b a,b a,b为偶数。设 a = 2 m , b = 2 m a=2m,b=2m a=2m,b=2m,则 p = 4 ( m 2 + n 2 ) p=4(m^2+n^2) p=4(m2+n2)。
2.当 a , b a,b a,b一奇一偶。不妨令 a = 2 m + 1 , b = 2 n a=2m+1,b=2n a=2m+1,b=2n,则 p = 4 ( m 2 + n 2 + m ) + 1 p=4(m^2+n^2+m)+1 p=4(m2+n2+m)+1
3.当 a , b a,b a,b为奇数。设 a = 2 m + 1 , b = 2 n + 1 a=2m+1,b=2n+1 a=2m+1,b=2n+1,则 p = 4 [ m ( m + 1 ) + n ( n + 1 ) ] + 2 p=4[m(m+1)+n(n+1)]+2 p=4[m(m+1)+n(n+1)]+2
由于 m , m + 1 m,m+1 m,m+1中有1个偶数,故 m ( m + 1 ) m(m+1) m(m+1)为偶数,同理, n ( n + 1 ) n(n+1) n(n+1)为偶数,即 m ( m + 1 ) + n ( n + 1 ) m(m+1)+n(n+1) m(m+1)+n(n+1)为偶数,有 p = 8 l + 2 p=8l+2 p=8l+2( l l l为自然数)
即 p   m o d   4 ≠ 3 p\bmod 4\neq 3 pmod4̸​=3.
即 n > = 4 n>=4 n>=4, b b b为偶数.
若 4 ∤ b 4\nmid b 4∤b,则 a a a为偶数。由于能写成 8 l + 6 8l+6 8l+6的形式的数无法写生两个完全平方数的和( 8 l + 6 = 4 ( 2 l + 1 ) + 2 8l+6=4(2l+1)+2 8l+6=4(2l+1)+2),即能 8 l + 6 8l+6 8l+6写成 4 l + 2 4l+2 4l+2的形式,但已证能写成 4 l + 2 4l+2 4l+2形式的数一定不是完全平方数),故 a a a为奇数,矛盾。
即 4 ∣ b 4\mid b 4∣b。

那么就分成 n &lt; 4 n&lt;4 n<4和 n ≥ 4 n\geq 4 n≥4的两块,前者每次加1,后者每次加4就可以了。

代码:
/*
ID:ssl_zyc2
TASK:ariprog
LANG:C++
*/

#include <cstdio>
#define N 135010
using namespace std;

int n,m,p[N],maxn,ok,OK;

int main()
{
	freopen("ariprog.in","r",stdin);
	freopen("ariprog.out","w",stdout);
    scanf("%d%d",&n,&m);
    if (n<4)
    {
        for (register int i=0;i<=m;i++)
     	 for (register int j=0;j<=m;j++)
          p[i*i+j*j]=1;
        for (register int j=1;j<=m*m*2;j++)
         for (register int i=0;i<=m*m*2;i++)
         {
         	if (i+(n-1)*j>m*m*2) break;
         	ok=1;	
         	for (register int k=0;k<n;k++)
         	 if (!p[i+k*j]) 
         	 {
         	 	ok=0;
         	 	break;
         	 }
         	if (ok) 
         	{
         		printf("%d %d\n",i,j);
         		OK=1;
         	}
         } 
    }
    else
    {
        for (register int i=0;i<=m;i++)
         for (register int j=0;j<=m;j++)
          p[i*i+j*j]=1;
        for (register int j=4;j<=m*m*2;j+=4)
         for (register int i=1;i<=m*m*2;i++)
         {
         	if (i+(n-1)*j>m*m*2) break;
         	ok=1;	
         	for (register int k=0;k<n;k++)
         	 if (!p[i+k*j]) 
         	 {
         	 	ok=0;
         	 	break;
         	 }
         	if (ok) 
         	{
         		printf("%d %d\n",i,j);
         		OK=1;
         	}
         } 
    }
    if (!OK) printf("NONE\n");
    return 0;
}

1.5.3.Mother’s Milk

思路:

标准的深搜。每次有六种转移方法:

  1. A → B A→B A→B
  2. A → C A→C A→C
  3. B → A B→A B→A
  4. B → C B→C B→C
  5. C → A C→A C→A
  6. C → B C→B C→B
    加上判重即可。

代码:
/*
ID:ssl_zyc2
TASK:milk3
LANG:C++
*/

#include <cstdio>
#define N 25
using namespace std;

bool p[N][N][N],num[N];
int x,y,z;

void dfs(int a,int b,int c)
{
	if (p[a][b][c]) return;
	p[a][b][c]=1;  //标记
	if (!a) num[c]=1;
	if (a>=y-b) dfs(a-(y-b),y,c);
	 else dfs(0,b+a,c);
	if (a>=z-c) dfs(a-(z-c),b,z);
	 else dfs(0,b,c+a);
	if (b>=x-a) dfs(x,b-(x-a),c);
	 else dfs(a+b,0,c);
	if (b>=z-c) dfs(a,b-(z-c),z);
	 else dfs(a,0,c+b);
	if (c>=x-a) dfs(x,b,c-(x-a));
	 else dfs(a+c,b,0);
	if (c>=y-b) dfs(a,y,c-(y-b));
	 else dfs(a,b+c,0);
}

int main()
{
	freopen("milk3.in","r",stdin);
	freopen("milk3.out","w",stdout);
	scanf("%d%d%d",&x,&y,&z);
	dfs(0,0,z);
	bool writed=0;
	for (int i=0;i<=z;i++)
	 if (num[i]) 
	 {
	 	if (writed) printf(" ");  //因为USACO不允许多余空格和换行,所以要小心
	 	printf("%d",i);
	 	writed=1;
	 }
	printf("\n");
	return 0;
}
acm竞赛----北大poj详细解题报告 不错的资源 收集了网上的一些解题报告 方便同学们学习参考 立即下载

相关推荐

HDU 1010-2500解题报告

HDU 1010-2500解题报告,ACMer可以借鉴一下

解题报告 (五) Burnside引理和Polya定理

Burnside引理   笔者第一次看到Burnside引理那个公式的时候一头雾水,找了本组合数学的书一看,全是概念。后来慢慢从Polya定理开始,做了一些题总算理解了。本文将从最简单的例子出发,解释Burnside引理和Polya定理。然后提供一些自己做过的和上述定理相关的题目和解题报告。   Burnside引理是为了解决m种颜色给n个对象染色的计数问题。  【例题1】如图1所示,2×2...

英雄哪里出来 31万+

pku经典题目解题报告

pku经典题目解题报告 pku经典题目解题报告

USACO Section1.5 Prime Palindromes 解题报告

    pprime解题报告—— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------【题目】   求a到b之间的...

weixin_30794491的博客 138

使用Dify打造视频生成工作流:从提示词到视频的完整指南

Dify作为开源LLM应用开发平台,通过可视化工作流编排实现从文本到视频的端到端生成,将创意周期从天级缩短至分钟级。核心流程包括提示词工程、视频API调用、存储分发和结果反馈。

牛奶夹心巧克力 3430

Ollama运行DeepSeek大模型调优指南:GPU与CPU协同实现性能最大化

Ollama运行DeepSeek大模型调优指南

qq_32358423的博客 3994

USACO 5.1&5.2解题报告

Fencing the Cows题目翻译:http://www.nocow.cn/index.php/Translate:USACO/fc凸包模板题,用Graham扫描法解决。Starry Night题目翻译:http://www.nocow.cn/index.php/Translate:USACO/starry搜索题,每发现一个星座便使用Floodfill算法找出完整星座并与已发现星座比对,若无符

SmallSXJ的博客 553

什么是无人机电源管理模块?电源管理模块有什么用处?

我来描述一下我的问题情景,电源管理模块的定义是,这里给出这个PX4官方对于电源管理模块的一些介绍,补充一下锂电池的放电原理大家就可以更好理解为什么需要电源管理模块

HRWVY0725的博客 2272

usaco1~5

蛋疼的新浪该关了,早该换个广告少访客素质高干净点的地方写东西,博客搬家很麻烦的样子- -',过去半年的东西先留个链接。   usaco.1~5 的解题报告   http://blog.sina.com.cn/nueqiuand1 转载于:https://www.cnblogs.com/eggeek/archive/2011/12/04/2275267.html...

weixin_30332705的博客 114

LangChain开发避坑指南:为什么Pylance总提示‘无法解析导入‘?实测7种修复方案

本文深入解析了在VS Code中使用LangChain开发时,Pylance频繁提示‘无法解析导入’的根本原因——Python解释器与语言服务器的环境路径不一致。文章提供了从基础排查到深度配置的7种实测修复方案,包括切换解释器、配置extraPaths、使用pyrightconfig.json等,旨在帮助开发者彻底解决此问题,提升AI应用开发效率。

weixin_28826521的博客 444

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 965

USACO2.1.5 Hamming Codes 海明码 解题报告(枚举)

Description 给出 N,B 和 D:找出 N 个编码(1 &lt;= N &lt;= 64),每个编码有 B 位(1 &lt;= B &lt;= 8),使得两两编码之间至少有 D 个单位的“海明距离”(1 &lt;= D &lt;= 7)。“海明距离”是指对于两个编码,他们的二进制表示法中的不同二进制位的数目。看下面的两个编码 0x554 和 0x234 之间的区别(0x554 表示一...

bestsort 463

maxim max96712+max96717调试笔记

mxxim max96712 和max96717调试笔记

libuping2023的博客 1万+

USACO Section 1.5 Prime Palindromes 解题报告

题目 题目描述 题目就是给定一个区间[a,b]((5 <= a < b <= 100,000,000)),我们需要找到这个区间内所有既是回文串又是素数的数字。 输入样例 5 500 输出样例 5 7 11 101 131 151 181 191 313 353 373 383 解题思路 因为数据范围特别大,如果我们直接枚举所有的素数然后再判断是不是回文串的话肯定会超时。在题目的下...

weixin_30340819的博客 145

GMSL转eDP芯片MAX9686X(ADI)

MAX96860/MAX96862/MAX96864解串器可以把单路或双路GMSL转换成eDP V1.4a,支持820MHzPCLK的无压缩的24bpp(每个像素的位数)视频,或660MHz的30bpp视频。芯片的GMSL支持NRZ编码的6Gbps/187Mbps的GMSL2,PAM4编码的12Gbps/187Mbps的GMSL3。同时支持单线(COAX模式)双向全双工传输控制数据和video数据。支持DSC压缩的芯片,最大支持像素时钟1080MHz@24bpp或者864MHz@30bpp,传输方式包括同轴

qflook的博客 2837

搞定最强大模型Gemini学生订阅,白嫖一年,包教包会

白嫖现在最强大模型

BUG猿的博客 2万+

USACO Section 1.5 Number Triangles 解题报告

题目 题目描述 现在有一个数字三角形,第一行有一个数字,第二行有两个数字,以此类推...,现在从第一行开始累加,每次在一个节点累加完之后,下一个节点必须是它的左下方的那个节点或者是右下方那个节点,一直累加到最后一层。问最大的累加和是多少? 在输入的时候因为格式的问题,所以我们会形成一个直角三角形。那么每个节点的下一个节点只能是它的正下方或者是右下方的那个节点。每个节点的值最大为100。 输入格式 ...

weixin_30457065的博客 160

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

USACO Section 1.5 Superprime Rib 解题报告

题目 题目描述 超级素数的定义如下:如果有个素数我们从右往左依次去掉一位数,每次去掉一位数剩下的数仍然是素数,那么我们称这个数是超级素数。例如7331,这是一个素数,从右往左依次去掉一位数733, 73, 7,这些数字仍然是素数,所以7331是一个超级素数。 输入一个数字n (1<=n<=8),代表要找的超级素数的长度。现在需要按照从小到大排序的所有长度为n的超级素数。 样例输入 4 ...

weixin_30378311的博客 186

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

USACO Section1.5 Number Triangles 解题报告

    numtri解题报告—— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------【题目】   有一个数字的金...

weixin_30687051的博客 142

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

USACO Section1.5 Superprime Rib 解题报告

    sprime解题报告—— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------【题目】   列出所有N位的...

weixin_30807677的博客 158

USACO1.5.4 Checker Challenge跳棋的挑战 解题报告(N皇后 回溯法)

Description 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子。 列号 0 1 2 3 4 5 6 ------------------------- 1 | | O | | | | | ------------------------- 2...

bestsort 839

解题报告 化学(即 USACO 5.3.1)

2、化学老师的难题(chemistry)(即USACO5.3.1) 问题描述 话说这天是化学课,loongint同学正在专注的写着数学学案,耳中回响着动听的“清养羹”、“炭涮羹”,说时迟那时快,化学老师突然来到它的身边,温柔的说:“尤龙童鞋,请你给大家说一下这个数学学案和化学课的关系吧”,loongint童鞋果断没有鸟他,于是,化学老师就发表了那个无比经典的言论“不要以为我是男老师...

weixin_30244681的博客 159

解题报告 物理(即 usaco 5.1.2)

3、美丽的星空(physics)(即usaco5.1.2) 问题描述 有一天,物理老师递给dsqwwe一张纸,神秘的说:”你要是把这个做出来,以后就不用交积累本了,否则,每天都交”,dsqwwe一阵狂喜,看都没看就答应了。仔细研究后才发现,物理老师的阴谋,但好几周未写积累本的他不能失败,于是,他想让你帮他编个程序。纸上的难题是这样的: 这张纸上画了一个n*m的星空图,当然,图中有许...

weixin_30501857的博客 155

USACO 3.3.4 range & 3.3.5 game1 解题报告

这两题都是DP,总体上没啥太大的难度。 range方程式: f[i][j] = min(f[i][j - 1], min(f[i - 1][j], f[i – 1][j - 1])) + 1; game1方程式:f[i][j] = sum[i][j] – min(f[i][j - 1], f[i + 1][j]); 程序上也没啥好主意的…… range: /* TASK:ra...

diekang6987的博客 182
上一篇: 【USACO1.4】解题报告
下一篇: 【HDU6344】调查问卷【状压】【模拟】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值