思路:我刚开始是想旋转四次坐标,每次用bit计算每个点左上角的点到这个点的距离,TLE了。。。。

这种算曼哈顿距离的可以将x 轴和 y 轴独立开来,分别计算。

  1. #include<bits/stdc++.h>
  2. #define LL long long
  3. #define fi first
  4. #define se second
  5. #define mk make_pair
  6. #define pii pair<int, int>
  7.  
  8. using namespace std;
  9.  
  10. const int N = + ;
  11. const int M = 1e6 + ;
  12. const int inf = 0x3f3f3f3f;
  13. const LL INF = 0x3f3f3f3f3f3f3f3f;
  14. const int mod = 1e9 +;
  15.  
  16. int n, m;
  17. LL x[N], y[N], sumx[N], fsumx[N], sumy[N], fsumy[N], num;
  18. char s[N][N];
  19.  
  20. inline void add(LL &a, LL b) {
  21. a += b; if(a >= mod) a -= mod;
  22. }
  23. LL fastPow(LL a, LL b) {
  24. LL ans = ;
  25. while(b) {
  26. if(b & ) ans = ans * a % mod;
  27. a = a * a % mod; b >>= ;
  28. }
  29. return ans;
  30. }
  31. int main(){
  32. scanf("%d%d", &n, &m);
  33. for(int i = ; i <= n; i++) {
  34. scanf("%s", s[i] + );
  35. }
  36.  
  37. for(int i = ; i <= n; i++) {
  38. for(int j = ; j <= m; j++) {
  39. if(s[i][j] == '') {
  40. x[i]++;
  41. y[j]++;
  42. num++;
  43. }
  44. }
  45. }
  46.  
  47. LL cnt = ;
  48. for(int i = ; i <= n; i++) add(sumx[i], sumx[i - ]), add(sumx[i], cnt), add(cnt, x[i]);
  49.  
  50. cnt = ;
  51. for(int i = n; i >= ; i--) add(fsumx[i], fsumx[i + ]), add(fsumx[i], cnt), add(cnt, x[i]);
  52.  
  53. cnt = ;
  54. for(int i = ; i <= m; i++) add(sumy[i], sumy[i - ]), add(sumy[i], cnt), add(cnt, y[i]);
  55.  
  56. cnt = ;
  57. for(int i = m; i >= ; i--) add(fsumy[i], fsumy[i + ]), add(fsumy[i], cnt), add(cnt, y[i]);
  58.  
  59. num = fastPow(num, mod - );
  60.  
  61. LL ans = ;
  62. for(int i = ; i <= n; i++) {
  63. for(int j = ; j <= m; j++) {
  64. ans ^= (sumx[i] + fsumx[i] + sumy[j] + fsumy[j]) * num % mod;
  65. }
  66. }
  67.  
  68. printf("%lld\n", ans);
  69. }
  70. /*
  71. */

Wannafly挑战赛18 C - 异或和的更多相关文章

  1. Wannafly挑战赛18 E 极差(线段树、单调栈)

    Wannafly挑战赛18 E 极差 题意 给出三个长度为n的正整数序列,一个区间[L,R]的价值定义为:三个序列中,这个区间的极差(最大值与最小值之差)的乘积. 求所有区间的价值之和.答案对\(2^ ...

  2. Wannafly挑战赛18 B - 随机数

    思路:化简公式,Pn 表示 进行n 次操作,有奇数次1的概率 Pn = (1 - x) * Pn - 1  + x * (1 - Pn - 1) 得通项公式 Pn = (1 - (1 - 2 * x) ...

  3. Wannafly挑战赛4. B

    Wannafly挑战赛4. B 题意:求子区间异或和,要求区间长度在l到r之间,并且为偶数 题解:对于每一位算贡献,可以分奇偶来记录,计算的时候只加上奇偶性相同的就保证了为偶数,从大于l的点开始每次+ ...

  4. Wannafly挑战赛25游记

    Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...

  5. Wannafly挑战赛27

    Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...

  6. Wannafly 挑战赛 19 参考题解

    这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...

  7. Wannafly挑战赛21A

    题目链接 Wannafly挑战赛21A 题解 代码 #include <cstdio> #include <cmath> #define MAX 1000005 #define ...

  8. Wannafly挑战赛24游记

    Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...

  9. Wannafly挑战赛25C 期望操作数

    Wannafly挑战赛25C 期望操作数 简单题啦 \(f[i]=\frac{\sum_{j<=i}f[j]}{i}+1\) \(f[i]=\frac{f[i]}{i}+\frac{\sum_{ ...

随机推荐

  1. ubuntu 16 server 安装lnmp所需依赖

    安装 1.nginx build-essential libc6 libpcre3 libpcre3-dev libssl-dev zliblg zliblg-dev lab-base 依赖库: ap ...

  2. bzoj 3209 bzoj1799 数位dp

    3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2267  Solved: 1040[Submit][Status][Disc ...

  3. 前端PHP入门-023-重点日期函数之程序执行时间检测

    我们有的时经常需要做程序的执行时间执行效率判断. 实现的思路如下: <?php //记录开始时间 //记录结整时 // 开始时间 减去(-) 结束时间 得到程序的运行时间 ?> 可是大家不 ...

  4. DialogFragment 将数据传回Activity的onActivityResult方法

    在MyActivity中 弹出一个DialogFragment (某一个控件的点击事件) search= findViewById(R.id.search); search.setOnClickLis ...

  5. 多例模式,保证实例的唯一性,仅适用于form窗体

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  6. 「七天自制PHP框架」第一天:路由与控制器

    我们为什么要使用路由? 原因1:一个更漂亮的URI 1.URI的改进 刚刚开始学PHP时,我们一定写过blog.php?id=1之类的URI,使用GET方式获取参数.这样的URI有两个缺点,一是容易被 ...

  7. 51nod 1074 约瑟夫环 V2

    N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数.问最后剩下的人的编号. 例如:N = 3,K = 2.2号先出列,然后是1号,最后剩下的是3号. ...

  8. Java并发编程学习路线

    一年前由于工作需要从微软技术栈入坑Java,并陆陆续续做了一个Java后台项目,目前在搞Scala+Java混合的后台开发,一直觉得并发编程是所有后台工程师的基本功,所以也学习了小一年Java的并发工 ...

  9. MOD - Power Modulo Inverted(SPOJ3105) + Clever Y(POJ3243) + Hard Equation (Gym 101853G ) + EXBSGS

    思路: 前两题题面相同,代码也相同,就只贴一题的题面了.这三题的意思都是求A^X==B(mod P),P可以不是素数,EXBSGS板子题. SPOJ3105题目链接:https://www.spoj. ...

  10. L - Looking for Taste Gym - 101991L 二进制枚举/思维

    方法一:因为最多是10的六次方,所以可以直接枚举二进制上的每一位来得到最优结果. AC代码: #include<iostream> #include<stack> #inclu ...