补题
Karmen Yang
ACM菜鸡
展开
-
2019ICPC香港J题(数位dp)
题意:求区间L~R中有多少个数X是与f(x)模m同余的,f(x)定义是每一位上的数与其他所有位上数的乘积取和。思路:裸的数位dp,dp[i][j][k]表示第i位,前面的位数和为j%m,(x-f(x))%m为k的情况下最后x与f(x)模m同余的方案数,状态转移就非常明显了,可以直接看代码#include<bits/stdc++.h>using namespace std;#define mod 1000000007typedef long long ll;typedef long d原创 2020-10-06 00:11:55 · 403 阅读 · 0 评论 -
POJ2411状压DP(0竖1横)
题意:mn的矩阵问填多少12 的分块可以填满的方案数思路:m*n是奇数时肯定不行,m或n有一个为1肯定只有一种。对于每一行设计状态假设填横着的则为连续的11,填竖着的则设为0,对于下一行来说,如果上一行相同位置如果是0,那么我只能填1,如果上一行相同位置为1,那么我可以填0,如果上一行相同位置为连续的两个1.那么我填11.最终态是dp[m][1<<(n-1)],因为需要填满,所以最后一行只能是全1.不能出现0,因为出现0需要用下一行的格子补齐;#include<cstdio>#原创 2020-10-04 14:05:29 · 185 阅读 · 0 评论 -
2017ICPC南宁E题题解
题意:2^r个人打比赛,一共比r轮决出冠军,主角的实力排在第k位,并且对于所有人,打败比他弱的人概率是p,打败比他强的人概率是(1-p);主角要尽可能的提高获胜的概率,求这个概率即可思路:我们想一想就知道,让比我厉害的个人先出局这样一定是获胜概率最大的。所以每一轮让比自己厉害的m个人内斗,自己去选择和比自己弱n个人的pk,最后到m为0或n为0的时候获胜概率就是固定的了。为p^n或者(1-p ) ^ m;把过程记忆化一下即可;#include<cstdio>#include<strin原创 2020-10-03 19:52:29 · 198 阅读 · 0 评论 -
2020.9.29排位赛第二场补题
2017ICPC乌鲁木齐A coins题意:给你n个正面朝下的硬币,你每次可以随意拿p个硬币,每次把这k个硬币往上抛,如此这样抛m次,问最后正面朝上的期望是多少。思路:概率DP,设dp[i][j]为第i次抛硬币后有j个硬币朝上的概率。一共有两种推法,第一种:正向推:我是已经抛了i次硬币了,那么dp[i][j]是我当前j个硬币朝上的概率,我设这次抛硬币个有k个硬币朝上,那么这里会有两种情况:第一种n-j>=p,那么我这次抛硬币都选正面朝下的。dp[i+1][j+k] += dp[i][j]*C原创 2020-09-30 09:43:23 · 86 阅读 · 0 评论 -
2020牛客多校第七场
B 递归/** @Author: Admin* @Date: 2020-08-01 13:30:25* @Last Modified by: Admin* @Last Modified time: 2020-08-01 14:43:10*/#include <bits/stdc++.h>using namespace std;#define pb push_back#define mp make_pair#define fi first#define se sec原创 2020-08-22 11:39:20 · 177 阅读 · 0 评论 -
2020牛客多校第六场
B 公式,向量秩#include<bits/stdc++.h>using namespace std;#define mod 1000000007#define INF 0x3f3f3f3f#define pi 3.141592654typedef long long ll;const int N = 2e7+2;ll pow_mod(ll a, ll n, ll m){ if(n == 0) return 1; int x = pow_mod(a, n/2,原创 2020-08-22 11:38:48 · 134 阅读 · 0 评论 -
2020牛客多校第八场
G 暴力#include<bits/stdc++.h>using namespace std;map<string,int>id;struct hh{ int a; int b; int c; int d; int sh[5];}e[510];char qh[17][20]={"","one","two","three","*","oval","squiggle","diamond","*","solid","open","str原创 2020-08-22 11:38:12 · 166 阅读 · 0 评论 -
2020HDU多校第四场
1002 贪心#include<bits/stdc++.h>using namespace std;#define mod 1000000007#define INF 0x3f3f3f3f#define pi 3.141592654typedef long long ll;const int N = 2e6+5;struct node{ int a,d; int ti;}w[1005];int cmp(node x,node y){ return x.原创 2020-08-22 11:39:27 · 178 阅读 · 0 评论 -
2020HDU多校第三场
1004 DP#include<bits/stdc++.h>using namespace std;#define N 100000int ch[N+10],sh[N+10],uh[N+10],mh[N+10];int main(){ int T; scanf("%d",&T); while(T--){ memset(ch,0,sizeof(ch)); memset(sh,0,sizeof(sh)); me原创 2020-08-21 20:25:29 · 179 阅读 · 0 评论 -
2020HDU多校第二场
1006 斐波拉契相关#include<cstdio>#include<iostream>using namespace std;typedef unsigned long long ull;const int N = 3e6;ull f[N] = {0,1,2,3};int main(){ for(int i = 4 ; i <= N ; i++) f[i] = f[i-1] + f[i-2]; int t ,m,n,x; scanf("%原创 2020-08-21 20:12:23 · 115 阅读 · 0 评论 -
2020HDU多校第一场
1004 推结论#include <bits/stdc++.h>using namespace std;#define pb push_back#define mp make_pair#define fi first#define se secondtypedef long long ll;typedef unsigned long long ull;typedef pair<int, int> PII;typedef pair<ll, ll> pll原创 2020-08-21 20:06:37 · 171 阅读 · 0 评论 -
2020牛客多校第五场
D 环上LIS#include<bits/stdc++.h>using namespace std;int n;int a[1555],p[1555];int main(){ scanf("%d",&n); for(int i = 1 ; i <= n ; i ++){ scanf("%d",&a[i]); a[i+n] = a[i]; } int ans = 1000000000; for(原创 2020-08-21 19:51:55 · 115 阅读 · 0 评论 -
2020牛客多校第四场
B 打表#include<bits/stdc++.h>using namespace std;#define mod 1000000007#define INF 0x3f3f3f3f#define pi 3.141592654typedef long long ll;const int N = 2e6+5;ll vis[N] = {1,1};ll n,c,ans,cnt=0;ll prim[N] ;///记录素数个数void fun(){///欧筛 for (ll i =原创 2020-08-21 19:45:24 · 179 阅读 · 1 评论 -
2020牛客多校第三场
A 贪心#include<bits/stdc++.h>using namespace std;#define mod 1000000007typedef long long ll;const int N = 2e6+5;ll pow_mod(ll a, ll n, ll m){///aµÄn´Î·½Ä£m if(n == 0) return 1; ll x = pow_mod(a, n/2, m); ll ans = x * x % m; if(n原创 2020-08-21 19:40:11 · 170 阅读 · 0 评论 -
2020牛客多校第二场
CDFS序#include<bits/stdc++.h>using namespace std;#define mod 1000000007typedef long long ll;const int N = 2e5+5;int d[N],tot=0,in[N];int num[N],ans[N];vector<int>point[N];void dfs(int pos,int pre){ in[pos] = ++tot; for(int i =原创 2020-08-21 19:32:15 · 106 阅读 · 0 评论 -
2020牛客多校第一场FJ
F判断两个无限循环串大小/** @Author: Admin* @Date: 2020-07-12 12:07:02* @Last Modified by: Admin* @Last Modified time: 2020-07-12 12:12:41*/#include <bits/stdc++.h>using namespace std;#define pb push_back#define mp make_pair#define fi first#defi原创 2020-08-21 12:27:30 · 97 阅读 · 0 评论 -
2020牛客第九场ABEFIK
A Groundhog and 2-Power Representation给出等式,让你直接求值,2(x)表示2^x直接模拟n = input();x = ""for i in n: if (i == '('): x += "**"; x += i;print(eval(x))B Groundhog and Apple Tree题意:思路:E Groundhog Chasing Death队友代码#include <bits/stdc++.h>原创 2020-08-21 12:14:38 · 106 阅读 · 0 评论 -
2020HDU第十场
1003 Mine Sweeper题意:给一个数n,要求你给出一个扫雷的图使得图中数字和为n思路:构造#include<bits/stdc++.h>using namespace std;#define mod 1000000007#define INF 0x3f3f3f3f#define pi 3.141592654#define pb push_back#define fi first#define se second#define mp make_pairtype原创 2020-08-21 10:35:58 · 276 阅读 · 0 评论 -
2020牛客多校第十场ADEI
A Permutation题意:要求构造一个长度为n排列满足:思路:直接暴力即可#include<bits/stdc++.h>using namespace std;#define mod 1000000007#define INF 0x3f3f3f3f#define pi 3.141592654typedef long long ll;const int N = 1e6+5;int vis[N], a[N],f;int main(){ int t,p;scan原创 2020-08-20 10:28:11 · 483 阅读 · 0 评论 -
HDU多校第五场
1001 Tetrahedron题意:给出直角四面体的三个直角边长的生成区间[1,n],求1/h^2的期望思路:推出结论:预处理一下1/i^2即可#include<bits/stdc++.h>using namespace std;#define mod 998244353#define INF 0x3f3f3f3f#define pi 3.141592654typedef long long ll;const int N = 6e6+5;ll qpow(ll base,原创 2020-08-20 08:48:57 · 199 阅读 · 1 评论 -
HDU多校第六场
1001:简单的求贡献的题目,分段求解最后求出期望即可代码:#include<bits/stdc++.h>using namespace std;#define p 1000000007#define INF 0x3f3f3f3f#define pi 3.141592654typedef long long ll;const int N = 2e5+5;ll sum[N],inv[N];ll a[N];int main(){ inv[1]=1,sum[1] = 1,原创 2020-08-19 11:03:55 · 123 阅读 · 0 评论 -
HDU多校第九场
1001 Tree题意,给一棵树,根节点为1,父节点可以去任意儿子节点,可以添加一条边使得u可以到达v,问添加这样一条边后所有的节点可以去向的节点总和的最大值思路:连接叶子结点和根节点,遍历一遍求得最大值#include<bits/stdc++.h>using namespace std;#define mod 1000000007#define INF 0x3f3f3f3f#define pi 3.141592654typedef long long ll;const int原创 2020-08-19 08:18:10 · 273 阅读 · 0 评论 -
HDU多校第八场
1003题意:给三个点判断顺时针还是逆时针输入思路:用向量叉积计算即可代码:#include<cstdio>using namespace std;#define mod 1000000007#define INF 0x3f3f3f3f#define pi 3.141592654typedef long long ll;const int N = 2e6+5;struct node{ ll x,y;}p[4];int main(){ int t;原创 2020-08-18 11:00:30 · 131 阅读 · 0 评论 -
HDU多校第七场
1007题意:给出n点,两个人在这些点中穿梭,要求每次穿梭的距离比上一次长。谁移动不了谁就输了,先手赢了输出YES,否贼输出NO思路:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int mod = 1e9 + 7;const int N = 2e3 + 5;const int INF = 0x3f3f3f3f;原创 2020-08-18 10:29:31 · 158 阅读 · 0 评论 -
2017 EC final J(差分)
题目题意:有n种扑克牌,每种扑克牌有ai张,每次可以打出3到5张连续的牌作为顺子,问这副牌能不能用顺子全打出来.思路:又差分序列的性质可知,对于序列a[i],求出差分序列b[i]=a[i]-a[i-1],差分序列前k项和sum[k]=a[k]。题目给出了a[1]……a[n],我们求出差分序列b[1]……b[n],令b[n+1]=0-a[n],那么最后的sum[n+1]=0.我们(条件允许)打出...原创 2019-11-17 19:54:06 · 169 阅读 · 0 评论 -
排位赛-190825 (2018 宁夏邀请赛)G - Factories
#include<cstdio>#include<algorithm>#include<cstring>#include<math.h>#include<iostream>using namespace std;int dp[222][222][222];///dp[k][i][j] 表示从i走到j在只经过 抢劫犯在第k小或者...原创 2019-08-25 20:54:07 · 257 阅读 · 0 评论 -
排位赛-190825 (2018 宁夏邀请赛)B Rolling The Polygon
#include<cstdio>#include<algorithm>#include<cstring>#include<math.h>#include<iostream>using namespace std;#define pi acos(-1.0)struct point{ double x,y; do...原创 2019-08-25 19:49:40 · 400 阅读 · 0 评论 -
排位赛-190824(2018 BAPC) E
https://blog.csdn.net/qq_23502651/article/details/89913954转载 2019-08-25 19:22:28 · 131 阅读 · 0 评论