NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第一轮Day2题解
2017-09-24 16:38
337 查看
上星期打的...题有点水,好多人都AK了
T1排个序贪心就好了
#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> #define ll long long using namespace std; const int maxn=20; int n,m,K,x,y; int f[1<<maxn]; bool v[maxn][maxn],mp[1<<maxn]; void read(int &k) { int f=1;k=0;char c=getchar(); while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar(); while(c<='9'&&c>='0')k=k*10+c-'0',c=getchar(); k*=f; } int main() { freopen("prison.in","r",stdin); freopen("prison.out","w",stdout); read(n);read(m);read(K); for(int i=1;i<=m;i++)read(x),read(y),v[x][y]=v[y][x]=1; int state=(1<<n)-1; for(int i=0;i<=state;i++) { int cnt=0; for(int j=1;j<=n;j++) if(i&(1<<(j-1))) for(int k=1;k<j;k++) if(i&(1<<(k-1))) cnt+=v[j][k]; if(cnt<=K)mp[i]=1; } memset(f,32,sizeof(f));f[0]=0; for(int i=0;i<=state;i++) { int S=i^state; for(int j=S;j;j=(j-1)&S) if(mp[j])f[i|j]=min(f[i|j],f[i]+1); } printf("%d\n",f[state]); return 0; }View Code
相关文章推荐
- NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第二轮Day1
- NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第二轮Day2题解
- 【NOIP2017提高A组冲刺11.8】好文章 ——联赛字符串算法复习
- 【NOIP2017模拟12.3】子串
- 【NOIP2017提高组模拟12.18】C
- NOIP2017赛前模拟(2017.10.20)Matrix (类似轮廓线DP)
- JZOJ__Day 2:【普及模拟】串
- Day 5 jzoj4309. 【NOIP2015模拟11.4】刷题计划
- JZOJ5442【NOIP2017提高A组冲刺11.1】荒诞 三进制状压+欧拉序
- jzoj【NOIP2017提高A组冲刺11.3】高考是不可能高考的
- 某次模拟考试day2t3 菊菊的数据结构
- 【NOIP2017提高A组冲刺11.1】荒诞
- 【NOIP2017提高A组冲刺11.5】轰炸
- 【NOIP2017提高A组冲刺11.5】总结
- JZOJ.5230【NOIP2017模拟8.5】队伍统计
- [jzoj5236]【NOIP2017模拟8.7A组】利普希茨
- 【NOIP2017提高A组模拟8.22】时间机器
- 【NOIP2017提高A组模拟8.24】早苗
- 关于2014年考研数学冲刺模拟试题的编制问题( II)
- Problem G. Game Rank---Urozero Autumn Training Camp 2016-Day 1||简单模拟