2019 뉴커머스 국경일 3-G & CF1238E
N 크기의 그룹 a[]를 정하고 M 그룹 관계를 정하고 a[]를 다시 배열하며sum{M 그룹 관계의 절대값의 차이를 최소화합니다.먼저 a를 정렬한 다음에 순서대로 a를 수조에 채워라.
i가 바이너리 아래에 x개의 1이 있다고 가정하고 dp[i]로 dp[i|(1<
#include
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=20;
int a[N],p[N],e[N];
ll f[1<<N];
int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF) {
for(int i=0;i)
scanf("%d",&a[i]);
sort(a,a+n); // ,
for(int i=0;i) {
e[i]=0;
p[i]=0;
}
for(int i=0;i) {
int a,b;
scanf("%d%d",&a,&b);
a--;b--;
p[a]|=1<1<<a;
e[a]++,e[b]++;
}
f[0]=0;
for(int i=1;i1<) {
f[i]=1e12;
int k=__builtin_popcount(i)-1; // a[k]
for(int j=0;j) {
if(i&(1<<j)) {// a[k] posj
f[i]=min(f[i],f[i^(1<2-e[j]));
}
}
}
printf("%lld
",f[(1<1]);
}
return 0;
}
CF-E:
제목: M팀 관계(ai,bi)를 정하고 다시 배열하여 {관계의 위치는 절대값의 합}을 최소화합니다.
여전히 매거진으로 누구를 채우느냐에 따라 이번 라운드의 공헌은 만족(ai는 이미 채웠고bi는 채우지 않았다)의 개수다.
#include
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=2000010;
char c[maxn]; int dp[maxn],f[30][30];
int main()
{
int N,M;
scanf("%d%d%s",&N,&M,c+1);
memset(dp,0x3f,sizeof(dp));
rep(i,1,N-1) f[c[i]-'a'][c[i+1]-'a']++,f[c[i+1]-'a'][c[i]-'a']++;
dp[0]=0;
rep(i,0,(1<1){
int t=0;
rep(j,0,M-1) {
if(i&(1<<j)){
rep(k,0,M-1)
if(!(i&(1<f[j][k];
}
}
rep(j,0,M-1) if(!(i&(1<1<1<t);
}
printf("%d
",dp[(1<1]);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.