HDU 3944 组合数学+数论

MATLAB演示元胞自动机算法 一、元胞自动机理论 元胞自动机与格子理论是一个非常好的模型,许多复杂的问题都可以通过它来建立模型,下面就简要介绍一下。 元胞自动机 实质上是定义在一个具有离散、有限状态的元胞组成的元胞空间上,并按照一定的局部规则,在离散的时间维度上演化的动力学系统。 元胞 元胞又可称为单元、细胞,是元胞自动机的最基本的组成部分。 元胞具有以下特点: 元胞自动机最基本的单元。 元胞有记忆贮存状态的功... 阅读详情
/********************************************************************************
    很好的组合数学题,跟数论结合,Lucas定理的应用,关键是这个转化:
	C(n, k) % p = C(n % p, k % p) * C(n / p, k / p) % p
	C(n, k) % p = n! / (k! * (n - k)!) % p = n! * (k! * (n - k)!)^-1 % p
	现在要求(k! * (n - k)!) % p的逆元,因为k!*(n - k)!不可能包含素因子p,所以逆元必然存在。
注意求得的逆元可能小于0!
	然后dfs下就完事,但是因为每次求阶乘显然会超时,所以事先打表处理~(PS:此段出处Racebug)
	切数论题还是要小心。。。整数域跟素数域都很容易坑爹的~
********************************************************************************/
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <utility>
#include <cstdio>
#include <memory>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <map>
#include <set>
using namespace std;

//typedef long long LL;
typedef __int64 LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef map<int, int>::iterator MI;
typedef vector<int>::iterator VI;
typedef set<int>::iterator SI;

const int INF_INT = 0x3f3f3f3f;
const double oo = 10e9;
const double eps = 10e-7;
const double PI = acos(-1.0);

const int MAXN = 10004;

int pcnt, prm[MAXN], dp[1500][MAXN];
bool is[MAXN];

inline bool scan_d(int &num)
{
	char in;
	in = getchar();
	if(EOF == in) 
	{
		return false;
	}
	while(in < '0' || in > '9')
	{
		in = getchar();
	}
	num = in - '0';
	while(in = getchar(), in >= '0' && in <= '9')
	{
		num *= 10, num += in - '0';
	}
	return true;
}
void preprocess()
{
	pcnt = 0;
	memset(is, true, sizeof(is));
	is[0] = is[1] = false;
	prm[pcnt++] = 2;
	for (int i = 4; i < MAXN; i += 2)
	{
		is[i] = false;
	}
	int ind;
	for (ind = 3; ind * ind <= MAXN; ind += 2)
	{
		if (is[ind])
		{
			prm[pcnt++] = ind;
			for (int j = ind * ind, k = ind * 2; j < MAXN; j += k)
			{
				is[j] = false;
			}
		}
	}
	while (ind < MAXN)
	{
		if (is[ind])
		{
			prm[pcnt++] = ind;
		}
		ind += 2;
	}
	for (int i = 0; i < pcnt; ++i)
	{
		dp[i][0] = 1;
		for (int j = 1; j < MAXN; ++j)
		{
			dp[i][j] = (dp[i][j - 1] * j) % prm[i];
		}
	}
	return ;
}
int ext_gcd(int a, int b, int &x, int &y)
{
	if (0 == b)
	{
		x = 1;
		y = 0;
		return a;
	}
	int d = ext_gcd(b, a % b, x, y);
	int t = x;
	x = y;
	y = t - a / b * y;
	return d;
}
int bisearch(int p)
{
	int low = 0, high = pcnt - 1, mid = (low + high) >> 1;
	int res = mid;
	while (low <= high)
	{
		mid = (low + high) >> 1;
		if (p == prm[mid])
		{
			res = mid;
			break ;
		}
		if (p < prm[mid])
		{
			high = mid - 1;
		}
		else
		{
			low = mid + 1;
		}
	}
	return res;
}
int Lucas_dfs(int n, int k, int id)
{
	int p = prm[id];
	int _n, _k, buf, tmp, _tmp, y;
	_n = n / p;
	_k = k / p;
	n %= p;
	k %= p;
	if (n < k || _n < _k)
	{
		return 0;
	}
	tmp = (dp[id][k] * dp[id][n - k]) % p;
	ext_gcd(tmp, p, _tmp, y);
	if (_tmp < 0)
	{
		_tmp += p;
	}
	buf = (dp[id][n] * _tmp) % p;
	if (0 == _n && 0 == _k)
	{
		return buf;
	}
	return buf * Lucas_dfs(_n, _k, id);
}
void ace()
{
	int cas = 0;
	int n, k, p;
	int id;
	while (scan_d(n))
	{
		scan_d(k);
		scan_d(p);
		if (k > n - k)
		{
			k = n - k;
		}
		id = bisearch(p);
		printf("Case #%d: %d\n", ++cas, (Lucas_dfs(n + 1, k, id) + n - k) % p);
	}
	return ;
}
int main()
{
	preprocess();
	ace();
	return 0;
}

Python 爬虫实战:爬取评论数据做情感分析 摘要:本文介绍基于Python的京东商品评论爬取与情感分析全流程实现。通过Requests库抓取评论数据接口,结合JSON解析获取结构化评论信息。利用SnowNLP进行中文文本情感分析,量化用户评价的情感倾向(正面/负面/中性)。结果显示正面评论占比66.3%,负面评论13.3%,关键词分析发现"卡顿""发热"是主要负面因素。该方法可应用于产品优化、品牌管理等场景,为决策提供数据支持。 阅读详情

相关推荐

PL/SQL 中的数据导入和导出:CSV 文件格式详解

在 PL/SQL 开发中,数据的导入和导出是常见的操作。本文将深入探讨如何使用 PL/SQL 导入和导出 CSV 文件格式的数据,帮助你轻松地实现数据迁移、备份和数据交换等需求。CSV(Comma-Separated Values)是一种常见的文本文件格式,它以逗号作为字段的分隔符,每行表示一个记录。使用 CSV 格式可以方便地在不同的系统之间共享和传输数据。下面我们将分步介绍如何在 PL/SQL 中导入和导出 CSV 文件格式的数据。

pleaseprintf的博客 8837

数据结构:寻找第k小的数

寻找第k小的数 给定若干整数,请设计一个高效的算法,确定第k小的数。 输入格式: 测试数据有多组,处理到文件尾。每组测试数据的第1行输入2个整数n,k(1≤k≤n≤1000000)。 第2行输入n个整数,每个数据的取值范围在0到1000000之间。 输出格式: 对于每组测试,输出第k小的数。 输入样例: 5 3 1 2 2 2 1 9 3 1 2 3 4 5 6 9 8 7 输出样例: 2 3 提示: 需要设计的是高效的算法! 可以使用STL之sort、nth_element函数求解。 另外,由于输入数

三岁ღ的博客 2229

无人机基本组成部件

无人机基本组成部件

qq_37410522的博客 1万+

输入输出加速外挂

输入: void scan_d(int &num) { char in; bool neg=false; while(((in=getchar()) > '9' || in<'0') && in!='-') ; if(in=='-'){ neg=true; while((in=getchar()) >'9' || in<'0');

iCpC之旅 1303

量化爬虫实战:手把手教你搞定同花顺问财的hexin-v参数(附JS逆向思路与Cookie Hook技巧)

本文详细解析了如何通过JS逆向技术获取同花顺问财平台的`hexin-v`参数,包括Cookie Hook技巧和完整解决方案架构。从环境搭建到参数定位,再到生成逻辑逆向,手把手教你突破数据获取限制,为量化交易提供可靠数据支持。

weixin_42557803的博客 398

红外气体检测方案解析:从NDIR原理到物联网终端设计实践

气体检测是工业安全与环境监测的核心需求,其技术原理主要基于气体分子对特定物理或化学信号的响应。非色散红外(NDIR)技术作为一种物理检测方法,通过测量气体分子对特定波长红外光的吸收来定量浓度,因其不依赖化学反应,具备寿命长、抗干扰强和响应快等优势。在工程实践中,红外气体检测方案的价值在于为物联网终端设备提供了高可靠、低功耗的感知能力,广泛应用于工业过程监控、环境空气质量监测以及智能家居安全预警等场景。本文以一套集成了Microchip MCU、Axetris红外光源和Pyreos热释电传感器的参考设计为例,

weixin_30954817的博客 394

CodeForces - 1182D

题意:找到一个点作根,使同一深度的点有相同数目的边。 思路:经过简单的观察,实际上这样的树有一个特征:当某一个点作根符合题目要求时,每个相同深度的节点其子树的节点数目是相同的,或者是每个相同深度的节点作根,其子树结构相同。 那么答案只有两种情况,一种是叶子,一种是某个点(唯一一个),其每一个所连接的子树的节点数目相等。 因此面对判断一个点是否是答案的难题,可以比较每个节点作根时其子树节...

523

DataGridView 右键菜单复制(公共)

dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler( (sender1, e1) => { if (e1.Button == MouseButtons.Right) {

沁心渃水 2832

快速排序

#include <iostream> using namespace std; void scan_d(int &num) { char in; in=getchar(); while(in<'0'||in>'9') in=getchar(); num=in-'0'; w...

CarryJoe的博客 196

华为手环实时心率数据导出到UWP项目中

hello大家好呀O(∩_∩)O最近在做毕设 其中有个小功能要用到实时心率数据。查找网上的资料发现只有小米手环的实时心率数据导出但是没有华为手环的,我试了华为手环但是并不能行得通哈哈哈。现在分享一下华为手环实时心率数据导出的代码。

apple_63713858的博客 1582

《用 AI 赋能医药科研创新》目录(持续更新)

本专栏旨在指导医学科研和药物研发人员运用AI技术提升研究效率。内容包括:利用AI分析文献、识别研究热点、自动生成研究草稿;在新药研发中,通过AI优化临床方案设计、受试者筛选等环节;介绍AI理论基础如大语言模型、提示词工程学及智能体技术发展历程。专栏采用5000-9000字的长文形式,系统讲解AI在医药研发各环节的应用方法,帮助研究者缩短周期、降低成本,推动医药研发进入智能化新阶段。

MD Code 501

快速输入(开挂)

inline bool scan_d(int &amp;num) { char in;bool IsN=false; in=getchar(); if(in==EOF) return false; while(in!='-'&amp;&amp;(in&lt;'0'||in&gt;'9')) in=getchar...

满月照亮的路 219

深度学习实战103-基于KDD Cup 99数据集的搭建神经网络的检测系统(NIDS),通过对网络流量数据进行分析,提供完整代码

接下来,我们定义一个全连接神经网络模型。return x# 创建数据集和数据加载器# 初始化模型通过以上步骤,我们实现了一个基于PyTorch的简单网络入侵检测系统。这个系统使用KDD Cup 99数据集进行训练和评估。实际应用中,您可以根据需求调整模型结构、超参数以及数据预处理方法。希望对大家有所帮助!如果有任何问题或需要进一步的解释,请随时咨询。

微学AI的博客 1582

hdu 3944 DP? 组合数学与数论的结合

原题连接:http://acm.hdu.edu.cn/showproblem.php?pid=3944 题目大意:求杨辉三角中从塔尖到n行k列所经过的路径中,虽经过数字之和最小的一条路 经过观察,很容易想到的一个结论就是,这个最小值是从定点开始,然后到合适的位置45度斜着走到(n,k)的位置,也就是 //c(m,n) 表示n中选m个 c(0,n-k)+c(1,n-k+1)+c(2,n-k+

水帘洞天 1601

VB摄像头监控

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

hdu 3944 组合数学

哎,之前组合数学简直是弱的不能再差了。。从这道题中学到好多。。。 这题题意很简单,就是找一条如题意所说的路径,使数的总和最小,然后结果模一个素数。。要想找最小的方案,贪心即可,这里略掉。当k>n/2时,k=k-n/2,这样答案不会变。所以方案是SUM=n-k+C(n,k)+C(n-1,k-1)+...+C(n-k+1,0)。在由公式C(n,k)=C(n-1,k-1)+C(n-1,k)化简成SUM

my coding life 1133

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

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

hdu 3944 DP? (预处理+卢卡斯定理)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3944 题目大意: 给一个杨辉三角。然后给出行n和列m,问从第n行第m列往上走到顶部,所得的值的取模p后最小的和。 范围: n,m 思路; 很容易想到肯定是往边上走,然后一直往上走。因为边上都是1,而m>=n/2的时候,明显可以对称到左边来,所以只要算一边就好了。 然后就是组合数的

hahahaha 526

visio安装包

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

hdu3944

hdu3944题目中给出的杨辉三角形的形状带有误导目的,应该转化成对称的形状再去思考这个问题分两种情况第一个是在左区从目标位置向左上方走一直走到边界,然后再向右上方一直走到起点n-k个1加上C(n-k,0)+C(n-k+1,1)+C(n-k+2,2)+...+C(n,k)C(n-k,0)+C(n-k+1,1)+C(n-k+2,2)+...+C(n,k),又因为C(n-k+1,0)==C(...

weixin_30580341的博客 76

hdu 3944 Lucas定理--大组合数取模 多校赛

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3944 只需两步:1、从杨辉三角推公式,汗一下,高中会这个,但是大学只学了高数没学组合数学,于是呵呵了~~~~不会推导的话,看看这个http://blog.youkuaiyun.com/xieshimao/article/details/6699805 2、再谈Lucas定理,看我的另一篇博客吧(随后奉上)

Pilgrim 1411

HDU 3944解题报告

DP? Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 128000/128000 K (Java/Others) Total Submission(s): 2204    Accepted Submission(s): 705 Problem Description Figure 1 shows t

jhljx的专栏 657

hdu3944(Lucas定理+预处理)

hdu3944(Lucas定理+预处理) 分类: 数论2013-03-24 14:32 66人阅读 评论(0) 收藏 举报 题目:DP?   对于本题,由于访问的次数很大,所以当然得先预处理保存在数组中,然后用的时候就不用一次一次的再重复计算了,本题重在预处理。 [cpp] view plaincopy #includ

pi9nc的专栏 771

hdu 3944 lucas

需要分情况讨论。 然后求组合数 套上lucas。 #include using namespace std; typedef long long ll; ll n, k, p; ll powmod(ll a, ll b){ ll res = 1; a %= p; while(b){ if(b&1) res = res*a%p; b>>=1; a = a*a%p; } return

' 泪 添 无 言's blog 495

【组合数】ZOJ3557 HDU3944

大佬博客: http://blog.youkuaiyun.com/acdreamers/article/details/8037918 /* ZOJ 3557 题意: 从n个数中取m个数 并且这m个数字之间不能相邻 思路: n-m个数不取,留下n-m+1个空 将这m个数插入n-m+1个空中 所以C(n-m+1,m) */ #include using namespace std; typedef lo

yiluuuuu的博客 435

HDU 3944-DP?(Lucas定理+预处理)

题目地址:HDU 3944 题意:告诉你在一个在杨辉三角中的点(第n行m列),问你从(0,0)点走到该点经过的点最少的权值和(只能向下走或斜着走)。同时对素数p取余 思路:根据已知的那个点(n,m),如果 n/2 >= m ,那么从已知点出发,可以一直往斜的方向走,直到边界,那么 权值和就为 C(n,m)+C(n-1,m-1)……. 然后由组合数的公式两两合并可以得到 C(n+1,m)+(n-m

Rocky0429 1821

lucas数论定理学习

2015ICPC长春网络赛1010 考到了lucas+crt(中国剩余定理) 赛后补题ing。。 卢卡斯定理的百度百科 证明来自一本《初等数论》非常赞! hdu3037 模板题 #include #include #include #include #include #include #include #include #include //#includ

ICPC 奋战!奋战!奋战! 497

[HDU3944]DP? (组合数学Lucas定理)

题目描述传送门 题意:求在杨辉三角中从(0,0)走到(n,m)路上权值最小的方案%p的值。p为质数。题解杨辉三角是对称的,所以我们只考虑目标点在对称轴左边的情况 观察杨辉三角,可以发现一定是顺着一些1往下走然后斜着走到目标点 即Cmn+Cm−1n−1+Cm−2n−2+...+C1n−m+1+Cn−m,0+n−mC_n^m+C_{n-1}^{m-1}+C_{n-2}^{m-2}+...+C_{n

zyf2000 512

hdu 3944 数学组合+帕斯卡定理

Figure 1 shows the Yang Hui Triangle. We number the row from top to bottom 0,1,2,…and the column from left to right 0,1,2,….If using C(n,k) represents the number of row n, column k. The Yang Hui Triang

黑码 830
上一篇: HDU 4009 最小树形图
下一篇: HDU 4038 无题
codeforces_sphinx
博客等级 码龄15年 32粉丝 75原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值