• Educational Codeforces Round 81 (Rated for Div. 2)



    链接

    签到,简单贪心。可以看出来只会使用最多一个7剩下的全是1

    #include<bits/stdc++.h>
    
    using namespace std;
    
    typedef long long ll;
    
    
    int main(int argc, char const *argv[])
    {
    	ios::sync_with_stdio(false);
    	int t;
    	cin>>t;
    	while(t--)
    	{
    		int n;
    		cin>>n;
    		
    		if (n%2==0)
    		{
    			for (int i = 0; i < n/2; ++i)
    			{
    				cout<<1;
    			}
    			cout<<endl;
    		}
    		else
    		{
    			cout<<7;
    			for (int i = 0; i < (n-3)/2; ++i)
    			{
    				cout<<1;
    			}
    		}
    		cout<<endl;
    	}
    	
    	return 0;
    }
    
    /*
    0 要4
    1 要2
    2 要3
    3 要5
    4 要4
    5 要5
    6 要6
    7 要3
    8 要7
    9 要6
    */
    

    链接

    预处理前缀的值,对于任意一个前缀,肯定是N个串s加上一个s的前缀,遍历即可

        #include<bits/stdc++.h>
    
    using namespace std;
    
    typedef long long ll;
    
    char a[100010];
    int num[100010];
    int main(int argc, char const *argv[])
    {
    	//ios::sync_with_stdio(false);
    	int t;
    	cin>>t;
    	while(t--)
    	{
    		int n,q;
    		cin>>n>>q;
    		cin>>a;
    		memset(num,0,sizeof(num));
    		for (int i = 0; i < n ; ++i)
    		{
    			if (a[i]=='1')
    			{
    				num[i+1]=num[i]-1;
    			}
    			else
    			{
    				num[i+1]=num[i]+1;
    			}
    		}
    		int k=num[n]; //也就是一个圈能增加多少
    		//后面的肯定是与这个同余的
    		ll ans = 0;
    		ll gap = 0;
    		if(k==0)
    		{
    			//cout<<"gg"<<endl;
    			gap = q-num[0]; //算出来了差距
    			if(gap==0)
    			{
    				ans++;
    			}
    			for (int i = 1; i <= n; ++i)
    			{
    				gap = q-num[i]; //算出来了差距
    				if (gap==k)
    				{
    					ans++;
    					break;
    				}
    
    			}
    			
    			if (ans>0)
    			{
    				cout<<-1<<endl;
    			}
    			else
    				cout<<0<<endl;
    		}
    		else 
    		{
    			gap = q-num[0]; //差距
    			if (gap==0)
    			{
    				ans++;
    			}
    			for (int i = 1; i <= n; ++i)
    			{
    				gap = q-num[i]; //差距
    				if (gap/k>=0 && gap%k==0)
    				{
    					ans++;
    				}
    
    			}
    			cout<<ans<<endl;
    		}
    		
    	}
    
    	return 0;
    }
    

    链接

    贪心,建立跳转表来快速定位

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N = 2e5+10;
    const int INF = 1e9+10;
    
    typedef long long ll;
    
    int pos[N][26];
    
    char a[N];
    char b[N];
    
    int main(int argc, char const *argv[])
    {
    	ios::sync_with_stdio(false);
    	int t;
    	cin>>t;
    	while(t--)
    	{
    		cin>>a;
    		cin>>b;
    		ll ans = 1;
    		for (int i = 0; i < N; ++i)
    		{
    			for (int j = 0; j < 26; ++j)
    			{
    				pos[i][j] = INF;
    			}
    		}
    		for (int i = strlen(a)-1; i >=0; --i)
    		{
    			  for (int j = 0; j < 26; ++j)
    			  {
    			  	if (j==(a[i]-'a'))
    			  	{
    			  		pos[i][j] = i;
    			  	}
    			  	else
    			  	{
    			  		pos[i][j] = pos[i+1][j];
    			  	}
    			  }
    		}
    		int flag = 0;
    		int p=0;
    		for (int i = 0; i < strlen(b); ++i)
    		{
    			if (p==strlen(a)) //超出去就回到0,是为了满足最后一个还能满足
    			{
    					p=0;
    					ans++;
    					//cout<<ans<<endl;
    			}
    			if (pos[p][b[i]-'a'] == INF) //后面已经不存在当前这个情况了,必须要重新开始找了。
    			{
    				
    				ans++;
    				p=0;
    				//cout<<ans<<endl;
    			}
    			if (p==0&&pos[p][b[i]-'a']==INF) //判断没有出现
    			{
    				flag = 1;
    				break;
    			}
    			p = pos[p][b[i]-'a']+1; //加1的目的是,万一还是当前这个,肯定不能记录两次
    
    		}
    		if(flag)
    		{
    			cout<<-1<<endl;
    		}
    		else
    			cout<<ans<<endl;
    	}
    	return 0;
    }
    /*
    3
    aabce
    ace
    abacaba
    aax
    ty
    yyt
    */
    
  • 相关阅读:
    NodeJS爬虫入门
    JavaScript 中运算优先级问题
    Express + Session 实现登录验证
    C# Func,Action,Predicate的区别
    xaml页面和viewmodel之间接收绑定的参数,也可以称为事件里动态传入用户自定义参数
    Windows下使用自带certutil工具校验文件MD5、SHA1、SHA256
    async await总结
    带圆角的图片显示
    wpf style BaseOn 不能使用DynamicResource,必须使用StaticResource来指明
    javascript 模板里内容的换行拼接,可以使用反单引号,ESC下面的那个按键
  • 原文地址:https://www.cnblogs.com/Crossea/p/12246546.html
Copyright © 2020-2023  润新知