思路:我刚开始是想旋转四次坐标,每次用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. Problem D. Country Meow 2018ICPC南京

    n个点求出最小圆覆盖所有点 退火算法不会,不过这题可以用三分套三分写 x轴y轴z轴各三分 #include <cstdio> #include <cstring> #inclu ...

  2. 由保存当前用户引发的springboot的测试方式postman/restlet还是swagger2

    今天在测试接口的到时候发现用springboot集成swagger2集成的项目,在测试session保存的当前用户的时候,发现执行不了,没有像postman或者restlet一样,保存这个接口的url ...

  3. jdk1.5后枚举类的定义规则

    转: http://blog.csdn.net/willcold/article/details/12844487  JDK1.5 新增的enum关键字用于定义枚举类             枚举类也 ...

  4. Messenger 进程间通信

    Messenger 使用 Messenger 可以在进程间传递数据, 实现一对多的处理. 其内部实现, 也是基于 aidl 文件, 这个aidl位于: frameworks/base/core/jav ...

  5. std::sort运行出core(segment fault)

    http://note.youdao.com/noteshare?id=6aae09345e85ab55fe24ac959118a747

  6. 我是大SB

    哈哈哈 我就是个大SB!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  7. ubuntu环境下添加中文输入法

    1.下载软件包 打开终端,输入命令 sudo apt-get install fcitx-table-wbpy 2.打开 system settings-> language support-& ...

  8. Oracle Number类型超长小数位为0问题

    碰到了一个非常奇怪的问题,从Excel拷贝出来的数据,位数很长,通过Pl Sql 导出到Oracle后为0了,而且设置查询条件为0时,无法查询出来,条件大于0居然能查询出来,通过to_number也是 ...

  9. 【BZOJ】3036: 绿豆蛙的归宿

    [题意]给定DAG带边权连通图,保证所有点都能到达终点n,每个点等概率沿边走,求起点1到终点n的期望长度.n<=10^5. [算法]期望DP [题解]f[i]表示到终点n的期望长度. f[n]= ...

  10. NYOJ 228 士兵杀敌(五) (模拟)

    {题目链接](http://acm.nyist.net/JudgeOnline/problem.php?pid=228) 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为0~M,每次有任务的时候 ...