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分解上想浪费了不少时间

 #include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <ctime>
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b)) inline void swap(int &x, int &y)
{
long long tmp = x;x = y;y = tmp;
} inline void read(int &x)
{
x = ;char ch = getchar(), c = ch;
while(ch < '' || ch > '')c = ch, ch = getchar();
while(ch <= '' && ch >= '')x = x * + ch - '', ch = getchar();
if(c == '-')x = -x;
} const int INF = 0x3f3f3f3f;
const int MAXN = + ; int prime1[MAXN], prime2[MAXN], cnt1[MAXN], cnt2[MAXN], tot1, tot2, n, f1, f2, b, x, y, t, tmp, fa[MAXN]; int find(int x)
{
return x == fa[x] ? x : fa[x] = find(fa[x]);
} int gcd(int a, int b)
{
return !b ? a : gcd(b, a % b);
} int main()
{
read(t);
for(;t;--t)
{
read(n), read(b), read(x), read(y);
for(register int i = ;i <= n;++ i)fa[i] = i;
for(register int i = max(b + , );i <= n;++ i)
{
for(register int j = i;j <= n;j += i)
{
f1 = find(j), f2 = find(i);
fa[f1] = f2;
}
}
f1 = find(x), f2 = find(y);
if(f1 == f2)printf("YeS\n");
else printf("No\n");
}
fclose(stdin);
fclose(stdout);
return ;
}

T1

T2 长命女

题目背景

夏夜宴,绿酒一杯歌一遍

再拜陈三愿:

一愿郎君千岁;

二愿妻妾常健;

三月如同梁上雕燕,

你我常相见

题目描述

给定一个r*c的矩阵,在这个矩阵中有...一棵树!这棵树上有n间小屋,每间小屋都有v[i]个松果,两个小屋之间有一条双向树枝相连。

小浪是一只特别懒的小松鼠,他希望知道从每间小屋向外扩展γ步范围内最多能拿到多少松果,不聪明的你可以帮帮他吗????

输入描述

第一行 r,c

第二行 n,γ

以下n-1行 x,y有连边

最后一行n个数 表示每个小屋的松果数目。

输出描述

n行,每行为第i个小屋最多能拿到多少松果

样例输入

8 8

6 2

5 1

3 6

2 4

2 1

3 2

1

2

3

4

5

6

样例输出

15

21

16

10

8

11

数据范围

对于10%的数据:n<=10,r<=c<=50

对于40%的数据:n<=1000

对于100%的数据:n<=100000;0<=v[i]<=1000;γ<=20;r<=1000000,c<=1000000

【题解】

这个题比较显然

dp[i][j]表示从i向i的子树走j步的价值

我们考虑如何往上走

从根节点往下DP即可

注意转移顺序

 #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 = + ;
const long long MAXGA = + ; inline void swap(long long &x, long long &y)
{
long long tmp = x;x = y;y = tmp;
} inline void read(long long &x)
{
x = ;char ch = getchar(), c = ch;
while(ch < '' || ch > '')c = ch, ch = getchar();
while(ch <= '' && ch >= '')x = x * + ch - '', 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 << ]; 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] = ;
deep[u] = ;
for(register long long i = ;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] + );
for(register long long i = ;i <= len;++ i)
dp[u][i] += dp[v][i - ];
}
return;
} void dfs2(long long u)
{
bb[u] = ;
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 >= ;-- i)
dp[v][i] += dp[u][i - ] - dp[v][i - ];
dp[v][] += dp[u][];
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 = ;i < n;++ i)
{
long long tmp1, tmp2;
read(tmp1), read(tmp2);
insert(tmp1, tmp2);
insert(tmp2, tmp1);
}
for(register long long i = ;i <= n;++ i)
read(value[i]);
dfs();
dfs2();
for(register long long i = ;i <= n;++ i)
printf("%lld\n", dp[i][len]);
fclose(stdin);
fclose(stdout);
return ;
}

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题

出题人的锅(唔)

懒得写了

NOIP模拟17.10.12的更多相关文章

  1. NOIP模拟17.9.22

    NOIP模拟17.9.22 前进![问题描述]数轴的原点上有一只青蛙.青蛙要跳到数轴上≥

  2. NOIP模拟 17.8.18

    NOIP模拟17.8.18 A.小菜一碟的背包[题目描述]Blice和阿强巴是好朋友但萌萌哒Blice不擅长数学,所以阿强巴给了她一些奶牛做练习阿强巴有 n头奶牛,每头奶牛每天可以产一定量的奶,同时也 ...

  3. NOIP模拟 17.8.14

    NOIP模拟17.8.14 (天宇哥哥考察细心程度的题) [样例解释]如果删去第一个 1:在[3,1,2]中有 3 个不同的数如果删去 3:在[1,1,2]中有 2 个不同的数如果删去第二个 1:在[ ...

  4. NOIP模拟 17.8.20

    NOIP模拟17.8.20 A.阶乘[题目描述]亲爱的xyx同学正在研究数学与阶乘的关系,但是他喜欢颓废,于是他就制作了一个和阶乘有关系的数学游戏:给出两个整数 n,m,令 t = !n,每轮游戏的流 ...

  5. NOIP模拟 17.8.15

    NOIP模拟17.8.15 A 债务文件名 输入文件 输出文件 时间限制 空间限制debt.pas/c/cpp debt.in debt.out 1s 128MB[题目描述]小 G 有一群好朋友,他们 ...

  6. NOIP模拟 17.8.16

    NOIP模拟17.8.16 A 债务文件名 输入文件 输出文件 时间限制 空间限制debt.pas/c/cpp debt.in debt.out 1s 128MB[题目描述]小 G 有一群好朋友,他们 ...

  7. NOIP模拟17.9.21

    NOIP模拟17.9.21 3 58 145 201 161.5 样例输出21.6 数据规模及约定对于40% 的数据,N <= 20对于60% 的数据,N <= 1000对于100% 的数 ...

  8. NOIP模拟 17.8.17

    NOIP模拟17.8.17 A 小 G 的字符串文件名 输入文件 输出文件 时间限制 空间限制str.pas/c/cpp str.in str.out 1s 128MB[题目描述]有一天,小 L 给小 ...

  9. 2019.7.29 NOIP模拟测试10 反思总结【T2补全】

    这次意外考得不错…但是并没有太多厉害的地方,因为我只是打满了暴力[还没去推T3] 第一题折腾了一个小时,看了看时间先去写第二题了.第二题尝试了半天还是只写了三十分的暴力,然后看到第三题是期望,本能排斥 ...

随机推荐

  1. font-size:100%

    font-size:100%;设置字体属性为默认大小,是相对于浏览器默认字体大小或继承body设定的字体大小来说的. 例如: h1,h2,h3,h4,h5,h6 {font-size:100%;fon ...

  2. C语言源代码——计算任何一天是星期几

    代码写的不严谨. 网上也有很多计算任何一天是星期几的C语言源代码,不过,有些代码含有一点点小错误.像闰年的分辨啊,或者是每个月的天数,再或者星期的计算公式,都是比较细微的环节,出一点错误都有可能导致结 ...

  3. 如何撤销Git操作?

    本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:如何撤销Git操作?: Git 版本管理时,往往需要撤销某些操作. 本文介绍几种最主要的情况,给出详细的解释.更多的命令可以参考< ...

  4. Django项目:CRM(客户关系管理系统)--57--47PerfectCRM实现CRM客户报名流程02

    图片另存为  16*16  名字修改为      bpm_logo.jpg /*! *bootstrap.js * * Bootstrap v3.3.7 (http://getbootstrap.co ...

  5. JavaSE_02_Thread类01

    1.1 并发与并行 并发:指两个或多个事件在同一个时间段内发生. 这在单 CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分时交替运 ...

  6. visual studio 2013 打开失败 ,报错:未能完成操作,不支持此接口

    因为从新安装了.net 4.0版本,再打开visual studio 2013时,提示报错:未能完成此操作,不支持接口 解决办法:从microsoft官网下载了最新4.5版本进行安装后.即可成功打开.

  7. JS创建和存储 cookie的一些方法

    在js中cookie的操作与存储及清除cookie都与时间有关,我们只要把cookie过期时间进行有效的设置我们就可以控制它的存储了,下面我来给大家总结一下js中cookie的一些使用技巧 创建和存储 ...

  8. linux学习(一)-----vm、centos安装

    安装vm和Centos 1)先安装 virtual machine ,vm12 2)再安装 Linux (CentOS 6.8) 3)原理示意图,这里我们画图说明一下 VM 和 CentOS 的关系. ...

  9. springboot核心技术(四)-----Docker、数据访问、自定义starter

    Docker 1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使 用这个镜 ...

  10. if _name_ == " _main_"

    1.作用 py文件有2种使用方法,第1是自己本脚本自己独立执行:第2是被import到其他文件脚本中执行. if  _name_ == " _main_" 该语句控制其他下一步的脚 ...