社区讨论
求助
P2831[NOIP 2016 提高组] 愤怒的小鸟参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mjcvw470
- 此快照首次捕获于
- 2025/12/19 21:07 3 个月前
- 此快照最后确认于
- 2025/12/19 21:31 3 个月前
CPP
#include<bits/stdc++.h>
#define ld long double
using namespace std;
namespace yixing{
const int INF=19;
const ld EPS=1e-9;
int n,m;
ld x[INF],y[INF];
int line[500],cnt,dp[1<<INF];
inline bool check(int u,ld a,ld b){
ld y1=x[u]*x[u]*a+b*x[u];
if (y[u]-EPS<=y1&&y1<=y[u]+EPS)return 1;
return 0;
}
inline void calc(int u,int v){
int tot=0;
ld x1=x[u],x2=x[v],y1=y[u],y2=y[v];
ld a=(x1*y2-x2*y1)/(x1*x2*(x2-x1));
ld b=(x1*x1*y2-x2*x2*y1)/(x1*x2*(x1-x2));
if (a>=0)return;
tot+=((1<<(u-1))+(1<<(v-1)));
for (int i=v+1;i<=n;i++)if (check(i,a,b))tot+=(1<<(i-1));
line[++cnt]=tot;
}
inline void init(){
memset(line,0,sizeof(line));
memset(dp,0x3f,sizeof(dp));
cnt=0;
}
inline void Main(){
cin>>n>>m;
init();
for (int i=1;i<=n;i++)cin>>x[i]>>y[i],line[++cnt]=(1<<(i-1));
for (int i=1;i<=n;i++)for (int j=i+1;j<=n;j++)calc(i,j);
for (int i=1;i<=cnt;i++)dp[line[i]]=1;
for (int x=1;x<=(1<<n)-1;x++)for (int j=1;j<=cnt;j++)dp[x|line[j]]=min(dp[x|line[j]],dp[x]+1);
cout<<dp[(1<<n)-1]<<"\n";
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int T;cin>>T;
while (T--)yixing::Main();
return 0;
}
WA on 10 详细信息如下
wrong answer On line 2 column 1, read 4, expected 5.
回复
共 0 条回复,欢迎继续交流。
正在加载回复...