C、三角形

(triangle.c/cpp/pas)

【题目描述】

平面上有n行m列,一共n*m个方格,从上到下依次标记为第1,2,...,n行,从左到右依次标记为第1,2,...,m列,方便起见,我们称第i行第j列的方格为(i,j)。小Q在方格中填满了数字,每个格子中都恰好有一个整数a_{i,j}。小Q不

喜欢手算,因此每当他不想计算时,他就会让你帮忙计算。小Q一共会给出q个询问,每次给定一个方格(x,y)和一个整数k(1<=k<=min(x,y)),你需要回答由(x,y),(x-k+1,y),(x,y-k+1)三个格子构成的三角形边上以及内部的所有

格子的a的和。

【输入格式】

第一行包含6个正整数n,m,q,A,B,C(1<=n,m<=3000,1<=q<=3000000,1<=A,B,C<=1000000)

其中n,m表示方格纸的尺寸,q表示询问个数。

为了防止输入数据过大,a和询问将由以下代码生成:

unsigned int A,B,C;

inline unsigned int rng61(){

A ^= A << 16;

A ^= A >> 5;

A ^= A << 1;

unsigned int t = A;

A = B;

B = C;

C ^= t ^ A;

return C;

}

int main(){

scanf("%d%d%d%u%u%u", &n, &m, &q, &A, &B, &C);

for(i = 1; i<= n; i++)

for(j = 1; j <= m; j++)

a[i][j] = rng61();

for(i = 1; i<= q; i++){

x = rng61() % n + 1;

y = rng61() % m + 1;

k = rng61() % min(x, y) + 1;

}

}

【输出格式】

为了防止输出数据过大,设f_i表示第i个询问的答案,则你需要输出一行一个整数,即:

输入输出样例:

triangle.in

triangle.out

3 4 5 2 3 7

3350931807

题解

不要被那一大串代码和最后的一个式子吓到了

考场上我一开始以为要求一个任意三角形,被吓懵。。。

结果是求这种三角形:

于是我们可以用一些奇奇怪怪的前缀和和奇奇怪怪的加加减减来算算

首先我们可以维护一个矩形的前缀和

(红色表示加,绿色表示减)

我们就可以算出黄色方框里的和

比红色的面积还多了一点

想办法减掉那个多出来的梯形

于是我们可以维护一个三角形的前缀和(用两个三角形相减得一个梯形)

我们减掉一个绿色的三角形发现减多了,又加上一个红色的小三角形

所以总体思路是:(注意坐标)

我们只需要维护两种前缀和,在加加减减一下就可以搞出来啦

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 3005
unsigned int f[3000005];
unsigned int A,B,C;
inline unsigned int rng61()
{A^=A<<16;A^=A>>5;A^=A<<1;unsigned int t=A;A=B;B=C;C^=t^A;return C;
}
unsigned int a[N][N],sum[N][N];
int main()
{freopen("triangle.in","r",stdin);freopen("triangle.out","w",stdout);int n,m,q,i,j,x,y,k;scanf("%d%d%d%u%u%u", &n, &m, &q, &A, &B, &C);for(i = 1; i<= n; i++)for(j = 1; j <= m; j++){a[i][j] = rng61()+a[i][j-1];sum[i][j]=a[i][j];}for(j=1;j<=m;j++)for(i=1;i<=n;i++){a[i][j]+=a[i-1][j];sum[i][j]+=sum[i+1][j-1];}for(i = 1; i<= q; i++){x = rng61() % n + 1;y = rng61() % m + 1;k = rng61() % min(x, y) + 1;f[i]=a[x][y]-a[x-k][y]-sum[x-k+1][y-1]+sum[x+1][max(y-k-1,0)];}unsigned int ans=0,tmp=1;for(i=q;i>=1;i--){ans+=f[i]*tmp;tmp*=233u;}printf("%u",ans);
}

我竟然调了一个小时,结果发现 f 数组开小了。。。

NOIP模拟赛8.15----C、三角形相关推荐

  1. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  2. 辣鸡(ljh) NOIP模拟赛 模拟 平面几何 数论 化学相关(雾)

    [题目描述] 辣鸡ljhNOI之后就退役了,然后就滚去学文化课了. 然而在上化学课的时候,数学和化学都不好的ljh却被一道简单题难住了,受到了大佬的嘲笑. 题目描述是这样的:在一个二维平面上有一层水分 ...

  3. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  4. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排 ...

  5. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

  6. NOIP模拟赛csy2021/10/30

    NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...

  7. 【WZOI第二次NOIP模拟赛Day1T2】世界末日 解题报告

    [WZOI第二次NOIP模拟赛Day1T2]世界末日 Problem 2 世界末日 (doomsday.pas/c/cpp) 背景 话说CWQ大牛终于打开了那扇神秘大门,但迎接他的不是什么神秘的东西, ...

  8. NOIP 模拟赛 长寿花 题解

    NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同. 相邻两层颜色集 ...

  9. 【NOIP 模拟赛】平均数 涂色游戏 序列题解

    吐槽(完跪):神tmNOIP模拟赛,看到大题头根本高级数据结构什么的想都没想,结果死的很惨,第三题竟然要可持久化线段树,这NOIP我服了. 平均数: 这道题40分相信大家都能拿到,剩下的60分讲真考验 ...

最新文章

  1. Tensorflow中实现leakyRelu
  2. PAT甲级1052 Linked List Sorting:[C++题解]链表排序
  3. The Design and Implementation of Open vSwitch
  4. wxWidgets:常用表达式
  5. 使用showMessageDialog显示消息框
  6. Redis 缓存 Key
  7. 各大媒体优劣对比_信息流投放广告丨各大平台的信息流都有什么特点与弊端
  8. java get properties_Java.lang.System之getProperties()方法
  9. Java中数学计算的相关方法
  10. 【Python简明教程一】Python编程基础
  11. 计算机怎么算对数的反函数,Excel 计算对数分布函数反函数:LOGINV函数
  12. java有哪些练手的项目
  13. MySQL数据库安装手册
  14. PowerDesign画ER图
  15. linux系统下面所有命令都失效了,显示bash: xxxxx: command not found...
  16. B站视频下载器推荐(简单又好用)
  17. Google地图中关于根据具体坐标定位真实地理位置
  18. 2014完美世界校招笔试题及答案
  19. 2022制冷与空调设备安装修理特种作业证考试题库及答案
  20. linux下查看显卡和驱动版本

热门文章

  1. 【每日推理2019/06/06】
  2. rtp封包pcm_RTP音频AAC封包
  3. java导出复杂excel表格_java使用freemarker导出复杂的excel表格
  4. 【报告分享】活跃长者驱动的健康市场-CCAF(附下载)
  5. GO+Selenium批量关注各大网站实战 3 (开发者头条号)
  6. 11个JavaScript代码重构最佳实践
  7. 放弃“一阳指”,改练“六脉神剑”的OPPO何时能“后发先至”?
  8. Windows宽带断线重连(C#)
  9. 微信小程序 - 获取用户信息 “getUserInfo:fail auth deny“,“err_code“:“-12007“
  10. 043:cesium加载Bing地图(多种形式)