前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Codeforces Round #620 (Div. 2) A~~D

Codeforces Round #620 (Div. 2) A~~D

作者头像
杨鹏伟
发布2020-09-11 08:06:24
2390
发布2020-09-11 08:06:24
举报
文章被收录于专栏:ypwypw

A. 题意:两只兔子各有初始位置,然后各有速度,然后相向跳跃

水题:俺一开始来了个循环L了一发!!!难过!

代码语言:javascript
复制
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;

int main(){
	int t;
	cin>>t;
	while(t--){
		ll a,b;
		ll x,y;
		cin>>x>>y>>a>>b; 
		ll len = y - x;
		int flag = 0;
		int ans = len/(a+b);
		if(ans * (a+b) == len){
			flag = 1;
			cout<<ans<<endl;
		}
		if(!flag){
			cout<<-1<<endl;
		}
		 
	} 
	return 0;
} 

B. 题意:就是给多个字符串然后问是否能组成尽可能长的新的字符串使得新的字符串时回文串

思路:一开始想错了,以为能变动字符顺序,就把所有字符数统计然后偶数对输出…傻逼!!!

要仔细审题,题目中的意思是就是字符串连接,看样例也行啊!

代码语言:javascript
复制
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

string s[105];
string ss[105];
string ans,mmp;
string flag;

map<string,int> st;

int main()
{
	ios::sync_with_stdio(0);
	int n, m;
	cin>>n>>m;
	ans = mmp = ""; //等于空串 
	
	for(int i=1;i<=n;i++)
		cin >> s[i];
		
	for(int i=1;i<=n;i++){
		flag = s[i];
		
		reverse(flag.begin(),flag.end());//将串反转 
		
		if (flag == s[i]){//如果自身时回文串,那么选择一个最大的放中间 
			if (flag.size() > mmp.size()) 
			mmp = flag, ss[i] = "1";//对应位置搞个东西替代 
		} 
		else{
		  ss[i] = flag;//否则就把反转串放入字符串数组 
		}
	}
	
	for(int i=1;i<=n;i++)
		for (int j=1;j<=n;j++)
			if (s[i] ==ss[j] && st[s[i]] == 0){//原来的串跟反转串相等 
				ans += s[i];//说明存在互为回文的两个串 
				
				flag = s[i];
				st[flag] = 1;//置为1 
				
				reverse(flag.begin(), flag.end());
				st[flag] = 1;//对应的另一个也要,好让不重复加 
			}
			
	if(ans == "" && mmp == ""){
		cout<<0<<endl;
	}
	 
	else{
		flag = ans;//得到另半个的串 
		
		reverse(flag.begin(), flag.end());
		
		int len = ans.size()+mmp.size()+flag.size();
		
		cout<<len<<endl;
		
		cout<<ans<<mmp<<flag<<endl;
	}
	return 0;
}

C 题意:就是每个客人在不同的时间来到,有自己喜欢的不同的温度上限跟下限,然后每一分钟你能降一个温度或者升一个温度,求你能否满足所有人的要求,能输出YES,否则输出no

思路:就是每个客人都有一个自己的区间,那么我们动态更新在上一个客人后能达到的最高温度跟最低温,(客人按照来的先后顺序排序),然后看客人的区间是否在这个区间里面,不在那么就输出NO,然后break掉,否则我们要跟新当前的区间,最低温应该取当前客人的最低温跟上目前所能达到的最低温的最大值,(假如当前最低温是大于客人最低温的,那么由于不能达到客人最低温,所以就取大的了,反之你要满足客人需求,所以取客人的最低温)。那么另外的一个边界也是这样取得的

数据真水!客人顺序都自动从小到大…

代码语言:javascript
复制
#include<bits/stdc++.h>
#define maxn 205

using namespace std;
typedef long long ll;

ll t;
ll n,m;

struct node
{
	ll t;
	ll l;
	ll h;
}a[maxn];

int cmpp(node x,node y){
	return x.t < y.t;
}

int main(){
	cin>>t;
	while(t--)
    {
		cin>>n>>m;
		ll minn=m;
		ll maxx=m;
		int  flag=0;
		
		a[0].t=0;
		
		for(int i=1;i<=n;i++){
			cin>>a[i].t>>a[i].l>>a[i].h;
		}
		
		sort(a+1,a+n+1,cmpp);
		
		for(int i=1;i<=n;i++)
		{
			
			ll res=a[i].t-a[i-1].t;
			
			ll temp1=minn-res;//下界 
			
			ll temp2=maxx+res;//上届 
			
			if(temp1>a[i].h || temp2<a[i].l){
				flag = 1;
				break;
			} 
			   
			minn = max(temp1,a[i].l);
			maxx = min(temp2,a[i].h);
		}
		if(flag) 
           cout<<"NO"<<endl;
		else 
            cout<<"YES"<<endl;
	}
	
	return 0;
}

D.题意:就是给你个>,<,找出在n里面满足这样的数的序列,并且分别打印最短递增跟最长递增。

思路:跟这题意乱写一通,过了…c 总感觉不对就没敢交…

明天补思路,困…

代码语言:javascript
复制
#include <bits/stdc++.h>
using namespace std;
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;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档