算法题
文章平均质量分 52
lzc__123
这个作者很懒,什么都没留下…
展开
-
2021“MINIEYE杯”中国大学生算法设计超级联赛(7)Link with EQ
题目描述:n个位置,第一个人随机选,后面的人会选择与其他所有人都最远的位置坐下(如果有多个,则随机选一个),问最多能坐多少人? 思路:考虑n个坐位,第一个人坐在两端任意一个位置时候能坐多少人 设f(x)为 x个位置按先坐两端能坐下多少人, 1.先坐到两端,f(1)=1,f(2)=1 2.然后下一个人必然会坐到(i+1)/2这个位置,问题就转化为f((i+1)/2)与f(i-(i+1)/2+1)能坐多少人,求和再减去(i+1)/2位置重复算的一个。 递推式如下: f(x)=f((i+1)/2)+f(i−(i+原创 2021-08-24 16:06:19 · 320 阅读 · 0 评论 -
2021杭电多校1 1007/HDU 6956 Pass!
思路就是找规律发现递推公式,用递推公式求解通项公式,bsgs分奇偶求解可以看这篇博客https://www.cnblogs.com/xiaopangpangdehome/p/15042792.html (有exbsgs和bsgs模板) 有一道类似的题: 随机数生成器(洛谷也有这个题目) 题目大意: 思路:利用特征方程求解通项公式,再用bsgs求解,时间复杂度是O(sqrt§),注意一些特殊情况。 代码: #include <bits/stdc++.h> #define ll long lon原创 2021-08-24 14:33:05 · 210 阅读 · 0 评论 -
2021“MINIEYE杯”中国大学生算法设计超级联赛(3)Rise in Price
设 fi,j,k 表示从 (1, 1) 走到 (i, j),一路上收集了 k 个钻石时,钻石的单价最高能涨到多少, 则 ans = max(k × fn,n,k)。 4 2021“MINIEYE 杯” 中国大学生算法设计超级联赛(3) 题解 对于固定的 (i, j) 来说,考虑两个状态 fi,j,x 和 fi,j,y,其中 x < y,如果 fi,j,x ≤ fi,j,y,则 状态 fi,j,x 一定不可能发展为最优解,可以剔除。对于每个 (i, j),用列表按照 k 升序保存所有 状态,并剔除不可能原创 2021-08-06 17:23:32 · 127 阅读 · 0 评论 -
2021牛客暑期多校训练营#4 B.Sample Game
#include<iostream> #define ll long long using namespace std; const int N=107,mod=998244353; ll a[N],b[N],p[N]; ll qmi(ll m, ll k, ll p) { ll res = 1 % p, t = m; while (k) { if (k&1) res = res * t % p; t = t * t % p;原创 2021-08-06 17:19:00 · 197 阅读 · 0 评论 -
简单的博弈论(1)
公平组合游戏ICG 若一个游戏满足: 由两名玩家交替行动; 在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关; 不能行动的玩家判负; 则称该游戏为一个公平组合游戏。 NIM博弈属于公平组合游戏,但城建的棋类游戏,比如围棋,就不是公平组合游戏。因为围棋交战双方分别只能落黑子和白子,胜负判定也比较复杂,不满足条件2和条件3。 有向图游戏 任何一个游戏可以看作一个图(或者状态机),每次操作都是沿着图(状态机)的边移动。 给定一个有向无环图,图中有一个唯一的起点,在起点上放有一枚棋子。两名玩家交替地把原创 2021-07-20 09:57:08 · 299 阅读 · 0 评论 -
动态规划(DP):I-区域
动态规划(DP):I-区域 #include<bits/stdc++.h> using namespace std; const int N=17; int a[N][N],sum[N][N]; int dp[N][N*N][N][N][2][2]; struct node{ int i,j,l,r,x,y; }fa[N][N*N][N][N][2][2]; struct node mm; void print(int i,int j,int l,int r,int x,int y) {原创 2021-07-14 14:00:03 · 441 阅读 · 0 评论