zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 97 (Rated for Div. 2)

    Educational Codeforces Round 97 (Rated for Div. 2)

    A.Marketing Scheme

    题意:是否存在a使在[l,r]之间所有的数(用x表示)都满足,((x mod a)geqfrac{a}{2})
    思路:2*l>r那么a=r+1一定满足

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    #include<string>
    #include<queue>
    #include<map>
    #include<stack>
    #include<iostream>
    #define INF 0x3f3f3f3f
    #define lowbit(a) ((a)&-(a))
    typedef long long ll;
    using namespace std;
    int n,t; 
    int main()
    {
    	int l,r;
    	cin>>t;
    	while(t--)
    	{
    		cin>>l>>r;
    		if(l*2>r)
    		cout<<"YES"<<endl;
    		else
    		cout<<"NO"<<endl;
    	}
    }
    

    B.Reverse Binary Strings

    题意:给一个二进制字符串,翻转其中一部分视为一次操作,问最少的操作次数使字符串变为0,1交错。
    思路:翻转字符串不改变翻转部分内部的0,1相邻关系,只改变头和尾部分并且是交换关系,所以只要每当找到一个相邻相同的字符当作头,便往后找第一个相邻相同的字符且与头不为同一字符作为尾,翻转头尾之间的部分。

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    #include<string>
    #include<queue>
    #include<map>
    #include<stack>
    #include<iostream>
    #define INF 0x3f3f3f3f
    #define lowbit(a) ((a)&-(a))
    typedef long long ll;
    using namespace std;
    int n,t; 
    string s;
    void op(int p,char c)
    {
        bool flag=false;
        for(int i=p;i<n-1;i++)
        {
            if(s[i]==s[i+1]&&flag&&s[i]!=c)
            {
                reverse(s.begin()+p,s.begin()+i+1);
                return;
            }
            if(s[i]!=s[i+1])
            {
                flag=true;
            }
        }
    }
    int main()
    {
    	cin>>t;
    	while(t--)
    	{
    		ll ans=0;
    		cin>>n>>s;
    		for(int i=0;i<n;i++)
    		{
    			if(s[i]==s[i+1])
    			{
    				op(i+1,s[i]);
    				ans++;
    			}
    		}
    		cout<<ans<<endl;
    	}
    }
    

    C.Chef Monocarp

    题意:每到菜最佳出菜时间为T[i],但一个时间只能出一道菜,问如何使所有(T[i]-t)的和最小
    思路:dp,先排序,设dp[i][j]为第i到菜第j分钟出菜使的花费。

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    #include<string>
    #include<queue>
    #include<map>
    #include<stack>
    #include<iostream>
    #define INF 0x3f3f3f3f
    #define lowbit(a) ((a)&-(a))
    typedef long long ll;
    using namespace std;
    int n,t,a[205],f[205][10005]; 
    int main()
    {
    	cin>>t;
    	while(t--)
    	{
    		int mmax=INF;
    		cin>>n;
    		for(int i=1;i<=n;i++)
    		cin>>a[i];
    		sort(a+1,a+1+n);
    		for(int j=1;j<=4*n;j++)
    		f[1][j]=abs(a[1]-j);
    		for(int i=2;i<=n;i++)
    		for(int j=1;j<=4*n;j++)
    		f[i][j]=INF;
    		for(int i=2;i<=n;i++)
    		for(int j=1;j<=4*n;j++)
    		for(int k=1;k<j;k++)
    		f[i][j]=min(f[i][j],f[i-1][k]+abs(a[i]-j));
    		for(int i=1;i<=4*n;i++)
    		{
    			mmax=min(f[n][i],mmax);
    		}
    		cout<<mmax<<endl;
    	}
    }
    

    D.Minimal Height Tree

    题意:给一个bfs顺序遍历的节点顺序,且每一个父节点的子节点都是从小到大的顺序遍历,问树的可能的最小深度。
    思路:贪心,把从小到大的一个序列放进同一个父节点,然后每层父节点放满,再放下一层。

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    #include<string>
    #include<queue>
    #include<map>
    #include<stack>
    #include<iostream>
    #define INF 0x3f3f3f3f
    #define lowbit(a) ((a)&-(a))
    typedef long long ll;
    using namespace std;
    int t,n,a[200005]; 
    vector<int> q;
    int main()
    {
    	cin>>t;
    	while(t--)
    	{
    		cin>>n;
    		q.clear();
    		ll len=0;
    		for(int i=1;i<=n;i++)
    		{
    			cin>>a[i];
    		}
    		for(int i=2;i<=n;i++)
    		{
    			if(a[i]>a[i-1])
    			len++;
    			else
    			{
    				q.push_back(len);
    				len=1; 
    			}
    		}
    		q.push_back(len);
    		ll ans=0;
    		ll mmax=1;
    		ll num=0;
    		ll nmax=0;
    		ll x=0;
    		while(x<q.size())
            {
                num++;
                if(num>mmax)
                {
                    mmax=nmax;
                    nmax=q[x];
                    num=1;
                    ans++;
                }
                else nmax+=q[x];
                x++;
            } 
            cout<<ans+1<<endl;
    	}
    }
    
  • 相关阅读:
    桟错误分析方法
    gstreamer调试命令
    sqlite的事务和锁,很透彻的讲解 【转】
    严重: Exception starting filter struts2 java.lang.NullPointerException (转载)
    eclipse 快捷键
    POJ 1099 Square Ice
    HDU 1013 Digital Roots
    HDU 1087 Super Jumping! Jumping! Jumping!(动态规划)
    HDU 1159 Common Subsequence
    HDU 1069 Monkey and Banana(动态规划)
  • 原文地址:https://www.cnblogs.com/qingjielaojiu/p/13896530.html
Copyright © 2011-2022 走看看