1393B、1354C1、序列变换

1393.B. Applejack and Storages

题意:

给几个数,问是否能够组成一个正方形和一个矩形?
m次操作,加上一个数或者去掉现有的一个数。

思路:

如果加上一个数,这个数的个数%4 == 0了,说明这个能构成正方形,正方形个数++.
这个数的个数%2==0了,说明这个数能构成矩形的两条对边,矩形对边个数++。

如果去掉一个数,这个数的个数%4 == 3了 ,说明能构成的正方形个数- -;
这个数的个数%2==1了,说明这个数能构成矩形的两条对边个数- -。

如果当前正方形个数 ≥1,并且矩形对边个数 ≥4(减掉正方形的),就说明能构成一个矩形和一个正方形。

Code:

const int N = 200010, mod = 1e9+7;
int T, n, m, a[N];
int f[N];

int main(){
    
    
	Ios;
	
	cin>>n;
	
	int cnt1=0,cnt2=0;
	
	for(int i=1;i<=n;i++){
    
    
		cin>>a[i];
		f[a[i]]++;
		if(f[a[i]]%4==0) cnt1++;
		if(f[a[i]]%2==0) cnt2++;
	}
	
	cin>>m;
	while(m--)
	{
    
    
		char c;int x;
		cin>>c>>x;
		if(c=='+')
		{
    
    
			f[x]++;
			if(f[x]%4==0) cnt1++;
			if(f[x]%2==0) cnt2++;
		}
		else
		{
    
    
			f[x]--;
			if(f[x]%4==3) cnt1--;
			if(f[x]%2==1) cnt2--;
		}
		
		if(cnt1&&cnt2>=4){
    
    
			cout<<"Yes\n";
		}
		else cout<<"No\n";
	}
 	
	return 0;
}

1354.C1. Simple Polygon Embedding(平面几何)

题意:

求正n边形,能够嵌入的最小正方形边长?(n%4=0)

思路:

n是4的倍数,所以正n边形一定有两个水平边和两个垂直边。从这下手。

从中心点连接下面最近的两个点,所得到角度就为360/n。
这个角度一半 α 的 tan值为,1/2除高度的一半。那么这个高度就为,1/tanα。

Code:

#define Pi acos(-1)
const int N = 200010, mod = 1e9+7;
int T, n, m, a[N];

int main(){
    
    
	cin>>T;
	
	while(T--)
	{
    
    
		cin>>n;
		
		n*=2;
		double ans=tan(Pi/n);
		
		printf("%.10f\n",1/ans);
	}
	
	return 0;
}

序列变换(思维,模拟)

题意:

要将一个元素全为0的数组变成另外一个数组,通过下面的两种操作:
1.将一个位置x,以及后面的所有位置上的值+1.
2.将一个位置x,以及后面的所有位置上的值-1.
问,最少多少次操作?

思路:

反转思想:把0数组经过这两种操作变成给定数组,也就是将给定数组变成0数组。

如果先将后面位置的处理成目标数,那么前面位置处理的时候,会再把后面的位置更改。所以需要先处理前面的位置。

从前往后遍历所有位置,将后面的所有数都减掉当前元素值(要把当前元素化为0)。如果是现在就要将后面的所有位置更改的话,要加一重循环了,或者logn线段树,但是复杂度都不允许。

因为后面的变化都是用的前面的,所以记录下到当前位置时的操作变化的值 就行了,到这个位置的时候加上这个值,也就变化好了。

Code:

const int N = 200010, mod = 1e9+7;
int T, n, m, a[N];

int main(){
    
    
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	
	ll t=0,ans=0;
	for(int i=1;i<=n;i++)
	{
    
    
		a[i]+=t;
		ans+=abs(a[i]);
		t-=a[i];
	}
	cout<<ans;
	
	return 0;
}

其实这道题一开始是看错的,看成了:

将一个数组变成另一个数组,每次操作可以选择一个区间,将区间中的所有位置上的值加1或者减1。问,最少的操作数?

明天补了。


猜你喜欢

转载自blog.csdn.net/Mr_dimple/article/details/120915755
今日推荐