C

这里用了map存缩点后的边,会慢很多

一个比较显而易见的性质:对于v节点的所有ui节点(ui向v连边),都有dist[ui]相等。

所以对于这些dist应该相等的点缩点,然后最长路,之后dis之差就是该点点权了

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=2e5+10;
vector<int>E[N],invE[N];
int p[N],dist[N];
bool st[N],vis[N];
int Find(int x)
{if(x!=p[x])return p[x]=Find(p[x]),p[x];return x;
}
map<int,int>nwE[N];
int dfs(int u)
{if(st[u])return 1;if(vis[u])return 0;st[u]=1;for(auto [v,t]:nwE[u]){if(dfs(v))return 1;}st[u]=0;vis[u]=1;return 0;
}
int color[N];
using pii=pair<int,int>;
int rs[N];
void dijkstra()
{dist[1]=1;priority_queue<pii>heap;heap.push({1,1});while(heap.size()){auto [dis,u]=heap.top();heap.pop();for(auto [v,t]:nwE[u]){if(!t)continue;if(dist[v]<dist[u]+1){dist[v]=dist[u]+1;heap.push({dist[v],v});}}}queue<int>q;q.push(1);rs[1]=1;while(q.size()){int u=q.front();q.pop();if(st[u])continue;st[u]=1;for(auto v:E[u]){{rs[v]=dist[Find(v)]-dist[Find(u)];q.push(v);}}}
}
void solve()
{int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;++i)E[i].clear(),invE[i].clear(),nwE[i].clear(),st[i]=0,vis[i]=0,color[i]=-1;memset(dist,0,sizeof(dist[0])*(n+1));for(int i=1,u,v;i<=m;++i){scanf("%d%d",&u,&v);E[u].push_back(v);invE[v].push_back(u);}if(n==1){cout<<"YES\n1\n"<<endl;return ;}for(int i=1;i<=n;++i)p[i]=i;for(int i=1;i<=n;++i)if(invE[i].size()){int t=invE[i][0];for(auto v:invE[i])p[Find(v)]=p[Find(t)];}for(int i=1;i<=n;++i){for(auto v:E[i])nwE[Find(i)][Find(v)]=1;}for(int i=1;i<=n;++i)for(auto v:E[i]){if(Find(i)==Find(v)){printf("No\n");return ;}}if(dfs(1)){printf("No\n");return ;}printf("Yes\n");memset(st,0,sizeof(st[0])*(n+1));dijkstra();for(int i=1;i<=n;++i)printf("%d%c",rs[i]," \n"[i==n]);
}
int main()
{int T;scanf("%d",&T);while(T--)solve();
}

M

考虑数位背包

#include<bits/stdc++.h>
using namespace std;
const int P=1e9+7,N=1e3+10;
using ll=long long;
ll finv[N],fac[N];
ll POW(ll x,int k=P-2,ll rs=1){while(k){if(k&1)rs=rs*x%P;x=x*x%P;k>>=1;}return rs;}
void init()
{finv[1]=finv[0]=fac[0]=1;for(int i=1;i<N;++i)fac[i]=fac[i-1]*i%P;finv[N-1]=POW(fac[N-1]);for(int i=N-2;i;--i)finv[i]=finv[i+1]*(i+1)%P;
}
ll C(int a,int b)
{if(b>a||a<0||b<0)return 0;return fac[a]*finv[a-b]%P*finv[b]%P;
}
ll dp[55][20][257];
int a[55];
const int Mx=162;ll dfs(int pos,ll cnt,ll r,ll &n,ll&k)
{if(pos==-1)return r==0;if(r>=Mx)return 0;if(r<0)return 0;ll &rs=dp[pos][cnt][r];if(~rs)return rs;rs=0;int x=(pos==0?0:((n>>pos-1)&1));if(!a[pos]){for(int i=0;i<=k-cnt;++i)rs+=C(k-cnt,i)*dfs(pos-1,cnt,(r-i*(k-i)<<1)|x,n,k)%P;}else {for(int i=0;i<=cnt;++i)for(int j=0;j<=k-cnt;++j)rs+=C(k-cnt,j)*C(cnt,i)%P*dfs(pos-1,i,(r-(i+j)*(k-i-j))<<1|x,n,k)%P;}return rs%=P,rs;
}
ll cal(ll n,ll m,ll k)
{int pos=-1;memset(dp,-1,sizeof(dp));while(m)a[++pos]=m&1,m>>=1;ll r=0;for(int i=pos+1;i<=50;++i)if(n>>i&1)r+=1ll<<(i-pos-1);return dfs(pos+1,k,r,n,k);
}
int main()
{init();ll n,m,k;scanf("%lld%lld%lld",&n,&m,&k);printf("%lld\n",cal(n,m,k));
}

2022CCPC广州 CM相关推荐

  1. 2022CCPC广州 L. Station of Fate gym104053L

    Problem - L - Codeforces 题目大意:有n个人在排m个队伍,每个队伍至少有1个人,每个人都是不同的,问有多少种可能的排队方式 1<=m<=n<=1e5 思路:我 ...

  2. 2022CCPC广州

    E. Elevator 题意:有n个电梯, 建筑有m层.每一个电梯从小到大有一个1-n的编号和出发的时间ai.在除了第一层和第m层都有一个开关,可以使到达这里的电梯停留1ms,问你对于第i个编号的电梯 ...

  3. 欢迎 V 的到来:简书新浪微博联合认证公告

    过去的五天,很多人猜简书的神秘新朋友是谁,有人猜是不是郑渊洁或者曹文轩,是不是匿名发布文章的功能,是不是要发布聊天机器人,是来一个人还是发布一个功能?唯一可以肯定的是,这个 V 不是那个简书上你们知道 ...

  4. 港科夜闻|香港特别行政区候任行政长官李家超先生于6月6日上午会见香港科大(广州)倪明选校长一行...

    关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1.香港特别行政区候任行政长官李家超先生于6月6日上午会见香港科大(广州)倪明选校长一行.倪明选教授对李家超先生当选并被中央政府任命为香港特别行政 ...

  5. barmanager 不显示_广州13.3寸广告液晶显示屏品牌排行榜

    严禁使用有机溶剂(如酒精.丙酮等),尽量避免使用化学清洁剂,否则造成显示器表面的镀膜破损脱落是无法弥补的损失.广州寸广告液晶显示屏品牌排行榜擦拭时一定要用软布或者专用抹布(镜头纸也可以),直接擦拭或喷 ...

  6. (广州)软件开发定制服务,工作流引擎 OA 库存管理系统

    本人专注于工作流的研究设计同时提供软件开发定制服务,工作流引擎 OA系统 库存管理系统 如果有机会合作共事请联系:15817167503(本人在广州) QQ:1311663711 加时请注明软件定制 ...

  7. 刚进园子,广州的冬天像夏天

    来博客园已经有一段日子了,就好像认识朋友一样,从陌生到熟悉,虽然阅读过的博客文章还不多,但心里还是由然起敬.网络是个信息交流的工具,工具没有好坏之分,都得看用工具的人抱着什么态度.有益处的内容自然捧场 ...

  8. 20160115广州MVP线下聚会

    2016年1月15日(星期五)广州MVP聚会 <云应该这么玩>微软公司 管震 <SQL Server 磁盘瓶颈延伸讨论> MVP舒永春 <Azure与云端应用开发> ...

  9. 前端、云与人工智能的碰撞 | GDG广州

    活动介绍 随着Google TensorFlow的开源升级.前端技术以及云计算的不断发展更迭,企业和开发者都需要与时俱进,才能不被时代大潮给淘汰.本次GDG沙龙旨在通过多个专题演讲为开发者们分享技术进 ...

最新文章

  1. Kubernetes 集群无损升级实践
  2. Windows Azure 数据安全(清理和泄漏)
  3. python申请内存函数_python进阶用法2 【从帮助函数看python内存申请机制】
  4. web浏览器进化简史
  5. c语言用单链表实现lru算法,利用单链表实现LRU算法
  6. PHP数字格式化,每三位逗号分隔数字,可以保留小数
  7. 入侵他人电脑四个步骤_增长的七个步骤利用数据入侵您的业务
  8. adb工具包_如何使用命令刷机 ADB与FASTBOOT工具使用教程
  9. Kettle下载国内镜像
  10. http-equiv属性详解
  11. 前端工程师必备的Nginx知识
  12. .reg文件添加、修改、删除注册表的方法
  13. 模拟人脑:迄今最大规模4个实验,人工智能的救赎之路?(附PDF公号发“模拟人脑”下载)
  14. 液晶面板价格高涨,OLED电视或迎来春天
  15. 舍弗勒城市车辆转向系统研究完成,可实现全自动平行泊车
  16. 【室内温度+树莓派性能监控】树莓派+DS18B20温度传感器+0.96寸OLED显示屏使用及安装经验分享
  17. python篮球弹跳训练方法_业余篮球爱好者的弹跳训练全攻略(附6个月训练计划)...
  18. win ollvm环境_域环境加权推送安装软件
  19. 市场营销策划的主要方法及应注意的问题
  20. 金融行业巨头 ING 如何搭建统一持续交付平台

热门文章

  1. mysql世界国家数据库_世界国家 的数据库sql
  2. 今天的雨下的大!从早上就开始下了
  3. 第一次做bom工作心得
  4. C语言的转义字符,八进制
  5. android 修改aar包资源文件的最简单方法
  6. 根据心电信号计算心率的matlab代码
  7. 2023四省联考 数学 题解
  8. 浓淡相宜间,是灵魂的默契;
  9. 解决(Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:ins)
  10. html5手机密码修改,HTML5 Canvas简简单单实现手机九宫格手势密码解锁