• 2018bnu校赛总结


    ····我好菜,完全没有准确率只写了签到,完全被吊打QAQ
    大概就是自己懒惰的后果吧qwq

    A 塞特斯玛斯塔

    签到···我因为是多组样例wa了一发····

    #include <bits/stdc++.h>
    using namespace std;
    char s[100010];
    int main()
    {
    	int t,n;scanf("%d",&t);
    	while(t--){
    		scanf("%d",&n);
    		int cnt=0;
    		for(int i=1;i<=n;i++)
    		{
    			scanf("%s",s);
    			if(s[0]=='P')cnt++;
    		}
    		if(cnt==n)printf("MILLION Master
    ");
    		else printf("NAIVE Noob
    ");
    	}
    }
    

    B 外挂使用拒绝

    很像是多校赛的那题····然后多校赛没补···这题就很没有什么思路···

    updL打表发现是组合数哇····然后向zhber学习了一下差分的组合数······

    #include <bits/stdc++.h>
    using namespace std;
    #define modd 	1000000007
    typedef long long ll;
    ll a[1010];
    ll tot[1010],in[10001];
    ll inv(ll x)
    {
    	ll ans = 1,b = modd-2;ll base = x;
    	while(b){if(b%2 == 1)ans = ans*base%modd;base = base*base%modd; b = b/2;}return ans;
    }
    ll c(ll n,ll m)
    {
    	ll ans = 1;m = n-m;
    	for(ll i = n-m+1;i<=n;i++)ans=(ans*i)%modd;
    	for(ll i = 1;i<=m;i++)ans = ans*in[i]%modd;
    	return ans;
    }
    void solve()
    {
        int n,k;scanf("%d%d",&n,&k);
        for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
        for(int i=1;i<=n;i++)tot[i]=c(i+k-2,k-1);
        for(int i=1;i<=n;i++)
        {
        	for(int j=1;j<i;j++)a[i] = (a[i]-tot[i-j+1]*a[j])%modd;
        }
    	for(int i=1;i<=n;i++)printf("%lld",(a[i]+modd)%modd),printf(i == n?"
    ":" " );
    }
    int main(int argc, char const *argv[])
    {
    	for(int i=1;i<=1000;i++)in[i]=inv(i);
        int t;scanf("%d",&t);
        while(t--)solve();
        return 0;
    }
    

    C萌萌哒身高差

    打表就可以看出来结论···我推了很长时间(???????)然后打了个表==很简单的结论人然后就A了。

    #include <bits/stdc++.h>
    using namespace std;
    double a[100010];
    int main()
    {
    	int t,n,k;scanf("%d",&t);
    	a[1]=0;
    	int tot = 3;
    	for(int i=2;i<=100;i++)
    	{
    		a[i]=a[i-1]+tot;tot+=2;
    	}
    	while(t--){
    		scanf("%d",&n);
    		printf("%.9f
    ",a[n]/3);
    	}
    }
    

    D雷电爆裂之力

    枚举每个中间的找两边的最近的就行··因为我sb,一个地方m写成了k wa了一个半小时==

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define int ll
    ll a[2000010],b[2000010],c[2000010];
    ll abss(ll x){return x>0?x:-x;}
    void solve()
    {
    	int n,m,k;scanf("%lld%lld%lld",&n,&m,&k);	
    	for(int i=1;i<=n;i++)scanf("%lld",&a[i]);sort(a+1,a+1+n);
    	for(int i=1;i<=m;i++)scanf("%lld",&b[i]);sort(b+1,b+1+m);
    	for(int i=1;i<=k;i++)scanf("%lld",&c[i]);sort(c+1,c+1+k);
    	int r1 = 1,r2 = 1,r3=1;
    	a[0]= -2e12;c[0]=-2e12;
    	c[k+1] = a[n+1]=2e12;
    	ll ans = 2e12;
    	for(int i=1;i<=m;i++)
    	{
    		while(r1<=n&&a[r1]<b[i])r1++;
    		while(r2<=k&&c[r2]<b[i])r2++;
    		ans = min(ans,min(abss(c[r2]-b[i]),abss(c[r2-1]-b[i]))+min(abss(a[r1]-b[i]),abss(a[r1-1]-b[i])));
    	}
    	printf("%lld
    ",ans+3);
    } 
    main()
    {
    	int t;scanf("%lld",&t);
    	while(t--)solve();
    }
    

    E可以来拯救吗

    爆搜剪枝···

    路上听的bittian的写法orz

    #include <bits/stdc++.h>
    using namespace std;
    #define modd 	1000000007
    typedef long long ll;
    ll ans =0;
    ll a[100010],su[100010];
    int n,k;
    void dfs(int tot,ll sum,int now)
    {
    	if(n -tot+1<k-now)return;
    	if(n - tot+1 == k - now)
    	{
    		sum +=	su[n]-su[tot-1];
    		ans ^= sum*sum;
    		return;
    	}
    	if(now == k)
    	{
    		ans ^= sum*sum;
    		return;
    	}dfs(tot+1,sum+a[tot],now+1);
    	dfs(tot+1,sum,now);
    
    }
    void solve()
    {
    	scanf("%d%d",&n,&k);ans = 0;
    	for(int i=1;i<=n;i++)scanf("%lld",&a[i]),su[i]=su[i-1]+a[i];
    	dfs(1,0,0);
    	printf("%lld
    ",ans );
    }
    int main(int argc, char const *argv[])
    {
        int t;scanf("%d",&t);
        while(t--)solve();
        return 0;
    }
    

    F汤圆防漏理论

    开个优先队列每次取当前点权最小的点删了然后每次更新ans。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    vector<pair<int,ll> > g[1000010];
    ll d[1000010];
    int vis[1000010];
    void solve()
    {
    	int n,m;scanf("%d%d",&n,&m);
    	int u,v;ll w;
    	for(int i=1;i<=n;i++)g[i].clear(),d[i]=vis[i]=0;
    	for(int i=1;i<=m;i++)
    	{
    		scanf("%d%d%lld",&u,&v,&w);
    		g[u].push_back({v,w});g[v].push_back({u,w});
    		d[u]+=w;d[v]+=w;
    	}
    	priority_queue<pair<ll,int>> que;
    	for(int i=1;i<=n;i++)que.push({-d[i],i});
    	ll ans = 0;
    	while(!que.empty())
    	{
    		pair<ll,int> now = que.top();que.pop();
    		int u = now.second;if(vis[u])continue;
    		vis[u]=1;ans = max(ans,d[u]);
    		for(int i=0;i<g[u].size();i++)
    		{
    			int v = g[u][i].first;
    			d[v]-=g[u][i].second;
    			que.push({-d[v],v});
    		}
    	}
    	printf("%lld
    ",ans );
    
    }
    int main(int argc, char const *argv[])
    {
    	int t;scanf("%d",&t);
    	while(t--)solve();
    	return 0;
    }
    

    G命名规范问题

    简单模拟

    #include <bits/stdc++.h>
    using namespace std;
    char s[2000010];
    int isbig(char x)
    {
    	if(x<='Z'&&x>='A')return 1;
    	return 0;
    }
    void solve()
    {
    	scanf("%s",s+1);int n = strlen(s+1);
    	if(n <= 2||isbig(s[2])||isbig(s[n])){printf("%s
    ",s+1);return ;}
    	int cnt=0;
    	for(int i=1;i<=n;i++)
    	{
    		if(isbig(s[i]))cnt++;
    	}
    	if(isbig(s[1])&&cnt == 1){
    	printf("%s
    ",s+1);return;}
    	for(int i=1;i<n;i++)
    	{
    		if(isbig(s[i])&&isbig(s[i+1]))
    		{
    			printf("%s
    ",s+1);return;
    		}
    	}
    	for(int i=1;i<=n;i++)
    	{
    		if(i == 1&&isbig(s[i]))printf("%c",s[i]-'A'+'a');
    		else if(isbig(s[i]))printf("_%c",s[i]-'A'+'a');
    		else printf("%c",s[i]);
    	}
    	puts(""); 
    } 
    int main()
    {
    	int t;scanf("%d",&t);
    	while(t--)solve();
    }
    

    H吾好梦中做题

    待补

    I如何办好比赛

    QAQ赛时读错题了,其实是个简单题·····

    因为比赛的时候没a==···(我好菜

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    char s[1000010];
    int sum[1000010];
    void solve()
    {
    	int n,m;scanf("%d%d",&n,&m);
    	scanf("%s",s+1);
    	ll ans =0;
    	for(int i=1;i<=n;i++)
    	{
    		sum[i]=sum[i-1]+(s[i]=='D');
    		ans += sum[i]*(s[i]=='M');
    	}
    	if(1ll*m>1ll*sum[n]*(n-sum[n]))printf("-1
    ");
    	else
    	{
    		printf("%lld
    ",(ll)abs(ans - m) );
    	}
    }
    int main(int argc, char const *argv[])
    {
    	int t;scanf("%d",&t);
    	while(t--)solve();
    	return 0;
    }
    

    J小白兔小灰兔

    待补

    K好学期来临吧

    赛时还有十分钟的时候看了一眼··觉得是个dp没时间写了····然后就凉了,然后赛后听了一下zhberDP_(:з」∠)_

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    ll a[1001],b[101];
    ll d[1001][101][101][2];
    void solve()
    {
    	int n,m;scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
    	for(int i=1;i<=m;i++)scanf("%lld",&b[i]);
    	sort(b+1,b+1+m);
    	for(int i=1;i<=n;i++)
    	{
    		d[i][0][m+1][1] = d[i-1][0][m+1][0]+a[i];d[i][0][m+1][0] = max(d[i-1][0][m+1][1],d[i-1][0][m+1][0]);
    		for(int k=m;k>=1;k--){
    			d[i][0][k][1]=max(d[i-1][0][k][0]+a[i],d[i][0][k+1][0]+b[k]);
    			d[i][0][k][0]=max(max(d[i][0][k+1][1],	d[i][0][k+1][0]),max(d[i-1][0][k][1],d[i-1][0][k][0]));
    		}
    		for(int j = 1;j<=m;j++)
    		{
    			d[i][j][m+1][1]=d[i-1][j][m+1][0]+a[i];
    			d[i][j][m+1][0]=max(max(d[i][j-1][m+1][1],	d[i][j-1][m+1][0]),max(d[i-1][j][m+1][0],d[i-1][j][m+1][1]));
    
    		}
    		for(int j=1;j<=m;j++)
    		{
    			for(int k = m;k>j;k--)
    			{
    				d[i][j][k][1] = max(d[i-1][j][k][0]+a[i],d[i][j][k+1][0]+b[k]);
    				d[i][j][k][0] = max(max(d[i-1][j][k][0],d[i-1][j][k][1]),max(d[i][j-1][k][1],d[i][j-1][k][0]));
    			}
    		}
    	}
    	ll ans =0;
    	for(int i=1;i<=m;i++)for(int j=m;j>i;j--)for(int k=0;k<=1;k++)ans = max(ans,d[n][i][j][k]);
    	printf("%lld
    ",ans );
    } 
    int main()
    {
    	int t;scanf("%d",&t);
    	while(t--)solve();
    }
    
    
  • 相关阅读:
    loadrunner获取Http信息头中指定值作为参数
    soapUI使用-DataSource获取oracle库中的参数
    [转]vim编辑器---批量注释与反注释
    String() 函数把对象的值转换为字符串。
    自定义滚动条mCustomScrollbar
    css实现强制不换行/自动换行/强制换行
    在网页中添加新浪微博“加关注”按钮
    移动前端调试方案(Android + Chrome 实现远程调试)
    font-family
    移动端touch事件滚动
  • 原文地址:https://www.cnblogs.com/miamiao/p/8724358.html
Copyright © 2020-2023  润新知