首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Winter Camp 1

Winter Camp 1

作者头像
AngelNH
发布2020-04-16 15:31:39
3240
发布2020-04-16 15:31:39
举报
文章被收录于专栏:AngelNIAngelNI

《Z的悲剧》

A honoka和格点三角形

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll mod = 1000000007;
ll n,m;
int main()
{
    cin>>n>>m;
    ll a = (m-1)%mod*m%mod*(n-2)%mod*2%mod;
    ll b = (m-2)%mod*m%mod*(n-1)%mod*2%mod;
    ll c = (n-1)%mod*n%mod*(m-2)%mod*2%mod;
    ll d = (n-2)%mod*n%mod*(m-1)%mod*2%mod;
    //ll re1 = (m-2)%mod*(n-1)%mod*4%mod;
    //ll re2 = (n-2)%mod*(m-1)%mod*4%mod;
    //ll re = (re1+re2)%mod;
    ll sum = (a+b+c+d)%mod;
    //sum = (sum-re)%mod;
    cout<<sum<<endl;
    //cout<<(a%mod+b%mod+c%mod+d%mod-re1%mod-re2%mod)%mod<<endl;
    system("pause");

    return 0;
}

B kotori和bangdream

签到题

#include<iostream>
#include<cstdlib>
using namespace std;
typedef long long ll;
int main()
{
    //ios::sync_with_stdio(false);
    //cin.tie(NULL);
    //cout.tie(NULL);
    double n,x,a,b;
    cin>>n>>x>>a>>b;
    double ans = a*x/100.0+b-b*x/100.0;
    ans = ans * n;
    printf("%.2f\n",ans);
    system("pause");
    return 0;
    
}

D hanayo和米饭

签到题

#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
typedef long long ll;
ll n;
ll a[100001];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>n;
    //memset(a,0,sizeof(a));
    for(ll i = 1;i<n;++i)
    {
        int x;
        cin>>x;
        a[x]++;
    }
    ll flag ;
    for(ll i=1;i<=n;++i)
    {
        if(a[i]==0)
        {
            flag = i;
            break;
        }
    }
    cout<<flag<<endl;
    //system("pause");
    return 0;
    
}

E rin和快速迭代

暴力求解就可以,在这里用到约束个数定理

#include<iostream>
using namespace std;
typedef long long ll;
ll n;
ll count(ll n)
{
    ll s = 1;
    for(ll i =2;i*i <= n;++i)
    {
        if(n%i==0)
        {
            ll a = 0;
            while(n%i==0)
            {
                n = n/i;
                a++;
            }
            s = s*(a+1);
        }
    }
    if(n>1) s = s * 2;
    return s;
}
int main()
{
    cin>>n;
    ll num = 1;
    while(count(n)!=2)
    {
        n = count(n);
        num++;
    }
    cout<<num<<endl;
    system("pause");
    return 0;
}

G eli和字符串

这道题可以用尺取法来解决

#include<iostream>
#include<cstdlib>
#include<string>
#include<algorithm>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
ll n,k;

int main()
{
	cin>>n>>k;
	string s;
	cin>>s;
	
	
	int l,r,ans;
    ans = INF;
	int a[100]={0};
	l = r = 0;
	while(r<s.size())
	{
		a[s[r]-'a']++;
		while(a[s[r]-'a']>=k)
		{
			ans = min(ans,r-l+1);
			
			a[s[l]-'a']-=1;
			l++;
		} 
		r++;
	}
	if(ans==INF)	
		cout<<-1<<endl;
    else
		cout<<ans<<endl;

	system("pause");
	return 0;
}

H nozomi和字符串

用到二分+前端和,check()部分不算是太明白,贴上代码

#include<bits/stdc++.h>
typedef long long ll;

using namespace std;
int a[200009];
int n,k;
bool check(int x)
{
    for(int i=x;i<=n;i++)
    {
        int ans = a[i]-a[i-x];//求零的数量也就是操作次数
        if(ans<=k||x-ans<=k)//如果0的数量比K小,那就在区间的右侧;
            return 1;
    }
    return 0;//否则在区间左侧 
}
int main()
{
    cin >> n >> k;
    string s;
    cin>>s;
    a[1] = s[0]-'0';
    /*前缀和*/
    for(int i=1;i<n;++i)
    {
        a[i+1]=a[i]+s[i]-'0';
        //cout<<a[i]<<endl;
    }
    /*二分*/
    int l = 1,r = n,mid;
    while(l<=r)
    {
        mid = (l+r)>>1;
        if(check(mid))
        {
            if(!check(mid+1))
                break;
            l = mid+1;
        }
        else 
            r = mid-1;
    }
    cout << mid <<endl;
    system("pause");
    return 0;
}

最后总结,菜是罪恶的源泉。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-11|,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • A honoka和格点三角形
  • B kotori和bangdream
  • D hanayo和米饭
  • E rin和快速迭代
  • G eli和字符串
  • H nozomi和字符串
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档