Topcoder SRM 697题解


D1L1

  • 分子分母同乘a[i]:
    \(a_{i}^{b_{i}+1} mod \prod a_i = 0\)
  • 然后我们考虑质因子p,设质因子p在a[i]中出现cnt[i]次
  • 所以对于每个i都满足:`\(\sum (b_i+1)cnt_i >= \sum cnt_i\)
  • \(\sum \frac{1}{b_i+1} > 1\)有解
  • \(\sum \frac{1}{b_i+1} = 1\)时,b[i]满足两两不等有解。
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int gcd(int x, int y) {return y==0?x:gcd(y,x%y);
}
int lcm(int x, int y) {return x*y/gcd(x,y);
}struct DivisibleSetDiv1 {string isPossible(vector<int> b) {int sum = 1;set<int> st;for (auto x: b) {x ++;sum = lcm(sum, x);st.insert(x);}int s = 0;for (auto x: b) {x ++;s += (sum / x);}if (s < sum)return "Possible";if (s == sum && st.size() == b.size())return "Possible";return "Impossible"; }
} T;

D1L2

做法

  • 一个有趣的算贡献问题

首先答案可以这么算

我们来采访第miao号选手,答案可以这么算

int ans=0;
for i=0 to 1<<m-1:for x=0 to n:for y=0 to n:if a[x]^i < a[miao]^i && a[y]^i < a[miao]^yans++

当然,也可以这么算

int ans=0;for x=0 to n:for y=0 to n:for i=0 to 1<<m-1:if a[x]^i < a[miao]^i && a[y]^i < a[miao]^yans++

超进化!

int ans=0;for x=0 to n:for y=0 to n:ans += 有多少个i符合要求呢?
  • 注意到a^xb^x大小关系,由x在a,b在二进制下,不相等的最高位上,是0,还是1来决定。

Trie树!决定就是你了

#include <iostream>
using namespace std;
typedef long long LL;
const int N = 200000+10;
const int MOD = 1000000007;
int n, m;
int a[N];
int ch[N*32][2],sum[N*32],size;void insert(int s) {int now=0;for(int i=m-1;i>=0;i--) {int bit=(s>>i)&1;if (!ch[now][bit]) {ch[now][bit] = ++size;}now = ch[now][bit];sum[now] ++;}
}LL cnt[30];
LL cac(int s) {int now=0;for(int i=m-1;i>=0;i--) {int bit=(s>>i)&1;cnt[i]=sum[ch[now][bit^1]];now = ch[now][bit];}LL ans=0;ans = (LL)(n-1)*(n-1)%MOD*(1LL<<(m-2))%MOD;for (int i=0;i<m;i++) {ans = ans + (LL)cnt[i]*cnt[i]%MOD*(1LL<<(m-2))%MOD;ans %= MOD;}return ans;
}struct XorOrderDiv1 {int get(int mm,int nn,int a0,int b) {n = nn, m = mm;for(int i=0;i<nn;i++) {a[i]=(1LL*a0+1LL*i*b)%(1LL<<mm);insert(a[i]);}LL ans = 0;for(int i=0;i<n;i++) {ans ^= cac(a[i]);}return ans;}
} T;
int main() {int m,n,a,b;cin>>m>>n>>a>>b;cout<<T.get(m,n,a,b)<<endl;
}

转载于:https://www.cnblogs.com/RUSH-D-CAT/p/9134921.html

Topcoder SRM 697题解相关推荐

  1. Topcoder Srm 671 Div2 1000 BearDestroysDiv2

    \(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...

  2. [Topcoder SRM 590]Fox And City(网络流建模)

    题面 问题描述: 一个国家有n个城市,编号为0~n-1.编号为0的城市是首都.该国的道路网形成无向连通图.换句话说:城市之间通过双向路径连接. 对于每个城市,至少有一条从该城市到首都的路径(path) ...

  3. Topcoder SRM 663 DIV 1

    ABBADiv1 题意: 规定两种操作,一种是在字符串的末尾添加A,另一种是在末尾添加B然后反转字符串.现在给你一个起始串,一个终点串,然后问你是否能够通过以上两种操作,从起始串变为终点串. 题解: ...

  4. topcoder srm 714 div1

    problem1 link 倒着想.每次添加一个右括号再添加一个左括号,直到还原.那么每次的右括号的选择范围为当前左括号后面的右括号减去后面已经使用的右括号. problem2 link 令$h(x) ...

  5. Topcoder SRM 700 1000pts:AnyNumber(DP)

    题解: 首先放满一行之后我们强制规定他可以继续放,这样总方案数是A(∑∣S∣,n)A(\sum |S|,n)A(∑∣S∣,n),一个方案可能被算很多次. 处理出fi,jf_{i,j}fi,j​表示前i ...

  6. topcoder srm 691 div1 -3

    1.给定一个$n$个顶点$n$个边的图,边是$(i,a_{i})$,顶点编号$[0,n-1]$.增加一个顶点$n$,现在选出一个顶点集$M$,对于任意的在$M$中 的顶点$x$,去掉边$(x,a_{x ...

  7. Topcoder SRM 657DIV2

    前言: 像我这样一直在DIV2的弱菜..不知道说什么了. A:一定判断有8个'R',每行 每列只有一个 B题:大概是  int E,int EM,int M,int MH,int H 然后EM可以给值 ...

  8. topcoder srm 706 div1

    1.给定一个迷宫,点号表示不可行,井号表示可行.现在可以改变其中的一些井号的位置.问最少改变多少个井号可以使得从左上角到右下角存在路径. 思路:设高为$n$,宽为$m$,若井号的个数$S$小于$n+m ...

  9. topcoder srm 694 div1 -3

    1.给出$n$个数字,将其分成三个非空的组,每组的权值为该组所有数字的抑或.选择一种分法使得三组的权值和最大? 思路:记录前两组的权值且三组有没有数字时第三组的值.(当前两组的值知道时第三组的权值是确 ...

最新文章

  1. 如何快速get到AI工程师面试重点,这12道题必备!
  2. 2型文法:基于预测分析表的自顶向下语法分析
  3. MFC中制作一个似命令行的输入框
  4. [转载]WPF窗口跳转及window和page区别
  5. 程序员面试题精选100题(12)-从上往下遍历二元树[数据结构]
  6. linux桌面使用网卡设置,Linux的KDE桌面下怎样设置网络连接?
  7. php getimagecompose,Docker进阶:Dockerfile以及docker-compose工具
  8. 互联网晚报 | 12月14日 星期二 | “植发第一股”雍禾医疗登陆港交所;商汤科技将延迟上市;“拍照搜题”等作业APP暂时下线...
  9. 童话世界区块宠物源码
  10. mysql分组查询 having,MYSQL-分组查询-where和having的区别
  11. java对象转excel_Java对象和Excel转换工具XXL-EXCEL
  12. [编程题]手机屏幕解锁模式
  13. DWR学习笔记--转载
  14. 袋鼠云数智之旅·上海站|探索“十四五”智慧校园新图景
  15. 简单的扫描工具NTscan
  16. 自定义Behavior
  17. 中国式两性关系把外国人搞晕!
  18. 在DialogFragment的onStop(完全不可见)时调用dismiss退出界面报错解决办法
  19. linux 添加sbit权限,Linux特殊权限SUID、SGID、SBIT
  20. 游戏制作之路-unity捕鱼达人(一 开始以及加载界面的制作)

热门文章

  1. 不同函数之间的跳转setjmp和longjmp
  2. string操作小汇总
  3. shell实例第19讲:一个脚本中调用另一个脚本的3种方法
  4. spring boot一:入门
  5. 汇编: dosbox命令
  6. oracle:导入数据,遇到oracle错误 959
  7. 双系统不能引导双系统
  8. Java虚拟机2:Java内存区域及对象
  9. WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载
  10. C语言 整型变量的输入和输出