PKUSC2018部分题解

pkusc2018游记 前言 从pkusc回来后并没有太多写游记的冲动,有空的时候总是想着,还是写题重要,游记什么的改天再写吧之类的,不过坑毕竟还是要补的,于是就有了这样一篇补坑文。 day0 下午去pku报道,排了超久队才领到牌牌。中途听纪中的人说这次thu的神仙数量可能不会太多,说不定机会会大一些。又听说了这次不能看榜,犹豫了一下,决定还是先把牌牌领回来再说。 之后和木子去p大里面逛了一圈,大老远的跑去勺... 阅读详情

.
LOJ的std+数据+当时讲题的记忆硬是刚了五道题(D1t3咕咕咕)
稍微写一下题解

LOJ6432 「PKUSC2018」真实排名

一道比较简单的题,不过需要注意很多细节
考虑排名不变的两种情况
1.自己分数 x x x不变,那么所有分数在 [ [ x 2 ] , x ) [[\frac{x}{2}],x) [[2x​],x)中的其他人的分数也不能变,否则必然有在自己后面的人到自己前面
2.自己分数 x x x翻倍,那么所有分数在 [ x , 2 x ) [x,2x) [x,2x)中的人分数必须翻倍,其他人则可以随意
预处理一下组合数,让后二分找范围就可以了
需要特判0

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 100010
#define M 998244353
#define LL long long
using namespace std;
int n,m,v[N],w[N]; LL js[N],inv[N];
inline LL pow(LL x,LL k,LL s=1){
	for(;k;x=x*x%M,k>>=1) k&1?s=s*x%M:0; return s;
}
inline LL C(int n,int m){
	if(m<0) return 0;
	if(n<m) return 0;
	return js[n]*inv[m]%M*inv[n-m]%M;
}
inline int rank(int x){
	return lower_bound(w+1,w+1+n,x)-w;
}
inline int count(int l,int r){
	if(l>r) return 0;
	int x=rank(l),y=rank(r+1);
	while(x&&w[x]>=l) --x;
	return y-x-1;
}
int main(){
	freopen("1.in","r",stdin);
	freopen("1.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i) scanf("%d",v+i);
	memcpy(w,v,sizeof w); sort(w+1,w+1+n);
	for(int i=*js=1;i<=n;++i) js[i]=js[i-1]*i%M;
	inv[n]=pow(js[n],M-2);
	for(int i=n;i;--i) inv[i-1]=inv[i]*i%M;
	for(int i=1;i<=n;++i){
		int r=count(v[i]+1>>1,v[i]-1)+1;
		int l=count(v[i],(v[i]<<1)-1);
		if(!v[i]) ++l;
		printf("%lld\n",(C(n-r,m)+C(n-l,m-l))%M);
	}
}

.
LOJ6433 「PKUSC2018」最大前缀和

很好的DP题,当时只水了一个 O ( 3 n ) O(3^n) O(3n)的状压
考虑最大(非空)前缀和的性质,假设这个位置是 x x x,很容易发现
1. ∑ i = x + 1 r a i &lt; 0 \sum_{i=x+1}^ra_i&lt;0 ∑i=x+1r​ai​<0 这里 r ≤ n r\le n r≤n
2. ∑ i = l x a i &gt; 0 \sum_{i=l}^xa_i &gt; 0 ∑i=lx​ai​>0 这里 1 &lt; l ≤ x 1&lt;l\le x 1<l≤x
为什么l要大于1,因为答案要求是非空,也就是说即使 ∑ i = 1 x &lt; 0 \sum_{i=1}^x&lt;0 ∑i=1x​<0也不可以取到0
让后,我们就可以根据这两条限制来做状压DP
设 F i F_i Fi​表示取用集合i的元素,能组成多少种排列满足条件2(任何一个后缀和大于0)
设 G i G_i Gi​表示取用集合i的元素,能组成多少种排列满足条件1(任何一个前缀和小于0)
预处理 S i S_i Si​表示集合i的元素之和
考虑转移,对于 F F F,枚举下一个加入的元素即可,需要保证当前状态和大于0才能转移
对于 G G G,枚举最后加入的元素是哪一个转移,需要保证当前状态和小于0才能转移
答案是 ∑ i ∈ S F i ∗ S i ∗ G S   x o r   i \sum_{i\in S}F_i*S_i*G_{S\ xor \ i} ∑i∈S​Fi​∗Si​∗GS xor i​

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 20
#define M 998244353
#define LL long long
using namespace std;
int n; LL s[1<<N],f[1<<N],g[1<<N],A;
inline void ad(LL& x,LL y){ x=(x+y)%M; }
int main(){
	scanf("%d",&n);
	for(int i=0;i<n;++i){
		scanf("%lld",s+(1<<i));
		f[1<<i]=1;
	}
	int m=(1<<n)-1;
	for(int i=1;i<=m;++i)
		s[i]=s[i&i-1]+s[i&-i];
	for(int i=1;i<=m;++i) if(s[i]>0)
		for(int j=m^i;j;j&=j-1) ad(f[i|j&-j],f[i]);
	*g=1;
	for(int i=1;i<=m;++i) if(s[i]<=0)
		for(int j=i;j;j&=j-1) ad(g[i],g[i^j&-j]);
	for(int i=1;i<=m;++i) ad(A,f[i]*s[i]%M*g[i^m]%M);
	printf("%lld\n",(A+M)%M);
}

LOJ6434咕咕咕

LOJ6435 「PKUSC2018」星际穿越

居然是倍增?还有这种操作?!
一个非常牛逼的解法,首先稍加观察就可以发现,往后走的次数不多于1
而且询问总是在起点的前面
那么就可以考虑利用建树让后倍增的做法来求
首先,我们记 F i F_i Fi​表示从i的后面任何一个节点除法,一步能走到的最前面的那个节点
这也算是在树上的父亲节点,处理方法就是对 L i L_i Li​做一次后缀最小值即可
让后,预处理出 S i S_i Si​表示从节点i出发,到1~i-1的所有点的最短路线中,不计往后走的那一步的路程之和
关于为什么不计往后走的那一步,稍后再解释
那么显然 S i = S F i + i − 1 , S 1 = 0 S_i=S_{F_i}+i-1,S_1=0 Si​=SFi​​+i−1,S1​=0
接下来考虑如何求答案
考虑差分,我们将 [ l , r ] [l,r] [l,r]拆成两个区间答案的差
让后考虑计算节点 x x x到 [ 1 , r ] [1,r] [1,r]的距离之和
首先,如果 L x &lt; r L_x&lt;r Lx​<r就说明,从 x x x出发可以一步到达r,那么所有在 L x L_x Lx​之前的节点,除了第一步,剩下要走的步数之和,就正好是 S L x S_{L_x} SLx​​
为什么?考虑从 L x L_x Lx​出发走到一个节点i的路线,要么就是一直向前,要么就是往后走了一步,而如果,从 L x L_x Lx​可以往后一步走到,那么从 x x x出发,也肯定可以一步走到
所以,可以得到答案为 S L x + r S_{L_x}+r SLx​​+r
如果 r &lt; L x r&lt;L_x r<Lx​,那么就考虑走 F x F_x Fx​,我们通过倍增计算出至少要走几步才能走到一个比 r r r要前的位置,设走了 t t t步,走到了 y y y且 y &lt; = r y&lt;=r y<=r
那么答案就是 ( t + 1 ) ∗ r + S y (t+1)*r+S_y (t+1)∗r+Sy​
首先,由 x x x到 F x F_x Fx​相当于往后走一步,再往前走一步,需要2步,但是为什么不是 2 t 2t 2t而是 t + 1 t+1 t+1?因为向后走的步数,只需要最多1步,往后走过一次,如果已经到达过x之后的节点,再从x走到 F x F_x Fx​就只需要1步,这样就可以完美解决本题了

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 300010
#define LL long long
using namespace std;
int n,m,f[18][N],l[N]; LL S[N];
inline int gcd(int x,int y){
	while(y^=x^=y^=x%=y); return x;
}
inline LL gf(int x,int y){
	if(!x) return 0;
	int A=1; y=l[y];
	if(x<y){
		++A;
		for(int i=17;~i;--i)
			if(x<f[i][y]) y=f[i][y],A+=(1<<i);
		y=f[0][y];
	}
	return A*x+S[y];
}
int main(){
	scanf("%d",&n); f[0][n+1]=n;
	for(int i=2;i<=n;++i) scanf("%d",l+i);
	for(int i=n;i>1;--i) f[0][i]=min(l[i],f[0][i+1]);
	for(int i=1;i<18;++i)
		for(int j=1;j<=n;++j)
			f[i][j]=f[i-1][f[i-1][j]];
	for(int i=2;i<=n;++i) S[i]=S[f[0][i]]+i-1;
	scanf("%d",&m);
	for(int l,r,x;m--;){
		scanf("%d%d%d",&l,&r,&x);
		LL A=gf(r,x)-gf(l-1,x); l=r-l+1; r=gcd(A%l,l);
		printf("%lld/%d\n",A/r,l/r);
	}
}

.
LOJ6436 「PKUSC2018」神仙的游戏

口算什么的不存在的
以后见到01字符串匹配类似的,都可以往FFT这方面去考虑
我们设 A i = [ s i = 1 ] , B i = [ s n − i − 1 = 0 ] A_i=[s_i=1],B_i=[s_{n-i-1}=0] Ai​=[si​=1],Bi​=[sn−i−1​=0]
那么求一个A和B的卷积 C k = ∑ i = 0 k A i ∗ B k − i C_k=\sum_{i=0}^kA_i*B_{k-i} Ck​=∑i=0k​Ai​∗Bk−i​
发现,当 C k = 0 C_k=0 Ck​=0时,k可能为一个border
为什么是可能?参考样例,简单来说,同一个?不能变成两个不同的数字
于是利用另外一个性质,如果 x x x为周期,那么 k x kx kx为周期,k为正整数
枚举倍数判断一下就好了

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 1100000
#define M 998244353
#define LL long long 
using namespace std;
char s[N]; int vis[N];
int n,m,W[N],iW[N],A[N],B[N];
inline LL pow(LL x,LL k,LL s=1){
	for(;k;x=x*x%M,k>>=1) k&1?s=s*x%M:0; return s;
}
inline void init(){
	for(int j=1;j<N;j<<=1){
		W[j]=pow(3,(M-1)/j);
		iW[j]=pow(W[j],M-2);
	}
}
inline void NTT(int* A,int n,int g){
	static int b[N]; memcpy(b,A,n<<2);
	for(int i=0,j=0;i<n;++i){
		if(i>j) swap(b[i],b[j]);
		for(int l=n>>1;(j^=l)<l;l>>=1);
	}
	for(int k=1;k<n;k<<=1){
		LL w=g?W[k<<1]:iW[k<<1],u,v,z=1;
		for(int j=k;j<n;++j&k?z=z*w%M:z=1,j|=k){
			u=b[j^k]; v=z*b[j]%M;
			b[j^k]=(u+v)%M; b[j]=(u-v+M)%M;
		}
	}
	if(!g){
		g=pow(n,M-2);
		for(int i=0;i<n;++i) A[i]=(LL)b[i]*g%M;
	} else memcpy(A,b,n<<2);
}
int main(){
	scanf("%s",s);
	init(); n=strlen(s);
	for(int i=0;i<n;++i){
		A[i]=s[i]=='0';
		B[i]=s[n-i-1]=='1';
	}
	for(m=1;m<n+n;m<<=1);
	NTT(A,m,1);
	NTT(B,m,1);
	for(int i=0;i<m;++i) A[i]=(LL)A[i]*B[i]%M;
	NTT(A,m,0);
	for(int i=0;i<m;++i) vis[abs(n-i-1)]+=A[i];
	LL A=0;
	for(int i=1;i<n;++i){
		bool f=0;
		for(int j=n-i;j<=n;j+=n-i)
			if(vis[j]){ f=1; break; }
		if(!f) A^=(LL)i*i;
	}
	A^=(LL)n*n;
	printf("%lld\n",A);
}

.
LOJ6437 「PKUSC2018」PKUSC

被精度卡哇!了
参考 jefflyy \text{jefflyy} jefflyy的博客,我们可以发现一个显然的解法
每个敌人画圆,和多边形求交,弧长之和除以2π即可
因为我的做法,导致精度出现巨大问题(全程都在用方程算而不是角度,就连弧中点也是拿复数开方)
最后不得不对着数据调了一天

#include<math.h>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define eps 1e-6
#define db double
#define N 1010
#define pi 3.14159265358979323846
#define pi2 6.283185307179586476925286766559
using namespace std;
inline int sgn(db x){
	return fabs(x)<eps?0:(x>0?1:-1);
}
struct vec{ db x,y; };
typedef vec point;
inline bool operator==(vec a,vec b){ return a.x==b.x&&a.y==b.y; }
inline bool operator!=(vec a,vec b){ return sgn(a.x-b.x)||sgn(a.y-b.y); }
inline bool cx(point a,point b){ return a.x<b.x; }
inline bool ca(point a,point b){
	if(a.y*b.y<0) return sgn(a.y)<sgn(b.y);
	return sgn(a.y)*(a.x-b.x)>0;
}
inline db dot(vec a,vec b){ return a.x*b.x+a.y*b.y; }
inline db crs(vec a,vec b){ return a.x*b.y-a.y*b.x; }
inline db l2(vec a){ return dot(a,a); }

inline vec operator+(vec a,vec b){ return (vec){a.x+b.x,a.y+b.y}; }
inline vec operator-(vec a,vec b){ return (vec){a.x-b.x,a.y-b.y}; }
inline vec operator*(vec a,db  x){ return (vec){a.x*x,a.y*x}; }
inline vec operator/(vec a,db  x){ return (vec){a.x/x,a.y/x}; }
inline vec operator*(vec a,vec b){ return (vec){a.x*b.x-a.y*b.y,a.y*b.x+a.x*b.y}; }
inline vec sqrt(vec x,vec f){
	db a=x.x,b=x.y;
	b=b*b/4;
	//u-v=a,uv=b
	db c=sqrt(a*a+4*b);
	db u=(c+a)/2,v=(c-a)/2;
	u=sqrt(u); v=sqrt(v);
	if(sgn(u*v)!=sgn(x.y)) v=-v;
	vec y=(vec){u,v};
	if(crs(f,y)<0) y=(vec){-u,-v};
	return y; 
}
inline db ang(vec x){ return atan2(x.y,x.x); }
inline int cross(point a,point A,point b,point B){
	return sgn(crs(A-a,b-a))*sgn(crs(A-a,B-a))<0
		&& sgn(crs(B-b,a-b))*sgn(crs(B-b,A-b))<0;
}
inline int on(point x,point a,point b){
	if(a.x>b.x) swap(a,b);
	return (a.x<x.x||fabs(a.x-x.x)<1e-2)
		&& (x.x<b.x||fabs(x.x-b.x)<1e-2);//1e-5会WA,点积判断会WA
}
point p[N],w[N],s[N];
int n,m,c;
inline void intersection(point t,point a,point b){
	db x,y;
	db A=(a-b).y,B=-(a-b).x,C=A*a.x+B*a.y,r2=dot(t,t);
	if(!sgn(A)){
		y=C/B;
		if(sgn(r2-y*y)<0) return;
		x=sqrt(r2-y*y);
		if(on((vec){x,y},a,b)) w[++c]=(vec){x,y};
		x=-x;
		if(on((vec){x,y},a,b)) w[++c]=(vec){x,y};
	} else if(!sgn(B)){
		x=C/A;
		if(sgn(r2-x*x)<0) return;
		y=sqrt(r2-x*x);
		if(on((vec){x,y},a,b)) w[++c]=(vec){x,y};
		y=-y;
		if(on((vec){x,y},a,b)) w[++c]=(vec){x,y};
	} else {
		db dA=A*A+B*B,dB=-2*A*C,dC=C*C-r2*B*B;
		db dlt=dB*dB-4*dA*dC;
		if(dlt<0) return;
		x=(-dB+sqrt(dlt))/(dA*2.);
		y=(C-A*x)/B;
		if(on((vec){x,y},a,b)) w[++c]=(vec){x,y};
		x=(-dB-sqrt(dlt))/(dA*2.);
		y=(C-A*x)/B;
		if(on((vec){x,y},a,b)) w[++c]=(vec){x,y};
	}
}
inline int in(point t){
	int A=0;
	point o=(vec){1.3893e6,3.38756e6};
	for(int i=1;i<=m;++i)
		if(cross(o,t,s[i],s[i+1])) ++A;
	return A&1;
}
inline db ra(db x){ if(x<-pi) return x+pi2; return x; }
int main(){
//	freopen("1.in","r",stdin);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i) scanf("%lf%lf",&p[i].x,&p[i].y);
	for(int i=1;i<=m;++i) scanf("%lf%lf",&s[i].x,&s[i].y);
	s[m+1]=s[1]; db A=0;
	for(int i=1;i<=n;++i){
		c=0;
		for(int j=1;j<=m;++j)
			intersection(p[i],s[j],s[j+1]);
//		for(int j=1;j<=c;++j) printf("%lf\n",ang(w[j])-ang(p[i]));
		if(c<2){
			if(in(p[i])) A+=1.;
		} else {
			sort(w+1,w+1+c,ca);
			c=unique(w+1,w+1+c)-w-1;
			w[c+1]=w[1];
			for(int j=1;j<c;++j)
				if(in(sqrt(w[j]*w[j+1],w[j]))){
					db t=ang(w[j+1])-ang(w[j]);
					if(t<-1e-2) t+=pi2;//这里WA得我也是醉了
					A+=t/pi2;
				}
			if(in(sqrt(w[c]*w[c+1],w[c]))){
				db t=ang(w[c+1])-ang(w[c]);
				if(t<0) t+=pi2;
				A+=t/pi2;
			}
		}
	}
	printf("%.5lf\n",A);
}

大概就是这些,应该不会再更新了

快速了解Spyder 一 面板介绍菜单栏:放置所有功能工具栏:放置快捷菜单,可以通过菜单栏中的View的Toolbars的复选框来勾选工作区:写代码的地方属性页的标题栏:可以显示当前代码的名字和位置查看栏:查看文件、调试时的对象及变量输出栏:查看程序的输出信息,也可以作为shell终端来输入Python语句状态栏:用来显示当前文件权限、编码,光标指向位置和系统内存二 注释功能注释功能为编写代码很常用功能,下面介绍Spy... 阅读详情

相关推荐

MobaXterm详细使用教程

当然MobaXterm的功能远不止这些,但这些是最基本,最常用的,因此先拿出来讲。点击确定后,输入密码(输入密码时并不会显示,只管输入后按确定即可,第一次登陆成功后会提示保存密码,一般选择同意),就可以连接上虚拟机了。(2) 我们可以直接apt-get安装vim等常用功能(或者官网下载插件),实现在windows下模拟linux环境,这样就可以使用vi命令准备INCAR文件,也可以使用Gnuplot进行绘图。支持 Unix 命令(bash,ls,cat,sed,grep,awk,rsync,…

博客 4万+

「PKUSC2018」真实排名 (简单组合数)

题面:「PKUSC2018」真实排名 题解 分类讨论,对于第 i 个人: 若不翻倍,则对于满足的任意 j ,第 j 个人必须不翻倍,否则第 i 个人的排名一定变,因为其他人无论翻不翻倍,对 i 的排名没有影响。设这样满足条件的 j 的数量为 m ,那么方案数就为组合数; 若翻倍,则对于满足的任意 j ,第 j 个人必须翻倍,原因同理。设这样满足条件的 j 的数量为 p ,那么方案数就为组合数; 所以第 i 个人的总方案数为。 提示:代码中慎用快速乘!因为我把考试源代码删了快速乘就A了(QAQ)

偶耶的博客 299

Android音频混音器AudioMixer实战:从多路输入到设备播放的完整流程解析

本文深入解析了Android平台上音频混音器AudioMixer的完整工作流程,涵盖从多路音频输入、轨道创建与配置、AudioBufferProvider数据源接入,到核心混音处理与最终设备播放的全过程。文章重点探讨了如何高效管理音频数据流、配置音量与重采样参数,并提供了缓冲区管理与性能优化的实战技巧,帮助开发者构建稳定、低延迟的音频应用。

l3m4n的博客 340

LOJ6436. 「PKUSC2018」神仙的游戏 [NTT]

传送门 思路 首先通过各种手玩/找规律/严谨证明,发现当\(n-i\)为border当且仅当对于任意\(k\in[0,i)\),模\(i\)余\(k\)的位置没有同时出现0和1。 换句话说,拿出任意一个1的位置\(x\),一个0的位置\(y\),那么对于\(|x-y|\)的所有约数\(i\),\(n-i\)均不合法。 考虑用NTT优化这个过程:记两个多项式\(A(x),B(x)\)。若\...

dfn8726的博客 194

C++结合大漠插件实现DNF自动化脚本:从原理到实战

自动化技术通过模拟用户操作,实现重复性任务的自动执行,其核心原理在于对系统输入输出接口的精确控制。在Windows平台,这通常涉及窗口管理、图像识别与键鼠模拟等技术。这些技术为软件自动化测试、办公流程自动化及特定场景的辅助工具开发提供了工程实践基础。大漠插件作为国内广泛使用的Windows自动化开发组件,封装了上述底层操作,显著降低了开发门槛。通过其提供的COM接口,开发者可以高效实现窗口绑定、后台找图找色及内存读写等关键功能。本文以《地下城与勇士》为例,详细解析如何利用C++集成大漠插件,构建一个稳定、高

weixin_34185512的博客 567

BitLocker恢复密钥丢失?从原理到实战的完整解锁与系统重生指南

磁盘加密技术是数据安全的核心防线,它通过对存储设备上的数据进行编码,确保未经授权的用户无法访问。其原理主要基于加密算法(如AES)与密钥管理机制,在操作系统启动前或数据读写时进行实时加解密。这项技术的核心价值在于防止设备丢失或被盗后的数据泄露,尤其对于笔记本电脑和移动设备至关重要。典型的应用场景包括企业办公电脑、存有敏感信息的个人设备以及符合合规性要求的行业。当使用Windows系统自带的BitLocker加密功能时,若因硬件改动、系统更新等触发保护机制,用户可能会面临需要输入恢复密钥才能启动的困境。本文聚

weixin_34006965的博客 487

[PKUSC2018]星际穿越(倍增)

题意:n个点的图,点i和[l[i],i)的所有点连双向边。每次询问(l,r,x)表示x到[l,r]的所有点的最短路径长度和。 首先这题显然可以线段树优化建图,但是需要比较好的常数才能通过45分,还需要发掘性质。 先不考虑往右走的情况,对于一个点x,每个点i与x的最短距离一定形成一个个连续区间,即:设f[i][j]表示i走j步能到的最左的点,则$f[i][j+1]=\min\limits_{k=...

weixin_30609331的博客 153

深入浅出一文搞懂Raft协议

前言 在分布式的世界里,要说最核心最复杂的功能,一致性的实现无出其右,之前的paxos算法堪称经典,被认为是同类算法中效果最好的,基本上成为分布式一致性的代名词,但是paxos算法也是出了名的难理解,而且相当不好实现。本人也花了很多时间、看了很多材料也没有真正理解。所以基于paxos的思想进行的一致性算法的简化和实现就成为了现实的需求,在此背景下,本文的主角Raft就出现了。 Raft算法的头号目标就是容易理解(UnderStandable),这从论文中就可以看出来。当然,R...

microGP的专栏 6485

【PKUSC2018】星际穿越【结论】【倍增dp】

钿头银篦击节碎,血色罗裙翻酒污

Lstdo的博客 303

ABAP 7.40 新语法介绍系列之六:使用 FILTER 关键字对 ABAP 内表进行过滤

笔者之前写过的关于 ABAP 740 新语法的文章:本文介绍另一个新的关键字:FILTER.FILTER 是 ABAP 740 中引入的一个关键字,用于简化数据操作,它能够将内部表(Internal Table)中的数据按特定的条件进行过滤,并生成一个新的内部表。FILTER 的引入旨在使代码更加现代化和高效,尤其是在面对大量数据需要过滤的情况下。传统上,开发人员可能需要使用 LOOP AT 结合条件判断来实现,但使用 FILTER 关键字后,代码显得更加简洁且易于维护。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1167

立体仓库WCS控制系统-AGV通信代码

string str = "任务下发,WCS->NT8000(q-Message),ikey:" + p.ikey.ToString() + "fromStation:" + p.fromStation.ToString() + "toStation:" + p.toStation.ToString();if (nt8000.Connect(_ServerAddr, _ServerPort)) QueueSpeech.AddQueue(string.Format("与NT8000重连成功"));

xdpcxq的专栏 2201

PKUSC2018凉凉记和部分题解?

游记 由于考得很差。。所以就简略一点吧。。 附上一个DAY2T1的奇怪做法 DAY0:早上就到了,去颐和园玩了一下,然后下午再北大玩了一下,晚上颓废&amp;amp;做了一点作业 DAY1:数学切了4T,剩下的都切不动了,但感觉似乎不是特别差。T1看完就切了。。以为和WC一样,会记录提交次数,然后出了几个数据,然后就过了。。做第二题,状态想到没有前缀和大于0.。然后第二个状态一直想的是这些数为前缀...

OZY的博客 453

微信小程序 - 解决web-view嵌套H5网页白屏问题,将h5网页嵌套在webview页面出现无法加载一片空白,详解微信小程序<web-view>页面跳转出现白屏情况(无论本地还是线上H5都能解决)

微信小程序解决web-view打开网页在手机上出现白屏的问题,小程序web-view嵌套H5项目白屏问题分析及解决,使用web-view组件加载H5网页链接后白屏情况,小程序嵌套的h5网页中跳转页面时也有可能出现白屏问题,嵌套webview页面时,出现白屏,WebView 加载不出网页,微信小程序<web-view>页面跳转出现白屏解决方法,解决WebView白屏空白,H5内嵌第三方小程序打开白屏,微信小程序嵌入h5页面加载空白,微信小程序web-view跳转h5白屏,解决微信小程序web-view打开网页

🏆 前端领域优质创作者 1万+

[LOJ 6433][PKUSC 2018]最大前缀和

[LOJ 6433][PKUSC 2018]最大前缀和 题意 给定一个长度为 \(n\) 的序列, 求把这个序列随机打乱后的最大前缀和的期望乘以 \(n!\) 后对 \(998244353\) 取膜后的值. 前缀和不能为空. \(n\le 20\). 题解 首先这个期望显然是逗你玩的...只是计数而已 然后我们把一个序列拆成两部分, 一部分前缀和都不大于总和, 一部分前缀和都不大于 \(...

weixin_30341735的博客 137

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

PKUSC2018游记

hhhhhh, 为啥我都快要PKUWC2019了突然过来颓废写PKUSC2018游记 hhhhhh, 为啥我到现在连PKUSC2018D1T2都不会 hhhhhh, 为啥我到现在连CCFWC都去不了 hhhhhh, 为啥我的游记都要咕咕咕好几个月 hhhhhh, 为啥我草稿箱里现在还有一篇没写完的SDOI2018游记 吐槽结束 背景 6月14日中考,然而5月底莫名其妙接到通知PKU给我通过申请了,...

suncongbo's blog 563

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LOJ6436 PKUSC2018 神仙的游戏

PKUSC2018除了主斗地都补完啦 好大啊【糟糕的语言 主斗地等什么时候空下来较长的时间再补吧。。。 回到这个题 当时听罗大讲并没有听明白...但是大概还是懂了的 就是我们可以通过找到所有01对位置差来筛掉所有不符合的border 具体证明放下面了 首先我们介绍一点基本的border相关理论 1.长度为x的border代表着 长度为x的前缀与长度为x的后缀相同 2.长度为x...

weixin_34255055的博客 159

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

「PKUWC2018/PKUSC2018」试题选做

「PKUWC2018/PKUSC2018」试题选做 最近还没想好报THUSC还是PKUSC,THU发我的三类约(再来一瓶)不知道要不要用,甚至不知道营还办不办,协议还有没有用。所以这些事情就暂时先不管了,PKU的题还是不错的,就刷一刷划水。因为比较简单,所以就不单独写博客了。 loj2537 Minimax 数据结构题,两个 \(\log\) 直接启发式合并,一个 \(\log\) 需要转移的时候...

weixin_30528371的博客 161

P5368 [PKUSC2018]真实排名

PKUSC签到题 题目大意 给出一个长度为 NNN 的序列,序列中有 KKK 个数会乘二,对于每个数计算在乘二后大于等于这个数的个数与乘二前没有发生变化的方案数. 分析 思路很清晰,可以将答案分为两个部分计算 当前位置的数没有乘二时 当前位置没有乘二,所以所有大于等于自己的元素是否乘二每有影响,如果一个数小于这个数的一半(不可以等于)那么这个数如果乘二也不会产生影响.于是可以计算出大于等于这个数...

sxy__orz的博客 252

[PKUSC2018]真实排名

[PKUSC2018]真实排名 题目大意: 有\(n(n\le10^5)\)个人,每个人有一个成绩\(A_i(0\le A_i\le10^9)\)。定义一个人的排名为\(n\)个人中成绩不小于他的总人数。现在恰好有\(k\)个人的成绩翻倍。问对于每个人,有多少种情况满足这个人的排名不变。 思路: 排名不变的情况不外乎两种: \(A_i\)本身不翻倍,且满足\(\lfloor\frac{A_i+1...

weixin_34411563的博客 147

BZOJ_5368_[Pkusc2018]真实排名_组合数

BZOJ_5368_[Pkusc2018]真实排名_组合数 Description 小C是某知名比赛的组织者,该比赛一共有n名选手参加,每个选手的成绩是一个非负整数,定义一个选手的排名是:成绩不小于他的选手的数量(包括他自己)。例如如果333位选手的成绩分别是[1,2,2],那么他们的排名分别是[3,2,2]。拥有上帝视角的你知道所有选手的实力,所以在考试前就精准地估计了每个人的成绩...

528

LOJ 6437 PKUSC2018 PKUSC

Problem LOJ ……附赠一个数据生成器吧 Solution 我调试调了一天……把网上唯二的一篇题解扒下来拍,然后就开始各种nan。改了好久结果跑出来一组hack题解的数据。。然后又扒了boshi的,又把boshi的代码给hack了几次……然而一直都只有70pts,答案相差不多。。 最后扒了loj上rank1的同样方法的大佬的代码,输出了中间结果,才发现我eps设小了。eps一直设...

Rayment的博客 757

[PKUSC2018]主斗地

暴搜 非常暴力的搜索,以至于我都不相信我能过。 方法是:暴力枚举所有牌型,然后暴力判断是否可行。 暴力枚举部分: 非常暴力: void dfs(int x,int l){ if(l==0){ flag=0; check(1,0,0,0,0); if(flag)ans++; return; } if(x...

anerwei6251的博客 344

【loj6437】 【PKUSC2018】 PKUSC 计算几何

题目大意:给你一个m个点的简单多边形。对于每个点i∈[1,n],作一个以O点为原点且过点i的圆,求该圆在多边形内的圆弧长度/圆长。 其中n≤200,m≤500。 我们将n个点分开处理。 首先,我们要判断需处理的圆,是否被包含在多边形内,或者圆把多边形包含了。 我们显然可以从原点出发,向上作一条x=0的射线,判断该射线与多边形有多少个交点。 显然,若交点数量为奇数个,...

diaoyoutun2652的博客 284

「PKUSC2018 星际穿越」Solution

有注释的部分应该很好理解,瓶颈在于框出的两行代码,网上大多数题解这一部分都没有写明白。注意,在上述推导过程中,我们并未考虑从起点往右跳的贡献,这一部分会在后文详细阐述。因此,我们只需要考虑起点往右跳的情况,就可以保证递推的重要性,因此。最开始往右跳的贡献,所以我们要强制选择一个点,那么为什么选择了。在任意最优情形下,只有起点可能往右跳,其他点一定只会向左跳。,所以考虑了也无所谓),发现这样初始化代入上述例子也是对的。,因此一定尽可能往右跳,才能最小化步数。的做法可得,我们没有考虑往右跳的情况。

cqbzliuhongyi的博客 1142
上一篇: Bzoj1185 [HNOI2007]最小矩形覆盖 + Bzoj1069 [SCOI2007]最大土地面积
下一篇: 一般做题流程(雾)
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值