摘要:
求x的最小正整数解,使得ax=b(mod m)那么显然ax - b = m * yax - my = b那么就套入Ax+By = K的不定方程中,然后用exgcd求解即可但这道题求最大正整数解,对于一组解,有这样一个推论x = x0 +k*(b/gcd(a,b)) y... 阅读全文
摘要:
注意这道题开得非常大,有2*1e7自己可以养成一种习惯,如果数据是很容易的话,可以自己手动输入极限数据来测试自己的程序#include#include#include#include#define REP(i, a, b) for(int i = (a); i pr... 阅读全文
摘要:
(1)开long long,不然中间结果会溢出(2)注意一开始的初始化,保险一点。#include#include#include#define REP(i, a, b) for(int i = (a); i >= 1; a = a * a % p; } retur... 阅读全文
摘要:
模板题注意exgcd函数要稍微记一下#include#include#include#define REP(i, a, b) for(int i = (a); i < (b); i++)#define _for(i, a, b) for(int i = (a); i ... 阅读全文
摘要:
这道题主要是状态很难想到首先可以看出每行每列不能超过2个棋子也就是说有0, 1, 2三种状态所以可以一行一行来处理那就用表示前i行,有列放了一个棋子,有列放了2个棋子的方案数放了0个棋子的列数是那么这个时候状态转移方程就非常好写了。对于当前这一行可以不放,放一个,放两... 阅读全文
摘要:
设为第i秒获得的最大值表示从当前世界是j,从pos走k步到当前点i的最大价值注意这里的sum可以利用前面的值逐步累加。我开始做的时候没有想到这一点单独求,然后就超时了。同时要注意循环的循序问题。#include#include#include#include#defi... 阅读全文
摘要:
首先吃饭时间长的排在前面更优,所以先排个序然后问题就是怎么分配这一波人的问题刻画状态有人和时间,然后分两队所以用表示前i个人,第一队用j时间,第二队用k时间的最小吃饭时间那么因为这么开数组会炸,所以我们要降一维。前i个人的等待总时间是固定的,所以第二队的时间可以推出来... 阅读全文
摘要:
void read(int& x) //isdigit头文件 cctype{ int f = 1; x = 0; char ch = getchar(); while(!isdigit(ch)) { if(ch == '-1') f = -1; ch = getch... 阅读全文
摘要:
这道题用到了悬线法,非常牛逼,可以看这个论文。https://blog.csdn.net/twtsa/article/details/8120269#include#include#include#include#define REP(i, a, b) for(int... 阅读全文
摘要:
一看到这道题就知道是树形dp之前做过类似的题,只不过保护的范围是1所以简单很多。这道题保护的范围是2,就复杂了很多。我就开始列状态,然后发现竟然有5种然后我就开始列方程。但是我考虑的时候是用一条链去思考的。显然应该要用深度为3的完全二叉树去思考。所以我写到一半发现自己... 阅读全文