3301: [USACO2011 Feb] Cow Line 康托展开
来源:互联网 发布:瓦楞纸箱设计软件 编辑:程序博客网 时间:2024/06/05 13:23
→题目链接←
就是一道裸的康托展开
开始写的时候我发现我并没有写过并且也不太会
然后开始了自己YY
居然一发A了!!!!
代码:
#include<iostream>#include<cstdio>#include<bitset>#define ll long longusing namespace std;int n,m;ll num[22];void cal(){int sum[22];for(int i=1; i<=n; i++)sum[i]=i;ll ans=0;for(int i=0; i<n; i++){int x;scanf("%d",&x);ans+=(sum[x]-1)*num[n-i-1];for(int j=x; j<=n; j++)sum[j]--;}printf("%lld\n",ans+1);}void cal1(ll x){x--;int sum[22],ans[22];bool vis[22];for(int i=1; i<=n; i++)sum[i]=i,vis[i]=0;for(int i=0; i<n; i++){for(int j=n; j>=1; j--){if(vis[j])continue;if(x>=(sum[j]-1)*num[n-i-1]){x-=(sum[j]-1)*num[n-i-1],ans[i]=j;for(int k=j; k<=n; k++)sum[k]--;vis[j]=true;break;}}}printf("%d",ans[0]);for(int i=1; i<n; i++){printf(" %d",ans[i]);}printf("\n");}int main(){num[1]=1;for(int i=2; i<=20; i++)num[i]=num[i-1]*i;scanf("%d%d\n",&n,&m);for(int i=0; i<m; i++){char c=getchar();if(c=='P'){ll x;scanf("%lld",&x);cal1(x);}else{cal();}getchar();}return 0;}
阅读全文
0 0
- bzoj 3301: [USACO2011 Feb] Cow Line 康托展开
- 3301: [USACO2011 Feb] Cow Line 康托展开
- [BZOJ]3301 [USACO2011 Feb] Cow Line 康托展开&逆康托展开
- BZOJ 3301: [USACO2011 Feb] Cow Line
- [Usaco2011 Feb]Generic Cow Protests
- bzoj 2274 [Usaco2011 Feb]Generic Cow Protests
- bzoj2274[Usaco2011 Feb]Generic Cow Protests
- 2274: [Usaco2011 Feb]Generic Cow Protests
- 康托展开/逆康托展开
- 康托展开 & 康托逆展开
- 康托展开&逆康托展开
- 康托展开 康托逆展开
- 康托展开
- 康托展开
- 康托展开
- 康托展开
- 康托展开
- 康托展开
- Android 7.1 应用快捷方式(ShortcutManager的使用)
- SpringMVC实现查询结果下载为CSV文件
- [python]leetcode(105). Construct Binary Tree from Preorder and Inorder Traversal
- 直接插入、冒泡、快速、简单选择、堆、归并排序算法
- JVM内存区域和内存溢出异常
- 3301: [USACO2011 Feb] Cow Line 康托展开
- HTML5拖放
- 属性动画的几种实现方式
- hdu 5428(质因数分解)
- 重定向和请求转发的区别
- 【内外网映射】通过外网ip来访问虚拟机服务器【转载】
- (初学者)关于Python学习中Windows环境中遇到的info-zip问题的解决
- 英特尔® 嵌入式显卡驱动程序
- http 无连接 无状态