首页 > 其他分享 >纸牌游戏(超长大模拟)

纸牌游戏(超长大模拟)

时间:2024-05-03 15:12:20浏览次数:30  
标签:游戏 纸牌 -- else break ton && 模拟 cmp

根据题意模拟即可,但这代码......

CODE:

#include<bits/stdc++.h>
using namespace std;
int i[20]={0},t[20]={0},m[20]={0},ton[4][10]={0},z[10]={0},cmp[4][10]={0},zz[10][10]={0};
int read()
{
	char a;int n;bool z=true;
	while(1)
	{
		a=getchar();
		if (a>'9'||a<'0')
		{
			if (a=='-')
			{
				z=false;
			}
			continue;
		}
		if (z)
		{
			n=a-'0';
		}
		else
		{
			n=a-'0';
			n-=2*n;
		}
		return n;
	}
}
int main()
{
	int j,n,a,l=0,k,y,cnt=0;
	scanf("%d",&n);
	for (a=1;a<=n;a++)
	{
		memset(z,0,sizeof(z));
		memset(ton,0,sizeof(ton));
		memset(cmp,0,sizeof(cmp));
		memset(zz,0,sizeof(zz));
		for (l=1;l<=7;l++)
		{
			i[l]=read();
		}
		for (l=1;l<=7;l++)
		{
			m[l]=read();
		}
		for (l=1;l<=7;l++)
		{
			t[l]=read();
		}
		sort(i+1,i+1+7);
		sort(m+1,m+1+7);
		sort(t+1,t+1+7);
		
		
		cnt=0;
		for (l=1;l<=7;l++)
		{
			if (i[l]==-1)
			{
				cnt++;
			}
		}
		if (cnt>=3)
		{
			z[1]=-1;
		}
		cnt=0;
		for (l=1;l<=7;l++)
		{
			if (m[l]==-1)
			{
				cnt++;
			}
		}
		if (cnt>=3)
		{
			z[2]=-1;
		}
		cnt=0;
		for (l=1;l<=7;l++)
		{
			if (t[l]==-1)
			{
				cnt++;
			}
		}
		if (cnt>=3)
		{
			z[3]=-1;
		}
		
		if (z[1]==-1&&z[2]==-1&&z[3]==-1)
		{
			printf("Draw!\n");
			continue;
		}
		
		for(;z[1]!=-1;)
		{
			for (j=1;j<=7;j++)
			{
				if (i[j]!=-1)
				{
					ton[1][i[j]]++;
				}
			}
			if (ton[1][1]>=2&&ton[1][3]>=1&&ton[1][4]>=1&&ton[1][5]>=1)
			{
				z[1]=10;
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-2>=0&&ton[1][l-2])
						{
							l-=2;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[1]=9;
						cmp[1][1]=j;
						break;
					}
				}
			}
			if (z[1]==9)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-1>=0&&ton[1][l-1])
						{
							l--;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[1]=8;
						cmp[1][1]=j;
						break;
					}
				}
			}
			if (z[1]==8)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=5)
				{
					z[1]=7;
					cmp[1][1]=j;
					break;
				}
			}
			if (z[1]==7)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=3)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l]>=2)
							{
								z[1]=6;
								cmp[1][1]=j;
								cmp[1][2]=l;
								break;
							}
						}
					}
					if (z[1]==6)
					{
						break;
					}
				}
			}
			if (z[1]==6)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=4)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								z[1]=5;
								cmp[1][1]=j;
								cmp[1][2]=l;
								break;
							}
						}
					}
					if (z[1]==5)
					{
						break;
					}
				}
			}
			if (z[1]==5)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=2)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l]>=2)
							{
								z[1]=4;
								cmp[1][1]=j;
								cmp[1][2]=l;
								for (k=9;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[1][k])
										{
											cmp[1][3]=k;
											break;
										}
									}
								}
								break;
							}
						}
					}
					if (z[1]==4)
					{
						break;
					}
				}
			}
			if (z[1]==4)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=3)
				{
					z[1]=3;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								for (k=l;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[1][k])
										{
											cmp[1][3]=k;
											break;
										}
									}
								}
								cmp[1][2]=l;
								break;
							}
						}
					}
					cmp[1][1]=j;
					break;
				}
			}
			if (z[1]==3)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[1][j]>=2)
				{
					z[1]=2;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								cmp[1][2]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								cmp[1][3]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[1][l])
							{
								cmp[1][4]=l;
								break;
							}
						}
					}
					cmp[1][1]=j;
					break;
				}
			}
			if (z[1]==2)
			{
				break;
			}
			
			z[1]=1;
			for (j=9;j>=0;j--)
			{
				if (ton[1][j])
				{
					cmp[1][1]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[1][j])
				{
					cmp[1][2]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[1][j])
				{
					cmp[1][3]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[1][j])
				{
					cmp[1][4]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[1][j])
				{
					 cmp[1][5]=j;
					 j--;
					 break;
				}
			}
			if (z[1]==1)
			{
				break;
			}
		}
		
		
		for(;z[2]!=-1;)
		{
			for (j=1;j<=7;j++)
			{
				if (m[j]!=-1)
				{
					ton[2][m[j]]++;
				}
			}
			if (ton[2][1]>=2&&ton[2][3]>=1&&ton[2][4]>=1&&ton[2][5]>=1)
			{
				z[2]=10;
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-2>=0&&ton[2][l-2])
						{
							l-=2;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[2]=9;
						cmp[2][1]=j;
						break;
					}
				}
			}
			if (z[2]==9)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-1>=0&&ton[2][l-1])
						{
							l--;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[2]=8;
						cmp[2][1]=j;
						break;
					}
				}
			}
			if (z[2]==8)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=5)
				{
					z[2]=7;
					cmp[2][1]=j;
					break;
				}
			}
			if (z[2]==7)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=3)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l]>=2)
							{
								z[2]=6;
								cmp[2][1]=j;
								cmp[2][2]=l;
								break;
							}
						}
					}
					if (z[2]==6)
					{
						break;
					}
				}
			}
			if (z[2]==6)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=4)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								z[2]=5;
								cmp[2][1]=j;
								cmp[2][2]=l;
								break;
							}
						}
					}
					if (z[2]==5)
					{
						break;
					}
				}
			}
			if (z[2]==5)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=2)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l]>=2)
							{
								z[2]=4;
								cmp[2][1]=j;
								cmp[2][2]=l;
								for (k=9;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[2][k])
										{
											cmp[2][3]=k;
											break;
										}
									}
								}
								break;
							}
						}
					}
					if (z[2]==4)
					{
						break;
					}
				}
			}
			if (z[2]==4)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=3)
				{
					z[2]=3;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								for (k=l;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[2][k])
										{
											cmp[2][3]=k;
											break;
										}
									}
								}
								cmp[2][2]=l;
								break;
							}
						}
					}
					cmp[2][1]=j;
					break;
				}
			}
			if (z[2]==3)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[2][j]>=2)
				{
					z[2]=2;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								cmp[2][2]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								cmp[2][3]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[2][l])
							{
								cmp[2][4]=l;
								break;
							}
						}
					}
					cmp[2][1]=j;
					break;
				}
			}
			if (z[2]==2)
			{
				break;
			}
			
			z[2]=1;
			for (j=9;j>=0;j--)
			{
				if (ton[2][j])
				{
					cmp[2][1]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[2][j])
				{
					cmp[2][2]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[2][j])
				{
					cmp[2][3]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[2][j])
				{
					cmp[2][4]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[2][j])
				{
					 cmp[2][5]=j;
					 j--;
					 break;
				}
			}
			if (z[2]==1)
			{
				break;
			}
		}
		
		
		
		
		for(;z[3]!=-1;)
		{
			for (j=1;j<=7;j++)
			{
				if (t[j]!=-1)
				{
					ton[3][t[j]]++;
				}
			}
			if (ton[3][1]>=2&&ton[3][3]>=1&&ton[3][4]>=1&&ton[3][5]>=1)
			{
				z[3]=10;
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-2>=0&&ton[3][l-2])
						{
							l-=2;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[3]=9;
						cmp[3][1]=j;
						break;
					}
				}
			}
			if (z[3]==9)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j])
				{
					for (l=j,y=2;y<=5;y++)
					{
						if (l-1>=0&&ton[3][l-1])
						{
							l--;
						}
						else
						{
							break;
						}
					}
					if (y==6)
					{
						z[3]=8;
						cmp[3][1]=j;
						break;
					}
				}
			}
			if (z[3]==8)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=5)
				{
					z[3]=7;
					cmp[3][1]=j;
					break;
				}
			}
			if (z[3]==7)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=3)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l]>=2)
							{
								z[3]=6;
								cmp[3][1]=j;
								cmp[3][2]=l;
								break;
							}
						}
					}
					if (z[3]==6)
					{
						break;
					}
				}
			}
			if (z[3]==6)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=4)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								z[3]=5;
								cmp[3][1]=j;
								cmp[3][2]=l;
								break;
							}
						}
					}
					if (z[3]==5)
					{
						break;
					}
				}
			}
			if (z[3]==5)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=2)
				{
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l]>=2)
							{
								z[3]=4;
								cmp[3][1]=j;
								cmp[3][2]=l;
								for (k=9;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[3][k])
										{
											cmp[3][3]=k;
											break;
										}
									}
								}
								break;
							}
						}
					}
					if (z[3]==4)
					{
						break;
					}
				}
			}
			if (z[3]==4)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=3)
				{
					z[3]=3;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								for (k=l;k>=0;k--)
								{
									if (k!=j&&k!=l)
									{
										if (ton[3][k])
										{
											cmp[3][3]=k;
											break;
										}
									}
								}
								cmp[3][2]=l;
								break;
							}
						}
					}
					cmp[3][1]=j;
					break;
				}
			}
			if (z[3]==3)
			{
				break;
			}
			
			for (j=9;j>=0;j--)
			{
				if (ton[3][j]>=2)
				{
					z[3]=2;
					for (l=9;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								cmp[3][2]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								cmp[3][3]=l;
								l--;
								break;
							}
						}
					}
					for (;l>=0;l--)
					{
						if (l!=j)
						{
							if (ton[3][l])
							{
								cmp[3][4]=l;
								break;
							}
						}
					}
					cmp[3][1]=j;
					break;
				}
			}
			if (z[3]==2)
			{
				break;
			}
			
			z[3]=1;
			for (j=9;j>=0;j--)
			{
				if (ton[3][j])
				{
					cmp[3][1]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[3][j])
				{
					cmp[3][2]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[3][j])
				{
					cmp[3][3]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[3][j])
				{
					cmp[3][4]=j;
					j--;
					break;
				}
			}
			for (;j>=0;j--)
			{
				if (ton[3][j])
				{
					 cmp[3][5]=j;
					 j--;
					 break;
				}
			}
			if (z[3]==1)
			{
				break;
			}
		}
		
		if (z[1]>z[2])
		{
			zz[1][2]=1;
		}
		if (z[1]<z[2])
		{
			zz[1][2]=0;
		}
		if (z[1]==z[2])
		{
			switch(z[1])
			{
				case -1:
				case 10:zz[1][2]=2;break;
				case 7:
				case 9:
				case 8:if (cmp[1][1]>cmp[2][1])
				{
					zz[1][2]=1;
				}
				else
				{
					if (cmp[1][1]<cmp[2][1])
					{
						zz[1][2]=0;
					}
					else
					{
						zz[1][2]=2;
					}
				}break;
				case 5:
				case 6:for (j=1;j<=2;j++)
				{
					if (cmp[1][j]>cmp[2][j])
					{
						zz[1][2]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[2][j])
						{
							zz[1][2]=0;
							break;
						}
					}
				}
				if (j==3)
				{
					zz[1][2]=2;
				}break;
				case 3:
				case 4:for (j=1;j<=3;j++)
				{
					if (cmp[1][j]>cmp[2][j])
					{
						zz[1][2]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[2][j])
						{
							zz[1][2]=0;
							break;
						}
					}
				}
				if (j==4)
				{
					zz[1][2]=2;
				}break;
				case 2:for (j=1;j<=4;j++)
				{
					if (cmp[1][j]>cmp[2][j])
					{
						zz[1][2]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[2][j])
						{
							zz[1][2]=0;
							break;
						}
					}
				}
				if (j==5)
				{
					zz[1][2]=2;
				}break;
				case 1:for (j=1;j<=5;j++)
				{
					if (cmp[1][j]>cmp[2][j])
					{
						zz[1][2]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[2][j])
						{
							zz[1][2]=0;
							break;
						}
					}
				}
				if (j==6)
				{
					zz[1][2]=2;
				}break;
			}
		}
		
		
		if (z[1]>z[3])
		{
			zz[1][3]=1;
		}
		if (z[1]<z[3])
		{
			zz[1][3]=0;
		}
		if (z[1]==z[3])
		{
			switch(z[1])
			{
				case -1:
				case 10:zz[1][3]=2;break;
				case 7:
				case 9:
				case 8:if (cmp[1][1]>cmp[3][1])
				{
					zz[1][3]=1;
				}
				else
				{
					if (cmp[1][1]<cmp[3][1])
					{
						zz[1][3]=0;
					}
					else
					{
						zz[1][3]=2;
					}
				}break;
				case 5:
				case 6:for (j=1;j<=2;j++)
				{
					if (cmp[1][j]>cmp[3][j])
					{
						zz[1][3]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[3][j])
						{
							zz[1][3]=0;
							break;
						}
					}
				}
				if (j==3)
				{
					zz[1][3]=2;
				}break;
				case 3:
				case 4:for (j=1;j<=3;j++)
				{
					if (cmp[1][j]>cmp[3][j])
					{
						zz[1][3]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[3][j])
						{
							zz[1][3]=0;
							break;
						}
					}
				}
				if (j==4)
				{
					zz[1][3]=2;
				}break;
				case 2:for (j=1;j<=4;j++)
				{
					if (cmp[1][j]>cmp[3][j])
					{
						zz[1][3]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[3][j])
						{
							zz[1][3]=0;
							break;
						}
					}
				}
				if (j==5)
				{
					zz[1][3]=2;
				}break;
				case 1:for (j=1;j<=5;j++)
				{
					if (cmp[1][j]>cmp[3][j])
					{
						zz[1][3]=1;
						break;
					}
					else
					{
						if (cmp[1][j]<cmp[3][j])
						{
							zz[1][3]=0;
							break;
						}
					}
				}
				if (j==6)
				{
					zz[1][3]=2;
				}break;
			}
		}
		
		if (z[2]>z[3])
		{
			zz[2][3]=1;
		}
		if (z[2]<z[3])
		{
			zz[2][3]=0;
		}
		if (z[2]==z[3])
		{
			switch(z[2])
			{
				case -1:
				case 10:zz[2][3]=2;break;
				case 7:
				case 9:
				case 8:if (cmp[2][1]>cmp[3][1])
				{
					zz[2][3]=1;
				}
				else
				{
					if (cmp[2][1]<cmp[3][1])
					{
						zz[2][3]=0;
					}
					else
					{
						zz[2][3]=2;
					}
				}break;
				case 5:
				case 6:for (j=1;j<=2;j++)
				{
					if (cmp[2][j]>cmp[3][j])
					{
						zz[2][3]=1;
						break;
					}
					else
					{
						if (cmp[2][j]<cmp[3][j])
						{
							zz[2][3]=0;
							break;
						}
					}
				}
				if (j==3)
				{
					zz[2][3]=2;
				}break;
				case 3:
				case 4:for (j=1;j<=3;j++)
				{
					if (cmp[2][j]>cmp[3][j])
					{
						zz[2][3]=1;
						break;
					}
					else
					{
						if (cmp[2][j]<cmp[3][j])
						{
							zz[2][3]=0;
							break;
						}
					}
				}
				if (j==4)
				{
					zz[2][3]=2;
				}break;
				case 2:for (j=1;j<=4;j++)
				{
					if (cmp[2][j]>cmp[3][j])
					{
						zz[2][3]=1;
						break;
					}
					else
					{
						if (cmp[2][j]<cmp[3][j])
						{
							zz[2][3]=0;
							break;
						}
					}
				}
				if (j==5){
					zz[2][3]=2;
				}break;
				case 1:for (j=1;j<=5;j++){
					if (cmp[2][j]>cmp[3][j]){
						zz[2][3]=1;
						break;
					}
					else{
						if (cmp[2][j]<cmp[3][j]){
							zz[2][3]=0;
							break;
						}
					}
				}
				if(j==6){
					zz[2][3]=2;
				}break;
			}
		}
		if (zz[1][2]==2&&zz[1][3]==1){
			printf("TTL l0se!\n");
			continue;
		}
		if (zz[2][3]==2&&zz[1][3]==2){
			printf("Draw!\n");
			continue;
		}
		if (zz[1][3]==2&&zz[1][2]==1){
			printf("Magolor l0se!\n");
			continue;
		}
		if (zz[2][3]==2&&zz[1][2]==0){
		    printf("I l0se!\n");
			continue;
		}
		if (zz[1][2]==1&&zz[1][3]==1){
			printf("I w1n!\n");
			continue;
		}
		if (zz[1][2]==0&&zz[2][3]==1){
			printf("Magolor w1n!\n");
			continue;
		}
		if (zz[1][3]==0&&zz[2][3]==0){
			printf("TTL w1n!\n");
			continue;
		}
	}
	return 0;
}

标签:游戏,纸牌,--,else,break,ton,&&,模拟,cmp
From: https://www.cnblogs.com/lzdqwq/p/18171219

相关文章

  • 新NIM游戏
    稍微分析一下题目就可以知道,先手第一轮取完之后一定是极大无关组,此时必胜这里介绍一些异或空间线性基的性质,跟普通的线性基是差不多的首先,线性基中任意多个数异或起来一定不为\(0\)(否则的话某一个数可以被其他数线表)其次,同一异或空间不同线性基的个数是一样的那么我们怎么使得......
  • 2024/5/2 NOIP 模拟赛
    \(90+85+0+45=220\)本来应该\(100+100+15+45=260\)的,这样的成绩是我彩笔导致的。\(A\)题前缀异或桶,开考半个小时就将之秒掉了,但是没开\(\texttt{longlong}\)挂掉了\(10pts.\)非常生气。\(\texttt{B}\)思维题。给一个\(a_i(i=1,2,3,\cdots,n).\)进行无数次下面两种......
  • 数论模拟(1) 小朋友们,我们今天来找规律
    \(60\)分钟,干出来\(30\)至\(40\)分(满分\(50\)),最后一步没写出来还是有点rz.题目:求最小的整数\(n\),使得对至少两个不同的奇素数\(p\),有\[\sum_{k=1}^{n}(-1)^{v_p(k!)}<0.\]解:根据\(v_p\)函数的性质,可以对所有正整数进行规律性地分块,每块中的\(v_p\)值都是相同的:......
  • 模拟集成电路设计系列博客——6.2.5 毛刺
    6.2.5毛刺数字逻辑的毛刺是转换器进行高速工作时的一个主要问题,\({b_1,b_2,...,b_N}\)与开关信号直接关联。毛刺的来源是开关切换不同信号的延迟。例如,但数字码从\(0111...1\)切换到\(1000...0\)时,所有的\(N-1\)的LSB都关闭,而MSB打开,然而,有可能LSB开关的电流先于MSB开关的电流关......
  • Unity游戏框架设计之背包管理器
    Unity游戏框架设计之背包管理器简单介绍背包系统通常分为两个部分,第一个部分是背包的UI界面,第二个部分是对背包进行逻辑操作的管理器。在下述代码中,实现了对背包的基本逻辑操作,包括向背包添加物品,从背包中取出物品,移动背包中的物品和使用背包中的物品的基本操作,并将这些操作......
  • 模拟集成电路设计系列博客——6.2.2 基于R-2R的转换器
    6.2.2基于R-2R的转换器为了避免二进制权重转换器中的巨大电阻比例,可以通过引入串联电阻来使得阵列中的信号缩放,如下图所示:注意此处的节点电压\(V_A\)等于参考电压\(V_{ref}\)的四分之一,作为\(3R\)的串联电阻引入的结果。同时注意一个额外的\(4R\)被添加在地处,从而使得从\(3R\)......
  • 模拟集成电路设计系列博客——6.2.3 电荷重分布开关电容转换器
    6.2.3电荷重分布开关电容转换器电荷重分布开关电容转换器的基本思想是将开关电容增益放大器的输入电容替换为一个可编程电容阵列(PCA,ProgrammableCapacitorArray),如下图所示:如我们之前在开关电容增益放大器时讨论的一样,上图中的电路对于放大器输入失调电压,\(1/f\)噪声和有限放......
  • 模拟集成电路设计系列博客——6.2.1 二进制权重电阻转换器
    6.2.1二进制权重电阻转换器一种主流的实现D/A转换器的方式是将一组信号以二进制方式进行组合。这组二进制信号可以是电流(在电阻或者电流方式中),但二进制权重的电荷也经常使用。在这个章节中,将首先介绍店主方式,然后是和电荷重分布的模式和电流模式。在这个远离下并不能保证单调性,......
  • 5.1模拟赛 T3 记录
    题面首先显然我们可以把序列变成几段连续段,如果连续段中有一个数不一样,显然不满足了。现在就要求使得这几个连续段都独立不能连成一个大段地方案数,考虑容斥。考虑进行连续段\(dp\),套路的,我们只要确认一个段最小的数是什么就可以知道整个段的值域,所以我们只需要确定连续段之间......
  • 模拟微任务 判断是否有对应的api
    if(typeofPromise!=='undefined'&&isNative(Promise)){}functionrunMicrotask(func){if(typeofPromise==='function'){Promise.resolve().then(func)return}if(typeofMutationObserver==='functi......