码迷,mamicode.com
首页 > 其他好文 > 详细

1012-留心

时间:2019-10-13 17:00:27      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:st3   +=   log   def   tps   href   amp   turn   math   

这回全是低错……

T1

找最大平方因子即可。

没开龙龙见祖宗

#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#define LL long long
#define N 11111111
using namespace std;
LL n,ans;
int main(){
//	freopen("tri.in" ,"r",stdin);	freopen("tri2.out","w",stdout);
	while(1){
		ans=0;
		scanf("%lld",&n);
		if(n==0)return 0;
		LL lim=sqrt(n)+1;
		for(LL i=lim;i>=2;i--){
			while(n%(i*i)==0){
				ans+=i-1;
				n/=(i*i);
			}
			if(n==1)break;
		}
		printf("%lld\n",ans*8);
	}
}

T2

$\Theta(N^2)$卡常剪枝直接过$emm$

#include <iostream>
#include <cstring>
#include <climits>
#include <cstdint>
#include <cstdio>
#include <array>
#define N 44444
#define LL long long

using namespace std;

array<LL,N> dp,arr,vis;
volatile int_fast32_t cn,vn,tot;
int main(){
	scanf("%d%d",&cn,&vn);
	for(int i=1;i<=cn;i++)
		scanf("%lld",&arr[i]);
	dp[0]=0;
	for(register int i=1;i<=cn;i++){
		tot=0;
		dp[i]=LLONG_MAX;
		for(register int j=i;j>=1;j--){
			if(vis[arr[j]]!=i){
				vis[arr[j]]=i;
				tot++;
			}
			dp[i]=min(dp[i],dp[j-1]+1ll*tot*tot);
			if(dp[i]<=1ll*tot*tot)break;
		}
	}
	printf("%lld\n",dp[cn]);
}

T3

<题解>

 

1012-留心

标签:st3   +=   log   def   tps   href   amp   turn   math   

原文地址:https://www.cnblogs.com/kalginamiemeng/p/11664734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!