1. 程式人生 > 實用技巧 >2020icpc江西省賽賽後總結

2020icpc江西省賽賽後總結

開場rk3,打完只有rk15 QAQ(開題都沒開出來,挺難受的),最後只有銀3,就差一點就拿到金了。

不過現在才大二,後面還有挺多機會,12月上海沖沖衝

以下是看了的題的程式碼:

A - A Simple Math Problem

雖然沒想到正解,但我們這個程式碼可以跑8e4,最後優化一下常數應該也能過,可惜沒有搞出來

#include<bits/stdc++.h>

using namespace std;
#define ll long long
const int maxn = 1e5 +10;
#define fastio ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
ll mod = 998244353;

int v[maxn],p[maxn],tot=0;

void Euler(int n)
{
    v[1]=1;
    for(int i=2;i<=n;i++){
        if(v[i]==0){v[i]=i;p[++tot]=i;}
        for(int j=1;j<=tot;j++)
        {
            if(p[j]>v[i]||p[j]>n/i)break;
            v[i*p[j]]=p[j];
        }
    }
}
int vis[maxn];
int main() 
{
    fastio;
    int n;
    cin>>n;
    Euler(n+1);
    ll ans = n;
    int flag=1;
    for(int i=2;i<=n;++i)
    {
        ll cnt=n-i+1,tmp=i;
        if(v[i]==i)
            cnt-=n/i;
        else
        {
            while(tmp > 1)
            {
                ll P=v[tmp];
                for(int j=i/v[tmp]*v[tmp];j<=n;j+=P)
                {
                    (vis[j]!=i)?
                        cnt--,vis[j]=i:0;
                }
                while(tmp>1&&tmp%P==0)
                {
                    tmp/=P;
                }
            }
        }
        ll f=0;
        int x=i;
        while(x)
        {
            f+=x%10;
            x/=10;
        }
        ans+=cnt*f;
    }
    cout<<ans;
	return 0;
}

其實一開場就看了10分鐘A,我們都不太會數學,就跑去跟榜了

B-Apple

簽到,直接求和公式

#include<bits/stdc++.h>

using namespace std;
#define ll long long
#define fastio ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        ll sum,n;
        cin>>sum>>n;
        if((1+n)*n/2>sum)
            cout<<"impossible"<<endl;
        else cout<<"possible"<<endl;
    }
 
    return 0;
    
}

C讀錯題了,和隊友搞了2個多小時無了,太致命了


E-Color Sequence

曾神