T1 减法与求余

9090 pitspits

错误原因: 减法只有一个数时直接输出(>﹏<)(>﹏<)

思路:

减法 sum2a1|sum-2*a_1|

求余 minaimin_{ai}

AC代码A_C代码

#include<bits/stdc++.h>
using namespace std;
int a[100009];
int main(){
    freopen("divmod.in","r",stdin);
    freopen("divmod.out","w",stdout);
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1);

    if(k==1)
    {
    if(n==1)
    {
    cout<<a[1];
    return 0;
}
    long long sum=0;
    for(int i=1;i<=n;i++) sum+=a[i];
    sum=sum-a[1]*2;
    cout<<sum;
    }

    else{
       cout<<a[1];
    }
    return 0;
}

T2 回文串

7070 pitspits

错误原因: 没有考虑特殊情况 (┬┬﹏┬┬)(┬┬﹏┬┬)

思路:

遍历 1n/21—ⁿ/₂

判断 si!=ssize()1is_i!=s_{size()-1-i} 记录k++k++

最后特判 k

AC代码A_C代码

#include<bits/stdc++.h>
using namespace std;
string s;
int main(){

    freopen("hw.in","r",stdin);
    freopen("hw.out","w",stdout);
   
    cin>>s;
    int k=0;
    int n=s.size();
    int idx=0;
    for(int i=0;i<=n/2;i++){
    if(s[i]!=s[n-1-i]){
        if(s[i]>s[n-1-i])
        {
            s[i]=s[n-1-i];
            k++;
            idx=i;
            
        }
        else
        {
            s[n-1-i]=s[i];
            k++;
            idx=i;
        }
    }
    if(k==2) break;
    }

    if(k==0){
    	for(int i=0;i<n;i++){
    		if(s[i]!='a'){
    			s[i]='a';
    			s[n-1-i]='a';
    			break;
			}
		}
	}
	if(k==1){
        if(s[idx]!='a')
        {
		s[idx]='a';
		s[n-1-idx]='a';
        }
        else if(n%2==1)
        s[n/2]='a';
        
	}
    cout<<s;
    return 0;
}

T3 涂色仪式

100100 pitspits (^____^)

思路:

欧拉筛法+dfs(1)dfs_{(1)}

从下往上染色

dfs(nt)dfs_{(nt)}

后判断 iszax+antisz_{a_x+a_{nt}} && !sx!s_x && !snt!s_{nt}

ansans++; snts_{nt}=truetrue;

AC代码A_C代码

#include<bits/stdc++.h>
using namespace std;
const int N=3*1e5+10;
int a[N];
vector<int> v[N];
bool vis[N],s[N];
const int M=2*1e6+10;
bool isz[M];
int ans=0;
int idx=1;
void iszf()
{
	for(int i=2;i<=M;i++)
	{
	for(int j=2;j<=i;j++)
	{
		if(j*i>M) break;
		isz[j*i]=1;
	}
	}
}

void dfs(int x)
{
    vis[x]=1;
    for(int i=0;i<v[x].size();i++)
    {
	    int nt=v[x][i];
        if(!vis[nt])
        {
        dfs(nt); 
        if(!isz[a[x]+a[nt]] && !s[x] && !s[nt] )
		{
        	ans++;
        	s[nt]=1;
		}
    }
    }
}

int main(){

    freopen("color.in","r",stdin);
    freopen("color.out","w",stdout);
         
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    int x,y;
    for(int i=1;i<n;i++){
        cin>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    iszf();
    dfs(1);
    cout<<ans;
    return 0;
}

T4 除法来咯

3030 pitspits (>︿<)

错误原因: 思考方向错误

思路:

枚举商:

aia_i<=51e65*1e6 bib_i<=1e61e6;

∴1<=c<=5;

AC代码A_C代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N],ans,f[10];
int main(){
	freopen("div.in","r",stdin);
	freopen("div.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	
	for(int i=i;i<=n;i++)
	{
		for(int j=1;j<=5;j++)
		{
			f[j]+=((a[i]/j) > (a[i]%j) && (a[i]/1000000<=j));
		}
	}
	for(int i=1;i<=5;i++){
		ans=max(ans,f[i]);
	}
	cout<<ans; 
	return 0;
}