msjing在模拟赛的神之代码

26.7.9

T2之徒手算数
#include<bits/stdc++.h>
using namespace std;
constexpr int maxn=3010;
long long read() {long long x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch-'0');ch=getchar();}return x*f;}
int n;
void tp2(int a1,int a2,int b1,int b2)
{
	if (a1)
	{
		if (a2)
		{
			if (b1)
			{
				if (b2) printf("0\n");
				else printf("1\n");
			}
			else
			{
				if (b2) printf("1\n");
				else printf("2\n");
			}
		}
		else
		{
			if (b1)
			{
				if (b2) printf("1\n");
				else printf("2\n");
			}
			else
			{
				if (b2) printf("3\n");
				else printf("3\n");
			}
		}
	}
	else
	{
		if (a2)
		{
			if (b1)
			{
				if (b2) printf("1\n");
				else printf("3\n");
			}
			else
			{
				if (b2) printf("2\n");
				else printf("4\n");
			}
		}
		else
		{
			if (b1)
			{
				if (b2) printf("2\n");
				else printf("4\n");
			}
			else
			{
				if (b2) printf("3\n");
				else printf("You have no egg!");
			}
		}
	}
}
int a[maxn][maxn];
bool f[maxn];
int main()
{
	freopen("fountain.in","r",stdin);
	freopen("fountain.out","w",stdout); 
	n=read();
	if (n == 1)
	{
		int x=read();
		if (x) printf("0\n");
		else printf("You have no egg!");
	}
	else if (n == 2)
	{
		string s;
		for (int i=1;i<=n;i++)
		{
			cin >> s;
			for (int j=1;j<=n;j++) a[i][j]=s[j-1]-'0';
		}
		tp2(a[1][1],a[1][2],a[2][1],a[2][2]);
	}
	else
	{
		string s;
		for (int i=1;i<=n;i++)
		{
			cin >> s;
			for (int j=1;j<=n;j++) {a[i][j]=s[j-1]-'0';if (!a[i][j]) f[i]=1;}
		}
		int F=0;
		for (int i=1;i<=n;i++) if (!f[i]) F=1;
		if (F)
		{
			int k=0;
			for (int j=1;j<=n;j++)
			{
				int fl=1;
				for (int i=1;i<=n;i++) if (!a[i][j]) fl=0;
				if (fl) k++;
			}
			printf("%d\n",n-k);
		}
		else printf("You have no egg!");
	}
	return 0;
}
T3之五层循环
#include<bits/stdc++.h>
using namespace std;
constexpr int maxn=3010;
long long read() {long long x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch-'0');ch=getchar();}return x*f;}
int p,n,m;
long long ksm(long long x,long long y)
{
	long long res=1;
	while (y)
	{
		if (y&1) (res*=x)%=p;
		(x*=x)%=p;
		y>>=1;
	}
	return res;
}

struct shi_shan_code
{
	int s[maxn];
	void cl()
	{
		for (int i=0;i<n*m;i++) s[i]=0;
	}
	void init1()
	{
		for (int a=0;a<=m;a++) s[a]++;
	}
	void init2()
	{
		for (int a=0;a<=m;a++)
			for (int b=0;b<=m;b++) s[a+b]++;
			
	}
	void init3()
	{
		for (int a=0;a<=m;a++)
			for (int b=0;b<=m;b++)
				for (int c=0;c<=m;c++) s[a+b+c]++;
			
	}
	void init4()
	{
		for (int a=0;a<=m;a++)
			for (int b=0;b<=m;b++)
				for (int c=0;c<=m;c++)
					for (int d=0;d<=m;d++) s[a+b+c+d]++;
			
	}
	void init5()
	{
		for (int a=0;a<=m;a++)
			for (int b=0;b<=m;b++)
				for (int c=0;c<=m;c++)
					for (int d=0;d<=m;d++)
						for (int e=0;e<=m;e++) s[a+b+c+d+e]++;
			
	}
}ss;
int main()
{
	freopen("pr.in","r",stdin);
	freopen("pr.out","w",stdout); 
	p=read();
	int T=read();
	while (T--)
	{
		n=read(),m=read();
		ss.cl();
		if (n == 1) ss.init1();
		else if (n == 1) ss.init2();
		else if (n == 3) ss.init3();
		else if (n == 4) ss.init4();
		else if (n == 5) ss.init5();
//		for (int i=0;i<=m*n;i++) printf("%.3lf ",ss.s[i]);
//		cerr << endl;
//		for (int i=1;i<=m*n;i++) cerr << S[i] << " ";
		
		double tot=ksm(m+1,n*2)*1.0;
//		cerr << tot << endl;
//		for (int i=0;i<=n*m;i++) ss.s[i]/=tot;
//		for (int i=0;i<=m*n;i++) printf("%.3lf ",ss.s[i]);
//		cerr << endl;
		double ans=0;
		for (int i=1;i<=m*n;i++)
		{
			int t=0;
			for (int j=0;j<i;j++) t+=ss.s[j];
//			cerr << t << endl;
//			printf("%.3lf ",t);
			ans+=1.0*ss.s[i]*t;
		}
//		cerr << ans << endl;
//		cerr << endl;
		ans*=p;ans/=tot;
		printf("%.0lf\n",ans);
	}
	return 0;
}
/*
998244353
1
3 4

*/
/*
787878
1
25 25

*/
/*
998244353
1
1 2

*/
/*
998244353
2
1 2
3 4

*/
  • 总结:热衷于 \(have\) \(no\) \(egg\)

26.7.14

T4之只能过样例
#include<bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn=2e6+10;
int read()
{
    int x=0,f=1;
    char ch=getchar();
    while (ch<'0' || ch>'9')
    {
        if (ch == '-') f=-1;
        ch=getchar();
    }
    while (ch>='0' && ch<='9')
    {
        x=(x<<1)+(x<<3)+ch-'0';
        ch=getchar();
    }
    return x*f;
}
int n,m,root;
struct _ {int l,r,sum,lz,ls,rs;}tr[maxn];
int h[maxn],to[maxn],nxt[maxn],tot;
void add(int x,int y) {tot++,to[tot]=y,nxt[tot]=h[x],h[x]=tot;}
void Build(int x)
{
    int l1=0,r1=0,l2=0,r2=0,lson=0,rson=0;
    for (int i=h[x];i;i=nxt[i])
    {
        int y=to[i];
        Build(y);
        if (l1 && r1) l2=tr[y].l,r2=tr[y].r,rson=y;
        else l1=tr[y].l,r1=tr[y].r,lson=y;
    }
    if (!l1 && !r1 && !l2 && !r2 && !lson && !rson) return tr[x].l=tr[x].r=x,void();
    else
    {
//        cerr << l1 << " " << r1 << " " << l2 << " " << r2 << endl;
        if (l1>l2) swap(l1,l2),swap(r1,r2),swap(lson,rson);
        tr[x].l=l1,tr[x].r=r2,tr[x].ls=lson,tr[x].rs=rson;
    }
//    cerr << x << " " << tr[x].l << " " <<tr[x].r << endl;
}
//void Pushup(int x) {tr[x].sum=tr[tr[x].ls].sum+tr[tr[x].rs].sum;}
void Upd(int x,int l,int r,int val)
{
//    cout << x << " " << l << " " << r << endl;
//    cout << x << " " << l << " " << tr[x].l << " " << r << " " << tr[x].r << endl;
    if (l == tr[x].l && tr[x].r == r) return tr[x].sum=val*(r-l+1),void();
//    cout << "x:" << x << endl;
//    cout << l << " " << tr[tr[x].ls].r << endl;
//    cout << r << " " << tr[tr[x].rs].l << endl;
    if (l<=tr[tr[x].ls].r) Upd(tr[x].ls,l,tr[tr[x].ls].r,val);
    if (r>=tr[tr[x].rs].l) Upd(tr[x].rs,tr[tr[x].rs].l,r,val);
//    Pushup(x);
//    cout << "chk:";
//    cout << x << " " << tr[x].sum << endl;
}
int query(int x,int l,int r)
{
    int res=0;
    if (l == tr[x].l && tr[x].r == r) return tr[x].sum;
    if (l<=tr[tr[x].ls].r) res+=query(tr[x].ls,l,tr[tr[x].ls].r);
    if (r>=tr[tr[x].rs].l) res+=query(tr[x].rs,tr[tr[x].rs].l,r);
    return res;
}
int v[maxn];
signed main()
{
    n=read(),m=read();
    for (int i=1;i<n;i++)
    {
        int l=read(),r=read();
        v[l]=1,v[r]=1;
        add(n+i,l),add(n+i,r);
    }
    for (int i=1;i<=2*n-1;i++) if (!v[i]) {root=i;break;}
    Build(root);
    while (m--)
    {
        int op=read();
        if (op == 1)
        {
            int l=read(),r=read(),k=read();
            Upd(root,l,r,k);
        }
        else
        {
            int l=read(),r=read();
//            printf("%d\n",tr[2].sum+tr[3].sum+tr[4].sum);
            printf("%lld\n",query(root,l,r));
        }
    }
    return 0;
}
/*bug
5 6
4 5
3 6
1 2
8 7
1 1 5 1
9 1 5
2 2 3
0
2 1 5
5
1 2 5 3
9 2 5
8 2 3
2 2 3
7 4 5
3 4 4
0 4 4
0 1 4
0 1 4

*/
/*
5 6
4 5
3 6
1 2
8 7

*/
/*
5 6
4 5
3 6
1 2
8 7
1 1 5 1
2 2 3
2 1 5
1 2 5 3
2 2 4
2 3 5

*/

26.6.16

T3尝试骗分
#include<bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
constexpr int maxn=1e6+10;
int read()
{
    int x=0,f=1;
    char ch=getchar();
    while (ch<'0' || ch>'9')
    {
        if (ch == '-') f=-1;
        ch=getchar();
    }
    while (ch>='0' && ch<='9')
    {
        x=(x<<1)+(x<<3)+ch-'0';
        ch=getchar();
    }
    return x*f;
}
int n,m;
int h[maxn],to[maxn],nxt[maxn],tot;
void addedge(int x,int y)
{
    tot++;
    to[tot]=y;
    nxt[tot]=h[x];
    h[x]=tot;
}
int a[maxn];
int v[maxn];
void dfs(int x,int fa)
{
    if (x == n) x=1;
    for (int i=h[x];i;i=nxt[i])
    {
        int y=to[i];
        if (y == fa) continue;
        v[y]=1;
        dfs(y,x);
    }
}
signed main()
{
    freopen("delta.in","r",stdin);
    freopen("delta.out","w",stdout);
    n=read(),m=read();
    for (int i=1;i<=m;i++)
    {
        int x=read(),y=read();
        addedge(x,y),addedge(y,x);
    }
    if (n == m+1)
    {
        v[1]=1;
        dfs(1,0);
        int f=1;
        for (int i=1;i<=n;i++)
            if (!v[i]) f=0;
        if (f) puts("AC");
        else puts("WA");
    }
    else puts("WA");
	return 0;
}

26.8.17

T3 $O(n^7)$ 暴力 $\to$ $20pts$
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
constexpr int maxn=1e6+10;
string a,b,c;
int la,lb,lc;
int chk(string s)
{
    int len=s.size();
    s=" "+s;
    int l,r;
    if (len%2) l=r=len/2+1;
    else l=len/2,r=len/2+1;
    while (l>=1 && r<=len)
    {
        if (s[l]!=s[r]) return 0;
        l--,r++;
    }
    return 1;
}
int main()
{
    freopen("palindrome.in","r",stdin);
    freopen("palindrome.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int T;cin >> T;
    while (T--)
    {
        int ans=0;
        cin >> a >> b >> c;
        la=a.size(),lb=b.size(),lc=c.size();
        for (int al=0;al<la;al++)
            for (int ar=al;ar<la;ar++)
                for (int bl=0;bl<lb;bl++)
                    for (int br=bl;br<lb;br++)
                        for (int cl=0;cl<lc;cl++)
                            for (int cr=cl;cr<lc;cr++)
                            {
                                string aa,bb,cc,k;
                                for (int i=al;i<=ar;i++) aa+=a[i];
                                for (int i=bl;i<=br;i++) bb+=b[i];
                                for (int i=cl;i<=cr;i++) cc+=c[i];
                                // cerr << aa << endl;
                                // cerr << bb << endl;
                                // cerr << cc << endl;
                                k=aa+bb+cc;
                                // cerr << k << endl;
                                // cerr << chk(k) << endl;
                                if (chk(k)) ans++;
                            }
        cout << ans << endl;
    }
    return 0;
}
/*O(n^7) to solve*/
/*except ok of subtack1*/
/*except 20pts*/
/*2000ms to solve n=1000
maybe std use O(n^3 \log n) to solve*/
posted @ 2026-07-09 14:06  msjing  阅读(11)  评论(0)    收藏  举报