Codeforces Round #620 (Div. 2)

心态崩了丫…一个小时A出ABC,然后就WA了一小时的D…

A. Two Rabbits

难的出这么简单,真香!

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=1e6+10;
 
vector<pair<int,string> >v,ans;
 
int main()
{
    int t;  cin>>t;
    while(t--)
    {
        int x,y,a,b;
        cin>>x>>y>>a>>b;
        if((y-x)%(a+b)==0)
            cout<<(y-x)/(a+b)<<endl;
        else
            cout<<"-1"<<endl;
    }
    return 0;
}

B. Longest Palindrome

B其实正常,直接用map记录,然后不断的reverse字符串,详细的直接看代码就行

#include <bits/stdc++.h>
using namespace std;
typedef long long ll; 
int main()
{
	ios_base::sync_with_stdio(0); 
	cin.tie(0), cout.tie(0);
	int n, m;
	cin >> n >> m;
	map<string, int> freq;
	string a;   string b;
	for(int i = 0; i < n; i++)
    {
		string q;   cin >> q;
		string rq = q;
		reverse(rq.begin(), rq.end());
		if(freq[rq] >= 1)
		{
			freq[rq]--;
			a += rq;
			b += rq;
		} else 
		{
			freq[q]++;
		}
	}
	for(auto r : freq)
	{
		string q = r.first;
		string rq = q;
		reverse(rq.begin(), rq.end());
		if(r.second >= 1 && q == rq)
		{
			a += q;
			break;
		}
	}
	reverse(b.begin(), b.end());
	a += b;
	cout << a.size() << '\n';
	cout << a << '\n';
}

C. Air Conditioner

题解明天写,小编觉得D又行了…

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=1e6+10;
ll T,n,m;
struct node
{
	ll t,l,r;
}num[200];
int main(){
	cin>>T;
	while(T--)
    {
		cin>>n>>m;
		ll minn=m,maxx=m;
		bool flag=0;
		num[0].t=0;
		for(int i=1;i<=n;i++)
		{
			cin>>num[i].t>>num[i].l>>num[i].r;
			ll cul=num[i].t-num[i-1].t;
			ll temp1=minn-cul,temp2=maxx+cul;
			if(temp1>num[i].r || temp2<num[i].l) flag=1;
			minn=max(minn-cul,num[i].l);
			maxx=min(maxx+cul,num[i].r);
		}
		if(flag) 
            puts("NO");
		else 
            puts("YES");
	}
	
	return 0;
}

D. Shortest and Longest LIS

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string s;
int n,t;
void Codeforce()
{
    scanf("%d",&n);
    cin >> s;
    int total = 0, ans = n;
    for(int i=0;i<=n-2;i++)
    {
        if (s[i] == '<')
            total++;
        else
        {
            for(int i=ans-total;i<=ans;i++)
                cout << i << " ";
            ans = ans - total - 1;
            total = 0;
        }
    }
    for (int i = ans - total ; i <= ans && i >= 1 ; i ++)
        cout << i << " ";
    cout << '\n';
    
    total = 0;
    ans = 1;
    for(int i=0;i<=n-2;i++)
    {
        if (s[i] == '>')
            total++;
        if (s[i] == '<')
        {
            for(int i=ans+total;i>=ans;i--)
                cout << i << " ";
            ans = ans + total + 1;
            total = 0;
        }
    }
    for (int i = ans + total; i >= ans && i <= n; i--)
        cout << i << " ";
    puts("");
}
int main()
{
	scanf("%d",&t);
	while (t--)
	{
		Codeforce();
	}
	return 0;
}
发布了43 篇原创文章 · 获赞 6 · 访问量 5807

猜你喜欢

转载自blog.csdn.net/mumuhaoshuai/article/details/104336531