首页 > 其他分享 >P1540 [NOIP2010 提高组] 机器翻译 题解

P1540 [NOIP2010 提高组] 机器翻译 题解

时间:2024-08-19 14:37:29浏览次数:11  
标签:翻译 测试点 NOIP2010 int 题解 机器翻译 ans tower 字典

题目概括

给定 N 个整数,和一个容量为 M 的“字典”,从头到尾依次翻译,每次翻译先看自家字典,没有的话再看别人的字典并存到自家字典,如果自家字典满了,当前单词的翻译会代替最早进入的。

做题思路

定义一个长度为 M 的字典数组,依次遍历 N 个数,每次翻译先检索字典数组,没有的话加入字典并ans++,当字典满了,就 a[tower % M + 1] = 当前数字。

CODE

90分(第二个测试点WA):

#include<bits/stdc++.h>
using namespace std;
int a[105];
int main(){
	int tower = 0, ans = 0;
	int m, n;
	cin >> m >> n;
	for (int i = 1; i <= n; i++) {
		bool flag = 0;
		int x;
		cin >> x;
		for (int j = 1; j <= m; j++) {
			if (a[j] == x){
				flag = 1;
			}
		}
		if (!flag) {
			a[tower % m + 1] = x;
			tower++;
			ans++;
		}
	}
	cout << ans << endl; 
	return 0;
}

下载数据后发现这个测试点有零,改了一下就AC了。
AC CODE:

#include<bits/stdc++.h>
using namespace std;
int a[105];
int main(){
	memset(a, -1, sizeof(a));
	int tower = 0, ans = 0;
	int m, n;
	cin >> m >> n;
	for (int i = 1; i <= n; i++) {
		bool flag = 0;
		int x;
		cin >> x;
		for (int j = 1; j <= m; j++) {
			if (a[j] == x){
				flag = 1;
			}
		}
		if (!flag) {
			a[tower % m + 1] = x;
			tower++;
			ans++;
		}
	}
	cout << ans << endl; 
	return 0;
}

标签:翻译,测试点,NOIP2010,int,题解,机器翻译,ans,tower,字典
From: https://www.cnblogs.com/yang-guang-hao-AKIOI/p/18367271

相关文章

  • 题解:P10844 [EGOI2024] Infinite Race / 无限赛跑
    题解:P10844[EGOI2024]InfiniteRace/无限赛跑有n个人在环形跑道上跑步,和q次超越别人或被别人超越,别人要么在Anika前面,要么在后面怎么说呢,建议降红由于只有重复超过一个人才肯定是跑过一圈的,所以一个数组就行了,每超过一次就打上标记,不然去掉标记。#include<bits/stdc......
  • 题解:AT_iroha2019_day1_f Head of The Dragon
    题目大意得知\(n\)和\(k\),求出\(n\)是否能分解出\(k\)个因数相乘,输出按字典序最小一种情况。步骤将\(n\)分解质因数。判断质因数个数是大于\(k\),否则输出\(-1\)。按照分解出来的质因数从小到大输出。代码#include<bits/stdc++.h>#defineintlonglongus......
  • Big Clique Everywhere 题解
    给个链接:BigCliqueEverywhere。先说一下团(clique)是什么,其实就是完全图。考虑什么情况下不满足题意。我们可以先建出补图,下面的东西都在补图中完成。我们首先给出结论:如果该图中有奇环(不是二分图),则条件不成立,否则成立。这里证明一下:如果存在奇环,则把点集设为这个奇环中的点,那......
  • 题解:AT_abc367_c [ABC367C] Enumerate Sequences
    大致题意让你按照字典序输出一些长\(n\)的序列,序列中的数字有范围,且序列和需要为\(k\)。分析直接深搜。搜索的时候对从第一个元素开始,每个元素从小到大枚举所有可能的值,这样就保证答案按照字典序升序排列。用一个vector存储序列,到达边界之后计算一遍和,判断是否满足条件,然......
  • 2024百度之星决赛部分题解(难度排序前六题)
    前言手速6题,可惜第四题磨了几个小时没磨出来,多做一题就金了,还是实力差了点,最后银牌前列。下面的题解是根据代码回忆大概的题意,主要是给出来赛时的参考代码A.状压题意:学校集训队总的有\(n\)个人,保证\(n\)是3的倍数,每个人有个人实力\(a_i\),每两个人之间有配合程度\(b_{i......
  • 洛谷P1983 [NOIP2013 普及组] 车站分级 题解
    思路由题可知,在一趟车次的区间内,停靠的站点的等级恒大于不停靠的站点。因此,对于每一趟车次的区间,给所有停靠的站点向所有不停靠的站点两两连有向边,然后求图中最长的路径长度,就能得到答案。实现因为可能出现重边,而且\(n\le1000\),所以在处理车次连边的时候使用邻接矩阵,再改成邻......
  • P10660 BZOJ2759 一个动态树好题 题解
    从题目名字看出此题需要用动态树解决对于任意\(i\),都有唯一的\(p_i\)与之对应,由\(p_i\)向\(i\)连边,\(n\)种关系显然构成一基环树森林。对于环上的节点,一个点可以自己表示自己,所以可以直接解出该点的权值,其他点从环上的点直接推出即可。考虑如何动态维护这个过程,一个点上......
  • 洛谷P1001题解
    洛谷P1001题解友情提示:“题目传送门”被贴在了题目编号上,请自行点击查看!主要知识点C/C++语言框架基本数据类型的定义与使用cin/cout或scanf()/prinf()的使用代码一小步,OI一大步(bushi)AC代码#include<bits/stdc++.h>typedeflonglongll; //“十年OI一场空,不开long......
  • 题解:CF1630F Making It Bipartite
    题意图上有\(n\)个点,且具有点权,点权保证互不相同,若两个点点权有倍数关系,则两点之间有一边,问你最少删去多少个点能使图变为二分图。思路因为如果\(a\)是\(c\)的倍数且\(c\)是\(b\)的个数,所以\(a\)是\(c\)的倍数。由此可以看出,若\(a\)与\(b\)相连且\(b\)与......
  • 题解:CF1034B Little C Loves 3 II
    思路看到这道题时,第一思路就是网络流,结果一看数据\(10^{9}\)直接转向找规律。主要思路:神秘特判。首先,下面的结论基于\(n\lem\)。Case1.当\(n=1\)时,易得的是我们可以以\(6\)为循环节构造。Case2.当\(n=2\)时,我们可以构造出\(4a,5a,6a\)的形式。易得,通过裴蜀......