求助ABC E
  • 板块灌水区
  • 楼主Elysian_Realme
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/1/20 23:00
  • 上次更新2024/1/20 23:07:01
查看原帖
求助ABC E
1034667
Elysian_Realme楼主2024/1/20 23:00

为什么会WA啊啊啊啊,前两组数据n=2,我都WA了,手测感觉没问题啊

// Problem: E - Bad Juice
// Contest: AtCoder - Toyota Programming Contest 2024#1(AtCoder Beginner Contest 337)
// URL: https://atcoder.jp/contests/abc337/tasks/abc337_e
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
int n,m;
vector <int> frd[10000];
int hibit(int x){
	int ret=1,t=x & (-x);
	while(x!=t){
		x-=t;
		t=x & (-x);
	}
	for(int i=1;;i<<=1){
		if(i==x)return ret;
		ret++;
	}
}
int lowbits(int x){
	return x & (-x);
}
int lowbit(int x){
	int t = x & (-x);
	if(t==1)return 1;
	for(int i=1;;i++)
		if((t>>i)==0)return i;
}
int main(){
	cin>>n;
	m=hibit(n);
	cout<<m<<endl;
	for(int i=1;i<=n;i++){
		int t=i;
		while(t){
			frd[lowbit(t)].push_back(i);
			t-=lowbits(t);
		}
	}
	for(int i=1;i<=m;i++){
		cout<<frd[i].size()<<" ";
		int l=frd[i].size();
		for(int j=0;j<l;j++)
			cout<<frd[i][j]<<" ";
		cout<<endl;
	}
	string s;cin>>s;
	int ans=0;
	for(int i=0;i<m;i++)
		if(s[i]=='1')
			ans+=(1<<i);
	cout<<ans<<endl;
	return 0;
}
2024/1/20 23:00
加载中...