谷仓(某校老师原创题)
题目大意:
有一个圆形的谷仓,共有n个房间,按顺时针编号从1到n。现在有许多头奶牛,他们都有自己最喜欢的一个房间。傍晚回家时,奶牛们去找自己最喜欢的房间。如果发现被占了,他们就会按照顺时针方向找第一个空闲的房间住进去。现在请你输出最小的空闲的房间号。注意,这个答案和奶牛们回家的顺序是无关的。2<=n<=3000000,1<=k<=10000,A,B的值在区间[0,10^9]。
一看就是去改编的……
输入
输入格式:
第一行两个整数n,k。
接下来有k行。每行4个整数,x,y,a,b.表示有x头奶牛喜欢f[1],f[2]……,f[y]。其中f[i]=(a*i+b)%n+1.
输出
输出格式:
输出最小的空闲房间号。
样例输入
10 3 3 2 2 4 2 1 0 1 1 1 1 7
样例输出
6
重难点思想:
首先先要理解到这道题的意思,是说每一行喜欢f[i]的房间都有x头奶牛,理解到这一步后,就可以从无从下手到RE。
再来分析,由于我们的a ,b 很大,所以有可能会爆long long , 即使这里有余数还是会爆,故,我们要模三次:
int js( int i ){long long sum =( ( i * s ) % n + b % n ) % n;int k = sum % n;return k + 1;
}
然后就可以从RE晋升到TLE……
我们现在来优化模拟的方法:
用最简单的贪心来想,我们只让第i个房间保留1头奶牛,其余的全都移到下一个房间中,这样虽然一遍解决不了,但是跑2*n就可以把所有牛都放进去,最后再找空余的即可。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int n , m;
long long s , b , x , y;
long long a[3000003];
int js( int i ){long long sum =( ( i * s ) % n + b % n ) % n;int k = sum % n;return k + 1;
}
void read( long long &x ){int f = 1; x = 0;char s = getchar();while( s < '0' || s > '9' ){if( s == '-' )f = -1;s = getchar();}while( s >= '0' && s <= '9' ){x = x * 10 + s - '0';s = getchar();}x *= f;
}
int main(){scanf( "%d%d" , &n , &m );for( int i = 1 ; i <= m ; i ++ ){read( x );read( y );read( s );read( b );for( int j = 1 ; j <= y ; j ++ )a[js( j )] += x;}for( int j = 1 ; j <= 3 ; j++ ){for( int i = 1 ; i <= n ; i ++ ){if( a[i] > 1 ){if( i == n )a[1] += a[n] - 1;elsea[ i + 1 ] += a[i] - 1;a[i] = 1;}}}for( int i = 1 ; i <= n ; i ++ )if( a[i] == 0 ){printf( "%d" , i );return 0;}return 0;
}
谷仓(某校老师原创题)相关推荐
- 杨校老师课堂之Java类与对象、封装、构造方法
杨校老师课堂之Java类与对象.封装.构造方法 本篇文章内容如下: 面向对象 类与对象 三大特征--封装 构造方法 教学目标 能够理解面向对象的思想 能够明确类与对象关系 能够掌握类的定义格式 能够掌 ...
- 画出传输门、三态门、开路门_谷仓门优缺点有哪些?安装效果绝对出彩
随着通信技术的发展,世界之间的距离逐渐缩短,装一网今天给大家介绍的谷仓门就是从国外流传过来的.虽然谷仓门设计来源于国外,但是近几年在国内装修市场也是大受欢迎.谷仓门优缺点有哪些呢?接下来,装一网就为大 ...
- SSLOJ·谷仓的安保【DFS】
SSLOJ 1374 谷仓的安保 Description-- Input-- Output-- Sample Input-- Sample Output-- 说明-- 解题思路-- 代码-- Desc ...
- 武理校赛A题 ljw的剥削(思维 + map应用)
武理校赛A题 ljw的剥削(思维 + map应用) 牛客链接 题意: 给定 a[],b[] 两个长度同为 n 的数组,经过一系列操作后, 使 p = ∑ i = 1 n m a x ( ( a i − ...
- 杨校老师课堂之CSDN博客查找博文汇总-目录
目录 1.面试 2.JavaWeb文件[图片]上传功能: 3.BaseServlet设计教程 4.富文本编辑器使用教程 5.下载Jar包教程 6.页面原型下载 7.Java连接数据库 ...
- 杨校老师课堂之JavaScript案例之跑马灯左右无缝连接图片自动轮播
JavaScript案例之跑马灯左右无缝连接 效果图: 思路: 1.先做界面 1.1 制作一个大盒子,进行存放整个图片及按钮区域 1.2 制作两个按钮和中间区域盒子 1.3 中间区域盒子中使用无序列表 ...
- 由力扣K 个一组翻转链表到360原创题
前段时间帮对象做360笔试题时,遇到一个没怎么想明白的编程题,直到今天刷力扣遇到了相似的k个一组翻转链表后,想着在做一下那天的编程题,就想着记录一下遇到的难点. 力扣题如下图所示: 360原创题如下: ...
- 第15关 夫拉姆谷仓地带(难度高!)
第15关:夫拉姆谷仓地带(难度高!) 培养地狱业火卡 (本关难,第2部boss很难.本关不要给公主宝物,给另外3人宝物. 骑士:方阵快枪(本关的主角!),人鱼寒冰,男主:无.公主:不可以装备,下一 ...
- 杨校老师课堂之WEB前端HTML
目录 1. 概念: 2. 快速入门: 2.1 语法: 2.2 代码: 3. 认识标签: 3.1 文件标签:构成html最基本的标签 3.2 文本标签:和文本有关的标签 3.3 图片标签: 3.4 列表 ...
- C/C++ 求凸多边形对角线交点个数(洛谷原创题)
注:看了一眼大家的解答,大概都是组合排列或是数学几何方法推导从而解答,这里提供一个比较单调的解题方法. 解题思路: 这里我打了一个表 n 交点 2 = 0 3 = 0 4 = 1 5 = 5 6 = ...
最新文章
- AfxInitExtensionModule和AfxTermExtensionModule
- [黑客技术]提权总结21种办法篇
- oracle data guard闪回,11gR2 Active Data Guard 闪回 - flashback database / snapshot standby - 2
- 第七代电子计算机,基于全新第七代智能英特尔®酷睿™处理器的最佳PC全面来袭...
- matlab实现神经网络算法,matlab神经网络训练函数
- 【垂直切换】TD-SCDMA与TD-LTE异构网络垂直切换仿真
- 谷歌SEO之如何使用Ahrefs工具选择关键词(2022更新教程)
- NAO机器人连接的电脑配置及用choregraphe控制nao行走
- python3.9.0 安装教程
- C++ QT开发人机象棋(搜索算法)
- 王半仙儿的日记-0001
- win10休眠_Win10系统C盘飘红,6招瞬间腾出十几GB空间
- SpringCloud系列【security oauth2】
- VB开发源码+视频教程大集合
- dm-crypt——多功能 Linux 磁盘加密工具
- 使用Python在Excel中嵌入附件(txt文件,zip压缩包)对象
- 拼音分词器多音字处理
- [NOIP模拟测试31]题解
- 【机器视觉-卡尺测量、间距检测】
- 引起电源模块发热的4个主要原因分别是什么?