- 博客(52)
- 收藏
- 关注
原创 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
452
原创 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
224
原创 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
252
原创 codeforces997C 组合计数(容斥原理)
题意:一个N*N的的方格,一共有三中颜色,进行填涂,两种填涂方案不同当且仅当存在大于一个格子的颜色不同,问所有的填涂方案中有多少存在行是同种颜色或者列是同种颜色的方案数。思路:直接求是行不通的,考虑总共的方案数是3^n*2,再容斥一下。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e6+5;const ll mod = 998244353;ll f[N],inv[N],
2020-10-03 12:48:08
330
原创 Lightoj 1007(线性筛求欧拉函数)
lightOJ 1278题意:求一个数可以写成多少种连续数相加的形式,如15可以写成(7+8)(4+5+6)(1+2+3+4+5)共三种思路:设 N = a[1]+a[2]+……+a[m];N = m*(a[1]+a[1]+m-1)/2;N/m = a[1] + (m-1)/2;a[1] = N/m + (m-1)/2;a[1]要求为小于N的整数,那么由N/m可知,m为N的因子,又因为(m-1)/2也必须为整数,则m必须为N的奇因子。#include<cstdio>#inclu
2020-09-30 11:15:39
217
1
原创 lightOJ 1278
lightOJ 1278题意:求一个数可以写成多少种连续数相加的形式,如15可以写成(7+8)(4+5+6)(1+2+3+4+5)共三种思路:设 N = a[1]+a[2]+……+a[m];N = m*(a[1]+a[1]+m-1)/2;N/m = a[1] + (m-1)/2;a[1] = N/m + (m-1)/2;a[1]要求为小于N的整数,那么由N/m可知,m为N的因子,又因为(m-1)/2也必须为整数,则m必须为N的奇因子。优化求因子个数。#include<cstdio>
2020-09-30 11:13:00
180
原创 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
148
原创 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
234
原创 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
212
原创 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
166
原创 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
218
原创 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
219
原创 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
166
原创 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
227
原创 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
166
原创 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
261
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
234
原创 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
138
原创 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
128
原创 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
138
原创 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
333
原创 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
563
原创 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
259
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
157
原创 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
321
原创 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
176
原创 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
207
原创 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
217
原创 概率DP入门题
关键在于找递推关系POJ2096题意:一个软件有s个子系统,会产生n种bug一个人每天发现一个bug,这个bug属于一个子系统,属于一种分类每个bug属于某个子系统的概率是1/s,属于某种分类的概率是1/n问发现n种bug,每个子系统都发现bug的天数的期望。递推式:dp[i][j]表示发现i个bug输入j个子系统的期望:dp[i][j]= i/n * j/s dp[i][j] ...
2019-11-16 21:32:23
177
原创 HDU5179
HDU 5179题意:对一个递减数的数(数位中不能有0),并且要求上一位对下一位求余==0的一个数,区间内有多少这种数。思路:数位DP,dp[i][j]表示i位的数字,前一位数字是j填后面的数字有多少符合题意的数字#include<cstring>#include<algorithm>#include<cstdio>#include<cmath...
2019-11-16 20:29:25
209
原创 HDU 3709 数位DP
HDU 3709#include<cstdio>#include<cstring>#include<iostream>using namespace std;typedef long long ll;const int N=20;ll l,r,f[N][N][2000];int T,bits[N];ll dfs(int pos,int x,int...
2019-11-16 20:11:41
95
原创 HDU3652(数位dp)
HDU 3652题意:求1~n里有多少个能被13整除且数字里面包含十三的数的个数#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;int a[15],n,ans;int dp[15][15][3];//dp[i]...
2019-11-16 19:39:35
204
原创 树形dp求树的直径
求树的直径#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N=100005;int n,m,t,ans;int f1[N],f2[N];int first[N],v[N],w[N];int nex[N];void add(int...
2019-11-15 17:34:06
221
原创 HDU4313
HDU 4313 Matrix/* dp[i][0]代表的是在当前以i节点为根节点的子树中,i所在的连通块中没有危险节点的最小花费;dp[i][1]代表的是在当前以i节点为根节点的子树中,i所在的连通块中有一个危险节点的最小花费;注意:是i所在的连通块允许出现一个危险节点 如果i是叶子节点:如果i为危险点dp[i][0] = inf,dp[i][1]= 0;否则dp[i][0] = dp...
2019-11-15 16:45:24
119
原创 LCIS
给一个序列a和序列b,求他们的最长公共上升子序列///LCIS 最长公共上升子序列 #include<cstdio>#include<algorithm>using namespace std;int a[555],b[555],dp[555];//dp[i]表示以b[j]结尾的序列的LCIS长度为多少 int path[555],pre[555],ans=0;...
2019-11-02 16:38:52
199
原创 C - Emergency Evacuation
Problem C Emergency EvacuationTime Limit: 3 secondsThe Japanese government plans to increase the number of inbound tourists to forty million in the year 2020, and sixty million in 2030. Not only inc...
2019-10-05 11:03:59
409
原创 差分入门
洛谷 P3078 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int main(){ long long n,a[2]={0,0},ans=0; scanf("%lld",&n); for(int i=1;i&...
2019-10-01 16:28:47
122
原创 区间最值问题(RMQ)-----ST算法入门
如题Balanced Lineup -POJ3264Time Limit: 5000MSMemory Limit: 65536KTotal Submissions: 76570Accepted: 35063Case Time Limit: 2000MSDescriptionFor the daily milking, Farmer John’s N cows (1 ≤ N ≤ 50...
2019-10-01 16:24:41
201
原创 排位赛-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
292
原创 排位赛-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
437
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人