• 个人简介

    想要高精度模板的请移步这里,公益程序,想要自取

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0), cout.tie(0);
    	freopen("birthday.in","r",stdin);
    	freopen("birthday.out","w",stdout);
    	int n;
    	cin >> n;
    	map<pair<int,int>,int> mp;
    	for(int i=1;i<=n;i++)
    	{
    		int m, d;
    		cin >> m >> d;
    		mp[{m,d}]++;
    	}
    	cout << mp.size();
        return 0;
    }
    
    #include<bits/stdc++.h>
    using namespace std;
    int a[1005][1005], b[1005][1005];
    int dx[4]={0,1,0,-1};
    int dy[4]={1,0,-1,0};
    int n, m;
    int qu(int x1, int y1, int x2, int y2)
    {
    	if(x1>x2) swap(x1,x2);
    	if(y1>y2) swap(y1,y2);
    	return b[x2][y2]-b[x2][y1-1]-b[x1-1][y2]+b[x1-1][y1-1];
    }
    int main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0), cout.tie(0);
    	freopen("matrix.in","r",stdin);
    	freopen("matrix.out","w",stdout);
    	cin >> n >> m;
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=1;j<=m;j++)
    		{
    			cin >> a[i][j];
    			b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a[i][j];
    		}
    	}
    	int Max=0;
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=1;j<=m;j++)
    		{
    			if(a[i][j]==1) continue;
    			for(int k=0;k<4;k++)
    			{
    				int fx=k;
    				int x=i, y=j, nx, ny;
    				int flag=0;
    				for(int id=0,len=1,ans=1;ans<=100;id++,fx=(fx+1)%4,len=(id%2==0? len+1:len))
    				{
    					nx=x+len*dx[fx], ny=y+len*dy[fx];
    					ans+=len;
    					if(nx<1)
    					{
    						nx=1;
    						flag=1;
    					}
    					if(nx>n)
    					{
    						nx=n;
    						flag=1;
    					}
    					if(ny<1)
    					{
    						ny=1;
    						flag=1;
    					}
    					if(ny>m)
    					{
    						ny=m;
    						flag=1;
    					}
    					if(qu(x,y,nx,ny)!=0)
    					{
    						if(fx==0)
    						{
    							for(int nj=y;nj<=ny;nj+=dy[fx])
    							{
    								if(a[nx][nj]==1)
    								{
    									nx=nx, ny=nj;
    									break;
    								}
    							}
    						}
    						if(fx==1)
    						{
    							for(int ni=x;ni<=nx;ni+=dx[fx])
    							{
    								if(a[ni][ny]==1)
    								{
    									nx=ni, ny=ny;
    									break;
    								}
    							}
    						}
    						if(fx==2)
    						{
    							for(int nj=y;nj>=ny;nj+=dy[fx])
    							{
    								if(a[nx][nj]==1)
    								{
    									nx=nx, ny=nj;
    									break;
    								}
    							}
    						}
    						if(fx==3)
    						{
    							for(int ni=x;ni>=nx;ni+=dx[fx])
    							{
    								if(a[ni][ny]==1)
    								{
    									nx=ni, ny=ny;
    									break;
    								}
    							}
    						}
    						here:;
    						ans-=len;
    						ans+=(abs(nx-x)+abs(ny-y)-1);
    						Max=max(Max,ans);
    						break;
    					}
    					if(flag==1)
    					{
    						ans-=len;
    						ans+=abs(nx-x)+abs(ny-y);
    						Max=max(Max,ans);
    						break;
    					}
    					x=nx, y=ny;
    				}
    			}
    		}
    	}
    	cout << Max;
        return 0;
    }
    
    #include<bits/stdc++.h>
    using namespace std;
    long long a[5005];
    long long b[5005];
    long long c[5005];
    long long dp[5005];
    int main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0), cout.tie(0);
    	//freopen("bag.in","r",stdin);
    	//freopen("bag.out","w",stdout);
    	int n, m;
    	cin >> n >> m;
    	for(int i=1;i<=n;i++)
    	{
    		cin >> a[i];
    		c[i]=c[i-1]+a[i];
    	}
    	for(int i=1;i<=m;i++)
    	{
    		int x;
    		long long y;
    		cin >> x >> y;
    		b[x]+=y;
    	}
    	for(int i=1;i<=n;i++)
    	{
    		if(i>=3) dp[0]=max(dp[0],dp[i-2]);
    		for(int j=i;j>=1;j--)
    		{
    			dp[j]=max(max(dp[j],a[i]+b[1]),dp[j-1]+a[i]+b[j]);
    		}
    	}
    	int Max=0;
    	for(int i=0;i<=n;i++)
    	{
    		Max=max(Max,dp[i]);
    	}
    	cout << Max;
        return 0;
    }
    
    
  • 通过的题目

  • 最近活动

  • 最近编写的题解

    This person is lazy and didn't wrote any solution