首页 > 其他分享 >Let the Flames Begin

Let the Flames Begin

时间:2022-10-10 20:13:10浏览次数:68  
标签:Begin return Flames ll pos long Let cnt define

题目

心路历程:

一、注意到 \(min(m,k)\) 条件,分别考虑。
①当 \(m\) 很小时,直接 \(O(m)\) 递归求解。
②当 \(k\) 很小时,每次批量处理 \(\lfloor \frac{n}{k}\rfloor\) 个,同样递归,时间复杂度为 \(O(\log_{1-\frac{1}{k}}^{n}) \approx 9e^7\),绰绰有余。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
#define N 2000000

ll work2(ll n,ll m,ll k){
	if(m==0)return 0;
	return (k+work2(n-1,m-1,k)-1)%n+1;
}
ll work(ll n,ll m,ll k){
	if(m==0)return 0;
	if(m<=N){
		return (k+work(n-1,m-1,k)-1)%n+1;
	}
	ll cnt=n/k;
	if(cnt==0)return work2(n,m,k);
	if(cnt>=m)return m*k;
	ll nex=work(n-cnt,m-cnt,k)-(n-cnt*k);
	if(nex<=0)return (nex+n-1)%n+1;
	ll now=(nex-1)/(k-1);
	return nex+now;
}
int main(){
	int t;cin>>t;
	for(int i=1;i<=t;++i){
		cout<<"Case #"<<i<<": ";
		ll n,m,k;cin>>n>>m>>k;
		cout<<work(n,m,k)<<endl;
	}
	return 0;
}

二、死命 \(RE,TLE\) ,意识到递归开不了这么大的栈。。。把 ① 改完后发现 ② 不好改。遂放弃,去看题解。

三、半改半抄后还是 \(WA\),经过找不同后发现我写的是

\[pos=(pos+k-1)\%n+1 \]

题解写的是

\[pos'=(pos'+k)\%n \]

才发现实际上应该写成

\[pos-1=(pos-1+k)\%n \]

这样就能让取模最后执行,方便把加法合并成乘法。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll work1(ll n,ll m,ll k){
	ll pos=-1,nn=n-m;
	while(nn<n){
		++nn;pos=(pos+k)%nn;
	}
	return pos+1;
}
ll work2(ll n,ll m,ll k){
	if(k==1)return m;
	ll pos=-1,nn=n-m,t;
	while(nn<n){
		t=min((nn-pos)/(k-1),n-1-nn);
		if(t){
			nn+=t;
			pos=(pos+t*k)%(nn);
			
		}
		++nn;
		pos=(pos+k)%nn;
	}
	return pos+1;
}
	
int main(){
	int t;cin>>t;
	for(int i=1;i<=t;++i){
		ll n,m,k;cin>>n>>m>>k;
		cout<<"Case #"<<i<<": ";
		if(m<k)cout<<work1(n,m,k)<<endl;
		else cout<<work2(n,m,k)<<endl;
	}
	return 0;
}

标签:Begin,return,Flames,ll,pos,long,Let,cnt,define
From: https://www.cnblogs.com/Huster-ZHY/p/16777005.html

相关文章

  • java中列表 Not showing null elements 列表中去除null 使用 list.removeAll(Collec
    java中列表Notshowingnullelements列表中去除nullNotshowingnullelements有时候看见list的size与结果不一致,例如下面这样导致原因:list集合允许null值,......
  • 政务外网后端接口PUT和DELETE不通
    政务外网后端接口PUT和DELETE不通错误信息解决思路:1,首先排查政务内网环境下接口是否能通2、查看nginx反向代理问题3、查看接口是否调通后端,后端是否有相应信息4、排......
  • Servlet
     一、Servlet的生命周期过程:servlet类加载-->实例化-->服务-->销毁WebClient向Servlet容器(Tomcat)发出Http请求Servlet容器接收WebClient请求Servle......
  • ORA-01653 表 PDM91.RAWSERVLETREQUESTSTATS 无法通过1024 (在表空间 USERS 中) 扩展
    问题解决办法第一步:查询各表空间使用率SELECTtotal.tablespace_name,Round(total.MB,2)ASTotal_MB,Round(total.MB-free.MB,2)ASU......
  • Web 项目中 Servlet 的实现
    Web项目中Servlet的实现一、实现servlet1.创建一个servlet的一个普通java类先创建一个package:src-->new-->package创建一个Java 类:package-......
  • ServletContext、request、response
    一、上下文对象1、概述ServletContext官方叫servlet上下文,是一个接口。服务器启动的时候创建,服务器关闭的时候销毁,启动时候会为每一个工程创建一个对象,这个对象就是Servlet......
  • Servlet 入门
    一、Servlet基础使用1.创建web项目,导入Servlet依赖坐标(pom.xml)<dependencies><dependency><groupId>javax.servlet</groupId><artifactId>j......
  • [RxJS] Ignore values during windows using throttleTime
    Bydefault,throttleTime(x),afterfirsteventemit,thenwaitforxamountoftime,thenemitanotherlatestvalue.Allthevaluesbetweenthewaitingtimewi......
  • 10.9 pluglnlib 插件库 nodelet
    10.2动态参数参数服务器的数据被修改时,如果节点不重新访问,那么就不能获取修改后的数据,例如在乌龟背景色修改的案例中,先启动乌龟显示节点,然后再修改参数服务器中关于背景......
  • AtCoder Beginner Contest 272(A~E)
    Avoidsolve(intCase){intn;cin>>n;vector<int>a(n);for(auto&i:a)cin>>i;cout<<accumulate(all(a),0)<<nline;}Bconst......