首页 > 其他分享 >Educational Codeforces Round 159 (Rated for Div. 2) - VP记录

Educational Codeforces Round 159 (Rated for Div. 2) - VP记录

时间:2024-11-08 21:09:37浏览次数:1  
标签:week Educational Rated 159 namespace long int str include

Preface

重点策略:

\[\large\textbf{\underline{先写简单好写的算法,再逐步修改优化}} \]

十分有效,百试百灵,屡试不爽。

A. Binary Imbalance

当有相邻两字符不相等时,就可以不断向中间插入 0

所以输出 NO 当且字符串全为 1

点击查看代码
#include<cstdio>
using namespace std;

const int N=105;
int n;
char str[N];

bool check()
{
	for(int i=1;i<n;i++)
		if((str[i]-'0')^(str[i+1]-'0'))
			return true;
	if(str[1]=='0') return true;
	else return false;
}
int main()
{
	int T; scanf("%d",&T);
	while(T--)
	{
		scanf("%d%s",&n,str+1);
		printf("%s\n",check()?"YES":"NO");
		
	}
}

B. Getting Points

究极橙题。

做法有点像这篇题解,用的是 \(O(1)\) 的数学做法。但是如果让我再来一次,我宁愿用二分。

因为数学做法太容易挂了,而且脑子要烧烂,看下代码就知道了。

下次遇到这种题先打最不容易错的,再逐步优化(这题甚至不用优化)。

点击查看代码
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;

long long n,p,l,t;

int main()
{
	int T; scanf("%d",&T);
	while(T--)
	{
		scanf("%lld%lld%lld%lld",&n,&p,&l,&t);
		long long week=ceil(n/7.0);
		if((week+1)/2*l+week*t>=p) printf("%lld\n",n-min((long long)ceil(1.0*p/(l+t*2)),week));
		else printf("%lld\n",n-(week+1)/2-(long long)ceil(1.0*(p-(week+1)/2*l+week*t)/l));
	}
	return 0;
}

C. Insert and Equalize

所选 \(x\) 为 \(\gcd(a_1,a_2,\dots,a_n)\),排序后如果原序列是等差数列就把 \(a_{n+1}\) 放在开头或末尾,否则在中间找一个值最大的空插进去。

最后序列要全部变为最大值,用最大值减每一个数再除以最大公约数就是每一次的操作次数,全部加起来即可。

点击查看代码
#include<cstdio>
#include<algorithm>
using namespace std;

const int N=2e5+5;
int n;
long long a[N];

int gcd(int x,int y){return y?gcd(y,x%y):x;}
int main()
{
	int T; scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
			scanf("%lld",&a[i]);
		if(n==1)
		{
			printf("1\n");
			continue;
		}
		sort(a+1,a+n+1);
		int d=a[2]-a[1];
		for(int i=2;i<n;i++)
			d=gcd(d,a[i+1]-a[i]);
		long long ans=0;
		for(int i=1;i<=n;i++)
			ans+=(a[n]-a[i])/d;
		bool is_full=true;
		for(int i=n;i>=2;i--)
			if(a[i]-a[i-1]!=d)
			{
				ans+=(a[n]-(a[i]-d))/d;
				is_full=false;
				break;
			}
		if(is_full) ans+=min((long long)(a[n]-(a[1]-d))/d,1ll*n*d);
		printf("%lld\n",ans);
	}
	return 0;
}

D. Robot Queries

这题做的挺顺的,就是连着被卡空间又被卡时间有点不爽。

但是做这道题就是“先写简单好写的写法,再逐步优化”策略的典范,以后要多多按照这个策略做题。

我的洛谷题解

E. Collapsing Strings

看出来是字典树,也有一些做法,但是实现比较复杂还容易错,所以我用的是这篇题解的处理方法。

久了没打字典树都快忘了,这次正好复习一下。

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int N=1e6+5;
int n;
string str[N];
long long ans,sumlen;

namespace Trie{

int trie[N][30],idx;
int cnt[N],end[N];
void insert(string &s)
{
	int p=0;
	for(int i=0;i<(int)s.length();i++)
	{
		int num=s[i]-'a'+1;
		if(!trie[p][num]) trie[p][num]=++idx;
		p=trie[p][num];
		cnt[p]++;
	}
	end[p]++;
	return;
}
long long query(string &s)
{
	int p=0;
	long long res=1ll*s.length()*n+sumlen;
	for(int i=0;i<(int)s.length();i++)
	{
		int num=s[i]-'a'+1;
		if(trie[p][num])
		{
			p=trie[p][num];
			res-=2*cnt[p];
		}
		else break;
	}
	return res;
}

}

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		cin>>str[i];
		sumlen+=str[i].length();
		Trie::insert(str[i]);
	}
	for(int i=1;i<=n;i++)
	{
		reverse(str[i].begin(),str[i].end());
		ans+=Trie::query(str[i]);
	}
	printf("%lld\n",ans);
	return 0;
}

标签:week,Educational,Rated,159,namespace,long,int,str,include
From: https://www.cnblogs.com/jerrycyx/p/18535916

相关文章

  • Educational Codeforces Round 161 (Rated for Div. 2) - VP记录
    Preface先被A题硬控\(20\)分钟,有点不爽。又看到E题AC的人比D题多而去嗑E题去了,结果D题反而是我更能做的。将问题排序:根据你所需付出的努力,将能够最快解决的问题排在前面。(答题的次序为:以前做过的,容易的,不熟悉的,难的)——李博杰《骗分导论》\(\rmP_{114}\)所以......
  • Educational Codeforces Round 171 (Rated for Div. 2) 题解
    A.PerpendicularSegments显然构造一个\(k\timesk\)的左下角是原点的正方形即可。voidslv(){ intx,y,k;Read(x,y,k); intmn=min(x,y); if(mn*mn*2>=k*k) Write(0,'',0,'',mn,'',mn,'\n'), Write(0,......
  • 打卡信奥刷题(159)用C++工具信奥P1416[普及组/提高] 攻击火星
    攻击火星题目描述一群外星人将要攻击火星。火星的地图是一个nnn个点的无向图。这伙外星人将按照如下方法入侵,先攻击度为0......
  • 159.740 Intelligent Systems
    159.740IntelligentSystemsAssignment#2N.H.ReyesLetterRecognitionusingDeepNeuralNetswithSoftmaxUnitsDeadline:4thofNovemberInstructions:Youareallowedtoworkinagroupof2membersforthisassignment.Yourtaskistowriteaprogramt......
  • Educational CF Round 171
    游记理所当然VP了秒速过A,打B犯了一天的傻逼看错条件理所当然的只过了一道愉快开启改题生活当然改题也挺那啥的题解A挺简单的找\(X,Y\)的最小值,即找到长方形可框住的最大的正方形直接输出此正方形的顶点坐标即可证明考虑超出此正方形的点在旋转平移以后都会超出长方形范......
  • CF2026 (Educational round 171) vp记录
    EducationalCodeforcesRound171vp记录A.PerpendicularSegments4min+0唐题。一眼限制紧的边必然连对角线,因为最小长度的限制是相同的所以另一条边也连对角线即可。B.BlackCells9min+0唐题。显然最优策略是相邻的点匹配,$n$为奇数的情况有一个孤立点随便连,为......
  • Educational Codeforces Round 20 E. Roma and Poker
    差分约束我们记W表示\(1\),L表示\(-1\),D表示\(0\),然后记前\(i\)位的前缀和是\(dis[i]\)。则我们可以根据题面得到如下约束。当前位是W,则有\[\left\{\begin{matrix}dis[i]-dis[i-1]\le1\\dis[i-1]-dis[i]\le-1\end{matrix}\right.\]当前位是L,则有\[\left\{\begin{m......
  • MMME4056 Integrated System sAnalysis Simulink
    ESSENTIALINFORMATIONMODULECODEMODULETITLESSESSMENTTYPEMMME4056IntegratedSystemsAnalysisSimulinkandReportCOURSEWORKTITLEWEIGHT(INDICATIVEEFFORT)MMME4056,ISA2024,COURSEWORK30%(Approx.10-15hrs)FEEDBACKDETAILSFeedbackwillbeprovi......
  • Educational Codeforces Round 171 (Rated for Div. 2)B-D
    B.BlackCells题目:思路:首先我们发现要分奇偶讨论。偶数:很简单,取a[2]-a[1],a[4]-a[3],.........a[n]-[n-1]的最大值。奇数:我只需要知道假如删除当前的这个数剩下的数最大的间隔值,注意只能删除1,3,等奇数位,因为要保证删除后左右的数为偶数。(我的代码里面是偶数位因......
  • Question Decomposition Improves the Faithfulness of Model-Generated Reasoning
    文章目录题目摘要简介结果相关工作结论附录题目问题分解提高了模型生成推理的准确性论文地址:https://arxiv.org/abs/2307.11768摘要    随着大型语言模型(LLM)执行越来越困难的任务,验证其行为的正确性和安全性变得越来越困难。解决此问题的一种方法是促......