NOIP模拟17.10.12
2017-10-12 18:34
204 查看
T1 临江仙 旧梦
题目背景
闻道故园花陌,今年奼紫嫣红。扬帆直渡水千重。东君何解意,送我一江风。
还是昔时庭院,终得醉卧花丛。残更惊醒月明中。流光如旧岁,多少梦成空。
题目描述
#define goodcatdog gcd
#define important i
#define judge j
神说 每个梦想就是一轮月亮,高高地孤寂地挂在清冷的夜空。为了让月亮不再孤独,灯神给她找了好多好多伴儿。现在天空上就有n轮月亮啦!
月亮在天上跟相邻的伙伴玩够以后,就开始想要去找其他月亮玩,灯神为了让月亮变得更聪明,下了一个规定:若两个月亮编号分别为important和judge,若important ,judge满足goodcatdog(important,judge)>β,则important,judge就可以联通。
现在来了一个垃圾神叫J乌拉,他想知道编号为x的月亮和编号为y的月亮是否联通,聪明的你能帮帮它吗????
输入描述
第一行为一个数T,表明有T组测试数据
四个个数n,β,x,y;
输出描述
若x,y联通,输出YeS,否则输出No
样例输入
1
12 2 8 9
样例输出
YeS
数据范围:
对于30%的数据 n<=10
对于50%的数据 n<=15
对于第六个测试点 n<=65432
对于第七,八个测试点 n<=999999
对于100%的数据 β<=n<=1000000;T<=4;x,y<=n<=10000000
【题解】
从b开始到n暴力枚举gcd,然后把gcd的倍数连起来就好了
如果是我就给m组询问来卡输出yes或no的骗分
只给一组x.y让我一直往x,y分解上想浪费了不少时间
T2
T3 春江花月夜(防AK好题)
题目背景
春江潮水连海平,海上明月共潮生。滟滟随波千万里,何处春江无月明!
江流宛转绕芳甸,月照花林皆似霰;空里流霜不觉飞,汀上白沙看不见。
江天一色无纤尘,皎皎空中孤月轮。江畔何人初见月?江月何年初照人?
人生代代无穷已,江月年年只相似。不知江月待何人,但见长江送流水。
白云一片去悠悠,青枫浦上不胜愁。谁家今夜扁舟子?何处相思明月楼?
可怜楼上月徘徊,应照离人妆镜台。玉户帘中卷不去,捣衣砧上拂还来。
此时相望不相闻,愿逐月华流照君。鸿雁长飞光不度,鱼龙潜跃水成文。
昨夜闲潭梦落花,可怜春半不还家。江水流春去欲尽,江潭落月复西斜。
斜月沉沉藏海雾,碣石潇湘无限路。不知乘月几人归,落月摇情满江树。
题目描述
小春和小江是两个很好的朋友,他们都信奉灯神教。有一天,小春突发奇想,学习起了莫比乌斯反演,恰好在这天,小江也突发奇想,学起了快速傅里叶变换。可是莫比乌斯反演比快速傅里叶变换字数多啊,于是乎小春就比小江学得快。
小春非常得意,利用所学知识给小江出了一倒防AK好题:已知在这个宇宙中有n个太阳和n个月亮,由于宇宙之神--灯神是一个喜爱数学的神,所以他就规定了n属于数域P。灯神把整个宇宙抽象成了一个二维平面坐标系,对于每个太阳和每个月亮,都有自己的一个坐标xi,yi 坐标也是数域成员。如果一个太阳想去找一个月亮玩,那么他只能往东面或者南面飞。月亮是不能动哒!飞行单位距离为1,他就会消耗的花费(其中p,q分别为斐波那契数列第100007 100000007项对1000000007取模的值) 灯神想知道怎么让每个太阳都能找到某个月亮玩使得花费最小(一个月亮只能被找一次)?小江一下子就被难倒了,询问聪明的你,那么聪明年轻帅气漂亮颜值居高无比的你能帮助他解决这个问题吗?(保证答案在long int的十分之一范围内)。
题目提示
1.数域定义 设F是一个数环(设S是复数集的非空子集,如果S中的数对任意两个数的和、差、积仍属于S,则称S是一个数环。),如果对任意的a,b∈F而且a≠0, 则b/a∈F;则称F是一个数域。著名的域有:Klein四元域。
数域性质 任何数域都包含有理数域Q。即Q是最小的数域。
证明:F必有一个非零元素a.由于F为数环,所以0 = a - a属于F1 = a/a 属于F0和1都属于F那么2 = 1+13 = 2+1。。。。自然数N都属于F-n = 0 - n 也属于F故整数集合Z都属于F那么a/b 也属于F(其中a,b为整数)这样,任何一个数域都包含Q
2.莫比乌斯反演
卷积:令d|n表示d能整除n,比如 2|4 (=.=)定义关于整数的函数F(n)然后定义G(n)=Σ(F(d)) (其中d|n)
反演原式:G(n)=Σ(F(d))(其中d|n)
反演公式:F(n)=Σ(U(n/d)*G(d))这里U是莫比乌斯函数,他是每一项 G(d) 的系数。
3.欧拉函数:
其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。
输入描述
第一行为一个正整数n,表示天月亮的数量(太阳的数量与之相等)。接下来n行,每行两个整数xi和yi,表示太阳的坐标。规定向东向北为x,轴正方向。接下来n行,每行两个数a和b,示月亮的坐标。
输出描述
第一行包含一个数,表示最小的花费。答案对斐波那契数列的第100000007项取模。
样例输入
3
3 5
1 2
4 3
6 3
5 2
2 1
样例输出
9
数据范围
对于30%的数据 n<=300
对于第四,五个测试点 n<=20000
对于第六,七,八个测试点 n<=25000
对于100%的数据 n<=3 0 0 0 1;0<=xi,yi<=1 0 0 0 0 0,0<=a,b<=1 0 0 0 0 0.
保证答案存在。
发奇想,学起了快速傅里叶变换。可是莫比乌斯反演比快速傅里叶变换字数多啊,于是乎小春就比小江学得快。
小春非常得意,利用所学知识给小江出了一倒防AK好题:已知在这个宇宙中有n个太阳和n个月亮,由于宇宙之神--灯神是一个喜爱数学的神,所以他就规定了n属于数域P。灯神把整个宇宙抽象成了一个二维平面坐标系,对于每个太阳和每个月亮,都有自己的一个坐标xi,yi 坐标也是数域成员。如果一个太阳想去找一个月亮玩,那么他只能往东面或者南面飞。月亮是不能动哒!飞行单位距离为1,他就会消耗
的花费(其中p,q分别为斐波那契数列第100007 100000007项对1000000007取模的值) 灯神想知道怎么让每个太阳都能找到某个月亮玩使得花费最小(一个月亮只能被找一次)?小江一下子就被难倒了,询问聪明的你,那么聪明年轻帅气漂亮颜值居高无比的你能帮助他解决这个问题吗?(保证答案在long int的十分之一范围内)。
题目提示
1.数域定义 设F是一个数环(设S是复数集的非空子集,如果S中的数对任意两个数的和、差、积仍属于S,则称S是一个数环。),如果对任意的a,b∈F而且a≠0, 则b/a∈F;则称F是一个数域。著名的域有:Klein四元域。
数域性质 任何数域都包含有理数域Q。即Q是最小的数域。
证明:F必有一个非零元素a.由于F为数环,所以0 = a - a属于F1 = a/a 属于F0和1都属于F那么2 = 1+13 = 2+1。。。。自然数N都属于F-n = 0 - n 也属于F故整数集合Z都属于F那么a/b 也属于F(其中a,b为整数)这样,任何一个数域都包含Q
2.莫比乌斯反演
卷积:令d|n表示d能整除n,比如 2|4 (=.=)定义关于整数的函数F(n)然后定义G(n)=Σ(F(d)) (其中d|n)
反演原式:G(n)=Σ(F(d))(其中d|n)
反演公式:F(n)=Σ(U(n/d)*G(d))这里U是莫比乌斯函数,他是每一项 G(d) 的系数。
3.欧拉函数:
其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。
输入描述
第一行为一个正整数n,表示天月亮的数量(太阳的数量与之相等)。接下来n行,每行两个整数xi和yi,表示太阳的坐标。规定向东向北为x,轴正方向。接下来n行,每行两个数a和b,示月亮的坐标。
输出描述
第一行包含一个数,表示最小的花费。答案对斐波那契数列的第100000007项取模。
样例输入
3
3 5
1 2
4 3
6 3
5 2
2 1
样例输出
9
数据范围
对于30%的数据 n<=300
对于第四,五个测试点 n<=20000
对于第六,七,八个测试点 n<=25000
对于100%的数据 n<=3 0 0 0 1;0<=xi,yi<=1 0 0 0 0 0,0<=a,b<=1 0 0 0 0 0.
保证答案存在。
【题解】
尼玛
被这个恶心的式子坑了
一眼看上去 没法做
莫比乌斯反演 不会做这个式子然后果断放弃
尼玛经dalao说这个题就是个sb题
一看式子!!
!!!
如果去掉下取整就是个sb题
出题人的锅(唔)
懒得写了
题目背景
闻道故园花陌,今年奼紫嫣红。扬帆直渡水千重。东君何解意,送我一江风。
还是昔时庭院,终得醉卧花丛。残更惊醒月明中。流光如旧岁,多少梦成空。
题目描述
#define goodcatdog gcd
#define important i
#define judge j
神说 每个梦想就是一轮月亮,高高地孤寂地挂在清冷的夜空。为了让月亮不再孤独,灯神给她找了好多好多伴儿。现在天空上就有n轮月亮啦!
月亮在天上跟相邻的伙伴玩够以后,就开始想要去找其他月亮玩,灯神为了让月亮变得更聪明,下了一个规定:若两个月亮编号分别为important和judge,若important ,judge满足goodcatdog(important,judge)>β,则important,judge就可以联通。
现在来了一个垃圾神叫J乌拉,他想知道编号为x的月亮和编号为y的月亮是否联通,聪明的你能帮帮它吗????
输入描述
第一行为一个数T,表明有T组测试数据
四个个数n,β,x,y;
输出描述
若x,y联通,输出YeS,否则输出No
样例输入
1
12 2 8 9
样例输出
YeS
数据范围:
对于30%的数据 n<=10
对于50%的数据 n<=15
对于第六个测试点 n<=65432
对于第七,八个测试点 n<=999999
对于100%的数据 β<=n<=1000000;T<=4;x,y<=n<=10000000
【题解】
从b开始到n暴力枚举gcd,然后把gcd的倍数连起来就好了
如果是我就给m组询问来卡输出yes或no的骗分
只给一组x.y让我一直往x,y分解上想浪费了不少时间
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b)) const long long MAXN = 100000 + 10; const long long MAXGA = 20 + 5; inline void swap(long long &x, long long &y) { long long tmp = x;x = y;y = tmp; } inline void read(long long &x) { x = 0;char ch = getchar(), c = ch; while(ch < '0' || ch > '9')c = ch, ch = getchar(); while(ch <= '9' && ch >= '0')x = x * 10 + ch - '0', ch = getchar(); if(c == '-')x = -x; } long long dp[MAXN][MAXGA], n, value[MAXN], deep[MAXN], len, head[MAXN], cnt, b[MAXN], bb[MAXN]; struct Edge { long long u,v,next; Edge(long long _u, long long _v, long long _next){u = _u;v = _v;next = _next;} Edge(){} }edge[MAXN << 1]; inline void insert(long long a, long long b) { edge[++cnt] = Edge(a,b,head[a]); head[a] = cnt; } void dfs(long long u) { b[u] = 1; deep[u] = 0; for(register long long i = 0;i <= len;++ i) dp[u][i] = value[u]; for(register long long pos = head[u];pos;pos = edge[pos].next) { long long v = edge[pos].v; if(b[v]) continue; dfs(v); deep[u] = max(deep[u], deep[v] + 1); for(register long long i = 1;i <= len;++ i) dp[u][i] += dp[v][i - 1]; } return; } void dfs2(long long u) { bb[u] = 1; for(register long long pos = head[u];pos;pos = edge[pos].next) { long long v = edge[pos].v; if(bb[v])continue; for(register long long i = len;i >= 2;-- i) dp[v][i] += dp[u][i - 1] - dp[v][i - 2]; dp[v][1] += dp[u][0]; dfs2(v); } } int main() { freopen("young.in", "r", stdin); freopen("young.out", "w", stdout); read(n);read(len); read(n);read(len); for(register long long i = 1;i < n;++ i) { long long tmp1, tmp2; read(tmp1), read(tmp2); insert(tmp1, tmp2); insert(tmp2, tmp1); } for(register long long i = 1;i <= n;++ i) read(value[i]); dfs(1); dfs2(1); for(register long long i = 1;i <= n;++ i) printf("%lld\n", dp[i][len]); fclose(stdin); fclose(stdout); return 0; }
T2
T3 春江花月夜(防AK好题)
题目背景
春江潮水连海平,海上明月共潮生。滟滟随波千万里,何处春江无月明!
江流宛转绕芳甸,月照花林皆似霰;空里流霜不觉飞,汀上白沙看不见。
江天一色无纤尘,皎皎空中孤月轮。江畔何人初见月?江月何年初照人?
人生代代无穷已,江月年年只相似。不知江月待何人,但见长江送流水。
白云一片去悠悠,青枫浦上不胜愁。谁家今夜扁舟子?何处相思明月楼?
可怜楼上月徘徊,应照离人妆镜台。玉户帘中卷不去,捣衣砧上拂还来。
此时相望不相闻,愿逐月华流照君。鸿雁长飞光不度,鱼龙潜跃水成文。
昨夜闲潭梦落花,可怜春半不还家。江水流春去欲尽,江潭落月复西斜。
斜月沉沉藏海雾,碣石潇湘无限路。不知乘月几人归,落月摇情满江树。
题目描述
小春和小江是两个很好的朋友,他们都信奉灯神教。有一天,小春突发奇想,学习起了莫比乌斯反演,恰好在这天,小江也突发奇想,学起了快速傅里叶变换。可是莫比乌斯反演比快速傅里叶变换字数多啊,于是乎小春就比小江学得快。
小春非常得意,利用所学知识给小江出了一倒防AK好题:已知在这个宇宙中有n个太阳和n个月亮,由于宇宙之神--灯神是一个喜爱数学的神,所以他就规定了n属于数域P。灯神把整个宇宙抽象成了一个二维平面坐标系,对于每个太阳和每个月亮,都有自己的一个坐标xi,yi 坐标也是数域成员。如果一个太阳想去找一个月亮玩,那么他只能往东面或者南面飞。月亮是不能动哒!飞行单位距离为1,他就会消耗的花费(其中p,q分别为斐波那契数列第100007 100000007项对1000000007取模的值) 灯神想知道怎么让每个太阳都能找到某个月亮玩使得花费最小(一个月亮只能被找一次)?小江一下子就被难倒了,询问聪明的你,那么聪明年轻帅气漂亮颜值居高无比的你能帮助他解决这个问题吗?(保证答案在long int的十分之一范围内)。
题目提示
1.数域定义 设F是一个数环(设S是复数集的非空子集,如果S中的数对任意两个数的和、差、积仍属于S,则称S是一个数环。),如果对任意的a,b∈F而且a≠0, 则b/a∈F;则称F是一个数域。著名的域有:Klein四元域。
数域性质 任何数域都包含有理数域Q。即Q是最小的数域。
证明:F必有一个非零元素a.由于F为数环,所以0 = a - a属于F1 = a/a 属于F0和1都属于F那么2 = 1+13 = 2+1。。。。自然数N都属于F-n = 0 - n 也属于F故整数集合Z都属于F那么a/b 也属于F(其中a,b为整数)这样,任何一个数域都包含Q
2.莫比乌斯反演
卷积:令d|n表示d能整除n,比如 2|4 (=.=)定义关于整数的函数F(n)然后定义G(n)=Σ(F(d)) (其中d|n)
反演原式:G(n)=Σ(F(d))(其中d|n)
反演公式:F(n)=Σ(U(n/d)*G(d))这里U是莫比乌斯函数,他是每一项 G(d) 的系数。
3.欧拉函数:
其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。
输入描述
第一行为一个正整数n,表示天月亮的数量(太阳的数量与之相等)。接下来n行,每行两个整数xi和yi,表示太阳的坐标。规定向东向北为x,轴正方向。接下来n行,每行两个数a和b,示月亮的坐标。
输出描述
第一行包含一个数,表示最小的花费。答案对斐波那契数列的第100000007项取模。
样例输入
3
3 5
1 2
4 3
6 3
5 2
2 1
样例输出
9
数据范围
对于30%的数据 n<=300
对于第四,五个测试点 n<=20000
对于第六,七,八个测试点 n<=25000
对于100%的数据 n<=3 0 0 0 1;0<=xi,yi<=1 0 0 0 0 0,0<=a,b<=1 0 0 0 0 0.
保证答案存在。
发奇想,学起了快速傅里叶变换。可是莫比乌斯反演比快速傅里叶变换字数多啊,于是乎小春就比小江学得快。
小春非常得意,利用所学知识给小江出了一倒防AK好题:已知在这个宇宙中有n个太阳和n个月亮,由于宇宙之神--灯神是一个喜爱数学的神,所以他就规定了n属于数域P。灯神把整个宇宙抽象成了一个二维平面坐标系,对于每个太阳和每个月亮,都有自己的一个坐标xi,yi 坐标也是数域成员。如果一个太阳想去找一个月亮玩,那么他只能往东面或者南面飞。月亮是不能动哒!飞行单位距离为1,他就会消耗
的花费(其中p,q分别为斐波那契数列第100007 100000007项对1000000007取模的值) 灯神想知道怎么让每个太阳都能找到某个月亮玩使得花费最小(一个月亮只能被找一次)?小江一下子就被难倒了,询问聪明的你,那么聪明年轻帅气漂亮颜值居高无比的你能帮助他解决这个问题吗?(保证答案在long int的十分之一范围内)。
题目提示
1.数域定义 设F是一个数环(设S是复数集的非空子集,如果S中的数对任意两个数的和、差、积仍属于S,则称S是一个数环。),如果对任意的a,b∈F而且a≠0, 则b/a∈F;则称F是一个数域。著名的域有:Klein四元域。
数域性质 任何数域都包含有理数域Q。即Q是最小的数域。
证明:F必有一个非零元素a.由于F为数环,所以0 = a - a属于F1 = a/a 属于F0和1都属于F那么2 = 1+13 = 2+1。。。。自然数N都属于F-n = 0 - n 也属于F故整数集合Z都属于F那么a/b 也属于F(其中a,b为整数)这样,任何一个数域都包含Q
2.莫比乌斯反演
卷积:令d|n表示d能整除n,比如 2|4 (=.=)定义关于整数的函数F(n)然后定义G(n)=Σ(F(d)) (其中d|n)
反演原式:G(n)=Σ(F(d))(其中d|n)
反演公式:F(n)=Σ(U(n/d)*G(d))这里U是莫比乌斯函数,他是每一项 G(d) 的系数。
3.欧拉函数:
其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。
输入描述
第一行为一个正整数n,表示天月亮的数量(太阳的数量与之相等)。接下来n行,每行两个整数xi和yi,表示太阳的坐标。规定向东向北为x,轴正方向。接下来n行,每行两个数a和b,示月亮的坐标。
输出描述
第一行包含一个数,表示最小的花费。答案对斐波那契数列的第100000007项取模。
样例输入
3
3 5
1 2
4 3
6 3
5 2
2 1
样例输出
9
数据范围
对于30%的数据 n<=300
对于第四,五个测试点 n<=20000
对于第六,七,八个测试点 n<=25000
对于100%的数据 n<=3 0 0 0 1;0<=xi,yi<=1 0 0 0 0 0,0<=a,b<=1 0 0 0 0 0.
保证答案存在。
【题解】
尼玛
被这个恶心的式子坑了
一眼看上去 没法做
莫比乌斯反演 不会做这个式子然后果断放弃
尼玛经dalao说这个题就是个sb题
一看式子!!
!!!
如果去掉下取整就是个sb题
出题人的锅(唔)
懒得写了
相关文章推荐
- JZOJ 5183. 【NOIP2017提高组模拟6.29】小T的钢琴
- 【JZOJ3893】【NOIP2014模拟10.25A组】画矩形
- 【JZOJ 5394】【NOIP2017提高A组模拟10.5】Ping
- JZOJ 4675. 【NOIP2016提高A组模拟7.21】Double-row
- [NOIP模拟]xor
- JZOJ5400. 【NOIP2017提高A组模拟10.7】Repulsed
- JZOJ5400. 【NOIP2017提高A组模拟10.7】Repulsed 树型DP+贪心
- [noip模拟2017.7.3]
- Day 5 jzoj 4311. 【NOIP2015模拟11.4】统一天下
- 3453. 【NOIP2013中秋节模拟】连通块(connect)
- 【NOIP2013模拟11.4A组】游乐场
- 3929. 【NOIP2014模拟11.6】创世纪
- jzoj 2542. 【NOIP2011模拟9.1】统计
- 【NOIP模拟考一】组合数学 day1 third 子集
- [NOIP模拟]beautiful
- JZOJ100041. 【NOIP2017提高A组模拟7.12】列车调度
- jzoj 2548. 【NOIP2011模拟9.4】最大正方形
- JZOJ 4693 疯狂的火神【NOIP2016提高A组模拟8.14】
- 【NOIP2008】【模拟】T1 笨小猴 题解
- [NOIP模拟] 匹配