tags:

  • 扩展欧几里得
  • 二分答案
  • 查分
  • 倍增
  • 二分答案
  • 贪心
  • NOIP

    categories:
  • 信息学竞赛
  • 总结

同余方程

借教室

疫情控制

同余方程

Solution

  首先同余式可以转化为等式.

\[ax\equiv 1\mod b\Leftrightarrow ax+by=1
\]

  根据扩展欧几里得定理, 对于式

\[ax+by=k(a,b),k\in \mathbf{R}$$一定存在整数解.然而题面说一定存在解, 也就是说$(a,b)=1$, 然后就可以利用**扩展欧几里得**递归求得一组解.利用这组解加上**取模**, 就可以获得最小整数解.
#### Code
```c++
#include<cstdio>
void exgcd(int a,int b,int &x,int &y){
if(!b){
x=1,y=0;return ;
}
exgcd(b,a%b,y,x);
y-=x*(a/b);
}

int main(){
int a,b,x,y;
scanf("%d%d",&a,&b);
exgcd(a,b,x,y);
printf("%d",(x%b+b)%b);
return 0;
}
```
### 借教室
#### Solution
  可以发现近些年 NOIP 总是出**二分答案**的题.
  其实就是给出一些操作, 每次对一定区间减去一个数, 求在哪次操作之后产生了负数.然而可以用线段树强行做, 也可以用一些巧妙一点的办法.
- 线段树, 只需要有**区间加操作**和查询**区间最小值**操作, 一般线段树可以拿到95分, 还可以用可以各种**卡常技巧**, **zkw线段树**或者是**标记永久化**来加快.
- 二分一个值$\text{T}$, 表示前$\text{T}$次借教室后会不会出现不合法情况(*即某天教室只剩下负数间*), 然后用**差分**借完$T$次教室后每一天剩下的教室数.这个一般情况是不会被卡的.**注意对于答案的记录.**

#### Code
```c++
#include<cstring>
#include<cstdio>
#define N 1000055
#define inf 0x3f3f3f3f
#define int long long
struct Node{
int l,r,s;
void init(){scanf("%lld%lld%lld",&s,&l,&r);}
}s[N];

int n,m,d[N];
int qi[N];
int ans;

int min(int a,int b){
return a<b?a:b;
}

bool check(int tim){
qi[0]=0;
for(int i=1;i<=n;++i)
qi[i]=d[i]-d[i-1];
for(int i=1;i<=tim;++i)
qi[s[i].l]-=s[i].s,qi[s[i].r+1]+=s[i].s;
int he=0;
for(int i=1;i<=n+1;++i){he+=qi[i];if(he<0){ans=min(ans,tim);return false;}}
return true;
}

main(){
ans=inf;
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;++i)
scanf("%lld",&d[i]);
for(int i=1;i<=m;++i)
s[i].init();
int l=1,r=m,mid;
while(l<=r){
mid=(l+r)>>1;
if(!check(mid))
r=mid-1;
else l=mid+1;
}
if(l>=m)
printf("0");
else printf("-1\n%lld",ans);
return 0;
}
```
### 疫情控制
  并不是很明白为什么一天会出两道二分答案的题目...
  首先二分一个值$\text{T}$, 表示在$\text{T}$时刻内能封锁这棵树
  还是有一个很重要的贪心策略, 就是一个点在到达根节点之前总是越往上走越好.然后根据**倍增**确定出每个点在给定时间$\text{T}$所到达的最高点(*根节点为终点*). 必然有一些点到达不了根节点, 那么就让它来控制这个点; 必然有在不同时间到达根节点的点, 这些点可以去控制根节点的不同没被控制的子树; 所以最后找出所有**没有被控制的树点**和**能到达根节点的军队**进行贪心即可.
  细节太多了, 很讨厌呐.\]

NOIP 2012 Day2的更多相关文章

  1. noip 2012 Day2 T2 借教室

    一.暴力简述 甩链接.jpeg 首先我们不难看出,这道题————并不是一道多难的题,因为显然,第一眼看题目时便很容易地想到暴力如何打:枚举每一种订单,然后针对每一种订单,对区间内的每一天进行修改(做减 ...

  2. NOIp 2012 #2 借教室 Label:区间修改线段树

    题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然 ...

  3. NOIp 2012 #1 Vigenère 密码 Label:模拟

    题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...

  4. NOIP 2012 Day2T2 借教室题解

    NOIP 2012 Day2T2 借教室题解 题目传送门:http://codevs.cn/problem/1217/ 题目描述 Description 在大学期间,经常需要租借教室.大到院系举办活动 ...

  5. NOIP 2012 T5 借教室 [洛谷P1083]

    题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自 ...

  6. 【NOIP 2012 疫情控制】***

    题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都, 也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散 ...

  7. 【NOIP 2012 开车旅行】***

    题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...

  8. 【NOIP 2012 国王游戏】 贪心+高精度

    题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在队伍 ...

  9. NOIP 2012 Vigenère 密码

    洛谷 P1079 Vigenère 密码 https://www.luogu.org/problemnew/show/P1079 JDOJ 1779: [NOIP2012]Vigenèr密码 D1 T ...

随机推荐

  1. AtCoder Regular Contest 075 E - Meaningful Mean(树状数组)

    题目大意:求一个数组中,平均值不小于k的连续子序列个数 所有数减去k,算个前缀和出来,就变成二维数点问题了. 没有修改,离线的话就是CZL所说的“NOIP最喜欢的套路”了:倒着加进BIT,以权值为数组 ...

  2. shell中的颜色显示

    By francis_hao    Sep 30,2017   图片来自参考[1]     其中,"033"是八进制数,其对应的asciima也就是ESC.后面的颜色格式为:[背景 ...

  3. 关于AVPlayerItem对象的属性duration返回播放总时长的坑

    最近在使用AVPlayer播放网络流媒体,发现一个坑: 就是playerItem.duration有可能不返回该网络多媒体资源的播放总时间长度,而是返回了一个奇怪的数据:nan, 因为我通过CMTim ...

  4. noip模拟赛 保留道路

    [问题描述] 很久很久以前有一个国家,这个国家有N个城市,城市由1,2,3,…,N标号,城市间有M条双向道路,每条道路都有两个属性g和s,两个城市间可能有多条道路,并且可能存在将某一城市与其自身连接起 ...

  5. AtCoder Grand Contest 031 B - Reversi(DP)

    B - Reversi 题目链接:https://atcoder.jp/contests/agc031/tasks/agc031_b 题意: 给出n个数,然后现在你可以对一段区间修改成相同的值,前提是 ...

  6. Machine Learning CodeForces - 940F (带修改的莫队)

    You come home and fell some unpleasant smell. Where is it coming from? You are given an array a. You ...

  7. bzoj 1218 [HNOI2003]激光炸弹 二维前缀和

    [HNOI2003]激光炸弹 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3022  Solved: 1382[Submit][Status][Di ...

  8. jQuery无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案

    用jQuery写一个通过点击左右图标来翻阅图片的小插件,写好后测试可以正常运行,但是放到Tab中后发现只有第一个Tab中的代码能够正常运行,其它全部罢工了. 用Chrome自带的开发工具一查,发现罢工 ...

  9. iframe的使用及操作

    一.iframe的使用方法: 在一个页面中加入iframe代码,例如: <div class="myiframe"> <iframe src="test ...

  10. LightOJ 1161 - Extreme GCD 容斥

    题意:给你n个数[4,10000],问在其中任意选四个其GCD值为1的情况有几种. 思路:GCD为1的情况很简单 即各个数没有相同的质因数,所以求所有出现过的质因数次数再容斥一下-- 很可惜是错的,因 ...