2017计蒜之道 复赛 BDF
来源:互联网 发布:wow淘宝卖的宏怎么样 编辑:程序博客网 时间:2024/06/10 14:34
一句话题解系列。
B Windows 画图
对每条线段暴力标记。
#include<cstdio>#include<algorithm>using namespace std;int ans[300][300],n,m,q;int gcd(int x,int y){ return y?gcd(y,x%y):x;}int main(){ int x,y,x1,y1,x2,y2,d,dx,dy; scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); d=gcd(abs(x1-x2),abs(y1-y2)); dx=(x1-x2)/d; dy=(y1-y2)/d; for (;;x2+=dx,y2+=dy) { ans[x2][y2]=i; if (x2==x1) break; } } scanf("%d",&q); while (q--) { scanf("%d%d",&x,&y); printf("%d\n",ans[x][y]); }}
D 百度地图导航
把每个城市群也看成点,注意分成入点和出点。
#include<cstdio>#include<algorithm>#include<vector>#include<cstring>#include<queue>using namespace std;const int maxn=60010;#define LL long longqueue<int> q;vector<pair<int,int> > to[maxn];LL dis[maxn];int n,m,in[maxn];int main(){ int x,y,z,w,s,t; scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) { scanf("%d",&x); while (x--) { scanf("%d",&y); to[y].push_back(make_pair(i+n,0)); to[i+n+m].push_back(make_pair(y,0)); } } scanf("%d",&x); while (x--) { scanf("%d%d%d",&y,&z,&w); to[y].push_back(make_pair(z,w)); to[z].push_back(make_pair(y,w)); } scanf("%d",&x); while (x--) { scanf("%d%d%d",&y,&z,&w); to[y+n].push_back(make_pair(z+n+m,w)); to[z+n].push_back(make_pair(y+n+m,w)); } scanf("%d%d",&s,&t); memset(dis,0x3f,sizeof(dis)); dis[s]=0; in[s]=1; q.push(s); while (!q.empty()) { x=q.front(); q.pop(); for (vector<pair<int,int> >::iterator it=to[x].begin();it!=to[x].end();++it) if (dis[x]+(*it).second<dis[(*it).first]) { dis[(*it).first]=dis[x]+(*it).second; if (!in[(*it).first]) { q.push((*it).first); in[(*it).first]=1; } } in[x]=0; } if (dis[t]<1e12) printf("%lld\n",dis[t]); else printf("-1\n");}
F 腾讯消消乐
直接暴力状压,
#include<cstdio>#include<algorithm>using namespace std;#define LL long longconst int p=1000000007,maxn=20;int a[maxn],dp[300010][maxn],ok[300010],n,m;int gcd(int x,int y){ return y?gcd(y,x%y):x;}int main(){ int d,ans=0,x,y; scanf("%d%d",&n,&m); for (int i=0;i<n;i++) scanf("%d",&a[i]); for (int s=1;s<(1<<n);s++) { x=0; for (int i=0;i<n;i++) if (s&(1<<i)) x=gcd(x,a[i]); dp[s][1]=x>=m; } for (int s=1;s<(1<<n);s++) for (int i=2;i<=n;i++) for (int j=0;j<n;j++) if (s&(1<<j)) { x=y=0; for (int k=j;k<n;k++) if (s&(1<<k)) { x=gcd(x,a[k]); y|=1<<k; if (x>=m) dp[s][i]=(dp[s][i]+dp[s^y][i-1])%p; else break; } } for (int i=1;i<=n;i++) ans=(ans+(LL)dp[(1<<n)-1][i]*i)%p; //dfs((1<<n)-1,10,n); printf("%d\n",ans);}
阅读全文
0 0
- 2017计蒜之道 复赛 BDF
- 2017 计蒜之道 复赛 题解
- 2017计蒜之道复赛-Windows 画图
- 2017计蒜之道程序设计大赛复赛题解
- 2017 计蒜之道 复赛 <状压DP+最短路>
- 2017 计蒜之道 复赛 腾讯消消乐
- 计蒜客-2017 计蒜之道 复赛-B-Windows 画图
- [反演] 2017 计蒜之道 复赛 A. 阿里云秘钥池
- 2016 计蒜之道 复赛 A
- 2016计蒜之道复赛 微信钱包付款
- 2016 计蒜之道 复赛 题解 部分
- 计蒜之道复赛 腾讯消消乐
- 2017 计蒜之道 复赛 百度地图导航【思维+最短路】
- 2017 计蒜之道 复赛 腾讯消消乐【状压dp】
- 2017 计蒜之道 复赛 B. Windows 画图 坐标描点
- 2017计蒜之道复赛 百度地图导航 (最短路)
- 2017 计蒜之道 复赛 B. Windows 画图(暴力)
- [最短路] 2017 计蒜之道 复赛 D. 百度地图导航
- TCP四次挥手
- 【脚本语言系列】关于Python持久化anydbm,你需要知道的事
- ping.c
- 反弹代理环境的搭建
- 启动Tomcat提示:指定的服务未安装
- 2017计蒜之道 复赛 BDF
- PHP设计模式-单例模式
- FUNDAMENTAL Unit05 循环问题 、 数组
- Android launcher -- 调试运行launcher源码 1
- mysql之 MySQL 主从基于 GTID 复制原理概述
- SpringBoot + devtools热部署
- "&"符号的理解
- 用文件映射法只启动一个实例
- 线段树区间更新Thermal Death of the Universe