noip 2012 提高组 day2 部分题解

这道题有多种解法,我用的是扩展欧几里得算法求到的答案
#include<iostream>
#include<fstream>
#include<cstdio>
using namespace std;
typedef long long ll;
ifstream fin("mod.in");
FILE *fout = fopen("mod.out","w");
void gcd(ll a,ll b,ll& x,ll& y){
if(!b){ x = , y = ; }
else{ gcd(b, a%b, y, x); y -= x * (a / b); }
}
ll a1,b1;
ll x1 = ,y1 = ;
int main(){
fin>>a1>>b1;
gcd(a1, b1, x1, y1);
fprintf(fout,"%ld",(x1 + b1 * )%b1);
return ;
}


这道题把第i个人看做一个有序的序列(1、2、3、4....)然后二分
至于求和,就像这么处理:
、
接着从前面开始求和。。。

就像这样可以求出每一天的教室使用量,如果1 ~ v天中有哪一天不够用了,就在前半段
查找,如果都足够,就向后面查找,每次不够的时候更新结果result
#include<iostream>
#include<fstream>
#include<cstdio>
#include<cctype>
#include<cstring>
using namespace std;
typedef bool boolean;
FILE *fout = fopen("classroom.out","w");
template <class T>
inline void get(T &u){
char x;
while(!isdigit(x=getchar()));
for( u=x-; isdigit(x=getchar()); u*=,u+=(x-));
ungetc(x,stdin);
}
int *d;
int *s;
int *t;
int *r;
int *buf;
int m,n;
boolean solve(int v){
memset(buf, , sizeof(int) * (n + ));
int sum = ;
int limit = ;
for(int i = ;i <= v;i++){
buf[s[i]] += d[i];
buf[t[i] + ] -= d[i];
limit = max(limit, t[i]);
}
for(int i = ;i <= limit;i++){
sum += buf[i];
if(sum > r[i]) return true;
}
return false;
}
int main(){
freopen("classroom.in","r",stdin);
get(n);
get(m);
r = new int[(const int)(n + )];
d = new int[(const int)(m + )];
s = new int[(const int)(m + )];
t = new int[(const int)(m + )];
buf = new int[(const int)(n + )];
for(int i = ;i <= n;i++) get(r[i]);
for(int i = ;i <= m;i++){
get(d[i]);
get(s[i]);
get(t[i]);
}
int from = ;
int end = m;
int result = ;
while(from <= end){
int mid = (from + end) >> ;
if(solve(mid)){
result = mid;
end = mid - ;
}else from = mid + ;
}
if(!result) fprintf(fout,"0\n");
else fprintf(fout,"-1\n%d\n",result);
return ;
}
noip 2012 提高组 day2 部分题解的更多相关文章
- noip 2013 提高组 Day2 部分题解
积木大赛: 之前没有仔细地想,然后就直接暴力一点(骗点分),去扫每一高度,连到一起的个数,于是2组超时 先把暴力程序贴上来(可以当对拍机) #include<iostream> #incl ...
- NOIP 2015 提高组 Day2
期望得分:100+10+60=170 实际得分:100+10+35=145 http://www.cogs.pro/cogs/page/page.php?aid=16 T1 跳石头 时间限制:1 s ...
- NOIP 2013 提高组 day2 积木大赛
积木大赛 描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为 n 的大厦,大厦可以看成由 n 块宽度为1的积木组成,第
- Vigenère 密码NOIP 2012 提高组 第一天 第一题
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
- NOIP 2014 提高组 Day2
期望得分:100+60+30=190 实际得分:70+60+30=160 https://www.luogu.org/problem/lists?name=&orderitem=pid& ...
- NOIP 2008提高组第三题题解by rLq
啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...
- NOIP 2014 提高组 题解
NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...
- NOIP 2001 提高组 题解
NOIP 2001 提高组 题解 No 1. 一元三次方程求解 https://vijos.org/p/1116 看见有人认真推导了求解公式,然后猥琐暴力过的同学们在一边偷笑~~~ 数据小 暴力枚举即 ...
- noip 2014 提高组初赛
noip 2014 提高组初赛 一. TCP协议属于哪一层协议( ) A. 应用层 B. 传输层 C. 网络层 D. 数据链路层 B TCP(传输控制协议) 若有变量int a; float: x, ...
随机推荐
- postgresql+postgis+pgrouting安装步骤图解
1.在此(https://www.bigsql.org/postgresql/installers.jsp/)下载postgresql(开源数据库,gis行业推荐使用); 2.在此(http://wi ...
- CentOS工作内容(二)关闭SELinux
CentOS工作内容(二)关闭SELinux CentOS安装完成后,有很多配置要改,不过最重要就是关闭SELinux SELinux是增强安全性的一项功能,不是SELinux不好,而是当功能安全性较 ...
- [py]python的继承体系-源码目录结构
python3安装目录 pip install virtualenv pip install virtualenvwrapper pip install virtualenvwrapper-win m ...
- SSM请求的响应
1.请求响应文本到页面直接用pw.println("文本信息");打印到页面: 2.如果请求方法前不加@ResponseBody,返回字符串直接转发到对应的页面: 3.如果请求方法 ...
- Django之分页功能
Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表.元组或其它可迭代的对象. 基本语法 class Paginator(ob ...
- for和foreach的区别
public class Program { public static void Main() { Program program = new Program(); program.For();// ...
- [参考资料] 80个Python经典资料(教程+源码+工具)汇总
AD : 2018重磅地面课程<机器读心术之语音识别前沿实战特训营>,迈向人工智能新高度 [专题推荐]Python系列英文原版电子书 http://down.51cto.com/zt/10 ...
- RMAN备份与恢复实践(转)
1 RMAN备份与恢复实践 1.1 备份 1.1.1 对数据库进行全备 使用backup database命令执行备份 RMAN> BACKUP DATABASE; 执行上述命令后将对目标 ...
- selenium webdriver处理HTML5 的视频播放
import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.sele ...
- iOS 网易彩票-6设置模块三(常用小功能)
该篇文章中,用到很多iOS开发过程中常用的小功能,当前只是将这些功能集成到网易彩票的设置中.iOS-常用小功能介绍,请参考我的另一篇文章: iOS 常用小功能 总结:http://www.cnblog ...