首页 > 其他分享 >A. Anonymous Informant

A. Anonymous Informant

时间:2024-05-05 12:00:11浏览次数:17  
标签:Informant int ll cin vis Anonymous include ptr

题面:
链接:https://codeforces.com/problemset/problem/1893/A
洛谷链接:https://www.luogu.com.cn/problem/CF1893A
思路:逆着推
有一个非常重要的结论得观察出来:

所以当倒过来推的时候(b->a),同理可以直接取b的最后一个:拿b[x]的值往前跳,跳到的指针就是原来a的最后一个
所以不用dfs,因为每次必然会有最后一个的产生。
如何剪枝?很显然,如果多次访问到一个位置,那么说明产生了循环,则肯定可以,直接break就行,所以最坏的复杂度在O(n)
代码:

#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
#include<set>
typedef long long ll;
using namespace std;

const int N = 2e5 + 10;
ll b[N];
bool vis[N];
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	int t; cin >> t;
	while (t--)
	{
		ll n, k; cin >> n >> k;
		for (int i = 0; i < n; i++)cin >> b[i];
		ll ptr = n - 1;
		memset(vis, 0, sizeof(vis));
		bool al = true;
		for (int i = 0; i < k; i++)
		{
			if (b[ptr] > n)
			{
				al = false; break;//如果某个数比n都大,那么肯定不行
			}
			else
			{
				vis[ptr] = 1;//标记vis
				ptr = (n + ptr - b[ptr]) % n;//往前跳,加n求余防越界
				if (vis[ptr])break;//剪枝
			}
		}
		if (al)cout << "Yes";
		else cout << "No";
		cout << '\n';
	}

	return 0;
}

rt,有点巧妙!

标签:Informant,int,ll,cin,vis,Anonymous,include,ptr
From: https://www.cnblogs.com/zzzsacmblog/p/18173363

相关文章

  • A. Anonymous Informant
    原题链接前言一道精简但是内容丰富的题一些事实1.循环左移len位后数组的节点对应原数组的节点,相当于在无限自复制循环的数组中将原来的节点右移len位2.如果该数组能被定点数组循环左移x位得到,那么该数组最后一个节点的值一定是x3.不管怎么位移,可能的数组最多只有n种不同的情......
  • 【FTP】FlashFXP 530 Non-anonymous ... 连接失败(连接已被客户端关闭)
    参考的这个图: ......
  • [vite] Internal server error: URI malformed at decodeURI (<anonymous>) at viteTr
    前端访问地址:http://localhost:80前端项目启动,出现[vite]Internalservererror:URImalformedatdecodeURI()atviteTransformMiddleware(xxx_project/node_modules/vite/dist/node/chunks/dep-51c4f80a.js:59976:19)看看浏览器路径上是否带有未编码的字符,例如:/123%45......
  • 一步一步实现若依框架--2.5匿名注解@Anonymous
     1实现绕过权限认证,可以直接访问某些接口。这些部分可以直接在SpringSecurity中的配置去写,也可以像这个主角这样给添加了注解的方法或类进行放行。原理:在springsecurity设置拦截前,获取到所有添加了该注解的请求,把这些请求添加到放开拦截的配置中。2实现a)新增注解(注解......
  • [从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)
    jQuery片段:1.(function(){2.//这里忽略jQuery所有实现3.})();当一个匿名函数被括起来,然后再在后面加一个括号,这个匿名函数就能立即运行起来!真神奇哦!嘿嘿!胡闹到此为止。在这一节,我们碰到的jQuery片段是一组立即运行的匿名函数。而这种用法在论坛上也曾引起过激辩......
  • springSecurity过滤器之AnonymousAuthenticationFilter
    SpringSecurity提供了匿名登录功能,让我们不登录也能访问。比如/anoy路径及子路径都能匿名访问,配置如下:@ConfigurationpublicclassMySecurityConfigextendsWebSecurityConfigurerAdapter{@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException......
  • c#匿名类 anonymous
      感谢http://hi.baidu.com/guodong828/blog/item/cc53404ef40af002b3de0500.html  c#匿名类上代码:1.using2.using3.using4.using5.6.namespace7.{8.///<summary>9.///作者:it小金10.///作用:匿名类型的使用11.///说明:var关键字,用于表示隐式......
  • 错误记录:error: #3093: anonymous structs are only supported in --gnu mode, or wh
    1错误记录..\Modules\libdw1000\inc\libdw1000Types.h(39):error:#3093:anonymousstructsareonlysupportedin--gnumode,orwhenenabledwith#pragmaanon_......
  • Dapper 匿名查询Query Anonymous的结果访问
     匿名查询原始的SQL查询可以使用Query方法执行,并将结果映射到一个动态列表。这些对于简单的查询很有用,你不需要创建一个单独的类来表示你的数据。在处理复杂的SQL查询时,......
  • gtid的新特性assign_gtids_to_anonymous_transactions
    在MySQL8.0.23之前,想创建一个主从环境,主库不开启GTID、从库开启GTID,这是不可能的MySQL8.0.23中引入了一个新特性:assign_gtids_to_anonymous_transactions,支持主从复制环境......