1.MM的数学作业

【题目大意】

今天,MM在上数学课,数学课的主题是函数。讲完以后老师留了一个家庭作业,让同学们回家思考。题目如下:

定义一个函数,F(x)表示x转成二进制后,二进制中“1”的个数。比如F(279)=5,因为(279)10=( 100010111)2,其中有5个“1”。

现在有一个序列,已知X0 = 0,Xi=F(Xi-1)*A+B。老师的问题是求这个序列第K个是多少。

【输入格式】

输入3个整数,A,B,K,定义如上所述。

【输出格式】

输出只有一行,序列的第K个的值。

【样例输入】

1

7

2

【样例输出】

10

【数据范围】

0<=A,B<= 1,000,000

30% 数据1<=K<=1,000,000

100% 数据1<=K<=1,000,000,000

题解:

考虑到f函数的值非常少,而且这个数的大小只和f有关,所以

可以记录一下循环节,节约时间

代码:

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int a[30000005],A,B,n;
int f(int x)
{int num=0;while (x){if (x%2)num++;x/=2;}return num;
}
int main()
{freopen("homework.in","r",stdin);freopen("homework.out","w",stdout);scanf("%d%d%d",&A,&B,&n);int now=0;for (int i=1;i<=n;i++){now=f(now)*A+B;if (a[now]){int p=now; for (int j=1;j<=(n-i)%(i-a[now]);j++)p=f(p)*A+B;printf("%d\n",p);return 0;}a[now]=i; }printf("%d\n",now);
}

2.香蕉树

【题目大意】

MM家的后院种了一棵香蕉树,由于树上的香蕉过多,导致整棵树不漂亮了,所以她需要通过摘香蕉来修整这棵树。但是,如果她摘了过多的香蕉就会使,整棵树太稀疏,不够饱满,所以她最多只能摘M个香蕉。香蕉是长在树枝上的,切每条树枝上至少保留Ci个。MM希望摘完香蕉后,使得根到最沉的叶子最轻。轻重的衡量就是,根到某个叶子路径上还剩下的香蕉总数。树根为1号点。

【输入格式】

第一行两个整数N,M,表示树的节点个数,她最多能摘的香蕉个数。

接下来N-1行,每行四个整数Xi,Yi,Pi,Ci,表示第i个树枝连接的两个端点 ,以及这条树枝上的香蕉总数和至少应该保留的香蕉数。

【输出格式】

输出只有一行,表示根到最沉的叶子最轻是多少。

【样例输入】

3 200

1 2 200 100

2 3 450 250

【样例输出】

450

【数据范围】

1<=N<=100000

0<=M<=1000000

0<=Pi,Ci<=10000

题解:

二分答案,贪心。

首先肯定是能往上就往上

而且叶子节点最后的重量肯定是最大的

那么将叶子节点的重量排序,然后看看它的祖先是不是被之前覆盖过

覆盖过就可以节约了

代码:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=200005;
int n,m,x,y,u,v,ne[N],fi[N],zz[N],sl[N],ql[N],can[N],zhong[N];
int fa[N],num,ye[N],flag[N],f[N][21];
void jb(int x,int y,int u,int v)
{ne[++num]=fi[x];fi[x]=num;zz[num]=y;sl[num]=u;ql[num]=v;
}
void dfs(int x,int y,int z,int s)
{fa[x]=y; zhong[x]=z;can[x]=s;for (int i=fi[x];i;i=ne[i])if (y!=zz[i])dfs(zz[i],x,z+sl[i],s+ql[i]);if (!ne[fi[x]]&&zz[fi[x]]==y)ye[++num]=x;
}
int find(int x)
{for (int j=19;j>=0;j--)if (!flag[f[x][j]])x=f[x][j];if (!flag[x])x=f[x][0]; return x;
}
bool cmp(int x,int y)
{return zhong[x]>zhong[y];
}
int pd(int x)
{int p=0;memset(flag,0,sizeof flag);flag[0]=flag[1]=1;for (int i=1;i<=num;i++){if (zhong[ye[i]]<=x)return 1;if (zhong[ye[i]]-can[ye[i]]>x)return 0;int l=find(ye[i]);if (can[l]<zhong[ye[i]]-x)p=p-can[l]+zhong[ye[i]]-x;if (p>m)return 0;l=ye[i];while (l!=1){if (flag[l])break;flag[l]=1;l=fa[l];}}return 1;
}
int main()
{freopen("banana.in","r",stdin);freopen("banana.out","w",stdout);scanf("%d%d",&n,&m);for (int i=1;i<n;i++){scanf("%d%d%d%d",&x,&y,&u,&v);jb(x,y,u,u-v);jb(y,x,u,u-v);}num=0; dfs(1,0,0,0);sort(ye+1,ye+num+1,cmp);for (int i=1;i<=n;i++)f[i][0]=fa[i];for (int i=1;i<20;i++)for (int j=1;j<=n;j++)f[j][i]=f[f[j][i-1]][i-1];int l=0,r=1e9;while (l<r){int mid=(l+r)/2;if (!pd(mid))l=mid+1;else r=mid;} printf("%d",l);
} 

3.迷路

【问题描述】

Amber在有向图中迷路了。

该有向图有 N 个节点,Amber从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1。

现在给出该有向图,你能告诉Amber总共有多少种不同的路径吗?

注意:Amber不能在某个节点逗留,且通过某有向边的时间严格为给定的时间。

【输入格式】

输入文件road.in第一行包含两个整数,N T。

接下来有 N 行,每行一个长度为 N 的字符串。

第i行第j列为'0'表示从节点i到节点j没有边。

为'1'到'9'表示从节点i到节点j需要耗费的时间。

【输出格式】

输出文件road.out包含一个整数,可能的路径数,这个数可能很大,只需输出这个数除以2009的余数。

【输入样例一】

2 2

11

00

【输出样例一】

1

【样例解释一】

0->0->1

【输入样例二】

5 30

12045

07105

47805

12024

12345

【输出样例二】

852

【数据规模和约定】

30%的数据,满足 2 <= N <= 5 ; 1 <= T <= 30 。

100%的数据,满足 2 <= N <= 10 ; 1 <= T <= 1000000000 。

题解:

看到那么大的T,一看就是矩阵

构造(9*n)*(9*n)的矩阵

快速幂T次

矩阵构造看代码。。。

代码:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=12;
const int M=2009;
char s[N];
int T,a[N][N],n;
struct zz
{int a[N*N][N*N];
}x;
zz cf(zz x,zz y)
{zz z;memset(z.a,0,sizeof z.a);for (int i=1;i<=9*n;i++)for (int j=1;j<=9*n;j++)for (int k=1;k<=9*n;k++)(z.a[i][j]+=(x.a[i][k]*y.a[k][j]))%=M;return z;
}
void gouzao()
{for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)if (a[i][j]!=-1)x.a[i][(a[i][j]-1)*n+j]=1;for (int i=n+1;i<=9*n;i++)x.a[i][i-n]=1;
}
void ksm(int k)
{zz y;memset(y.a,0,sizeof y.a);for (int i=1;i<=9*n;i++)y.a[i][i]=1;for (;k;k/=2,x=cf(x,x))if (k%2)y=cf(y,x);x=y;
}
int main()
{freopen("road.in","r",stdin);freopen("road.out","w",stdout); scanf("%d%d",&n,&T);for (int i=1;i<=n;i++){scanf("%s",s+1);for (int j=1;j<=n;j++)if (s[j]!='0')a[i][j]=s[j]-48;else a[i][j]=-1; }gouzao();ksm(T);printf("%d",x.a[1][n]);
} 

转载于:https://www.cnblogs.com/xuanyiming/p/7544704.html

纪念第一次ak。。。相关推荐

  1. 【纪念第一次AK(泪目)】第一届ACC(AcWing Cup)全国高校联赛(初赛)(Java版)

    ACC 一.4376. 数圈圈(简单) 二.4377. 农田灌溉(中等) 三.4378. 选取数对(困难) 一.4376. 数圈圈(简单) 暴力就行,唯一要注意的是Java的Integer.toStr ...

  2. 金山中学 rugular SRM 04 ——纪念我的第一次Ak

    虽然只是一场比较简单的比赛 但奈何我也比较弱啊.... T1 一道计算概率的题目 T SRM 04 描述 给个长度为 n 的数列,每次操作能将数列打乱(RandomShuffle),问在期望下需要多少 ...

  3. 2020年中青杯全国大学生数学建模竞赛题目【本科组】——纪念第一次训练模型!

    一.题目: B题(本科生组):股指与国家经济自1990年12月19日上海证券交易所挂牌成立,经过30年的快速发展,中国证券市场已经具有相当规模,在多方面取得了举世瞩目的成就,对国民经济的资源配置起着日 ...

  4. 谨纪念第一次面试,电话面试,百度一面。。

    期中考试最后一科前收到一个电话说明天百度电话面试,当时有点激动,马上准备准备,多好的机会当然要好好把握..之后上了百度实习生招聘官网,发现自己投的简历'运维部_实习平台研发Java工程师'被挤到下面去 ...

  5. 查看你QQ的注册时间,纪念第一次的QQ

    今天无意在网上瞎逛,看到了QQ出了一个10年QQ纪念页面, [url]http://10.qq.com/[/url],大家可以上去登陆查看自己的QQ注册日期了,哇,没想到我的QQ是02年注册的,挺早的 ...

  6. 纪念第一次青海湖之行泡汤

    七月不远 ----给青海湖请熄灭我的爱情 海子 七月不远 性别的诞生不远 爱情不远----马鼻子下 湖泊含盐 因此青海湖不远 湖畔一捆捆蜂箱 使我显得凄凄迷人 青草开满鲜花. 青海湖上 我的孤独如天堂 ...

  7. 薛猫猫杯 成语接龙(纪念第一次一血)

    小Z和大Z最近沉迷于成语接龙游戏,他们准备把成语接龙的规则修改一下.规则是这样的:有两个字符串,如果第一个字符串是第二个字符串的子串(也就是第一个字符串在第二个字符串中可以找到),那么第一个字符串后面 ...

  8. 今天第一次开通blog

    纪念第一次开通 转载于:https://www.cnblogs.com/struggle-star/p/10960491.html

  9. noip2018——题解总结

    近期正在疯狂复习某些东西,这篇博客尽量年底更完--(Day2T2除外) 好了,所有的希望都破灭了,原来这就是出题人的素质.--一个被欺骗的可怜 $OIer$ 人生中倒数第三次 $noip$ (Mayb ...

最新文章

  1. mysql学习--基本使用
  2. Swift5之网易云音乐页面搭建
  3. java接口课程_用java定义一个接口,用于查询课程
  4. maven 添加本地库
  5. python install causes ModuleNotFoundError: No module named ‘_swigfaiss‘
  6. CSS中meta标签的viewport
  7. C++STL之fill()函数使用方法
  8. 2017CCPC哈尔滨 F:Permutation(构造)
  9. spring mvc 学习 转载
  10. 周志华----机器学习
  11. 启发式搜索求解八数码问题(Java实现,八数码小项目已开源)
  12. [linux]linux mint zsh安装和配置
  13. 诀窍|Callnovo助中国电动自行车成为大洋彼岸街头美丽风景线
  14. 中望3d快捷键命令大全_室内设计3D快捷键 CAD命令
  15. 腾讯云通信IM集成踩坑记
  16. 五十九秒的秒表C语言程序,单片机试验00-59秒计时器(利用软件延时)
  17. 抖音表白程序Python版,明人不说暗话,我喜欢你
  18. [原创]服装鞋帽企业配送中心优化方案 WMS仓储管理系统
  19. Android高斯模糊、高斯平滑(Gaussian Blur)【2】
  20. 图解IFRS9 金融工具(2)金融工具基本概念

热门文章

  1. eve-ng模拟器安装在部署使用
  2. Silverlight 教程第二部分:使用布局管理 (木野狐译) 1
  3. 计算机三级网络技术最全知识点总结六
  4. 软件需求分析与IT创新
  5. 网络最大流中一般增广路算法(标号法)
  6. 曙光服务器amd芯片,AMD六核体验 曙光Ar-H服务器首发评测.docx
  7. 今年是嵌入式香还是互联网香?
  8. Comparing the Effects of DNS, DoT, and DoH
  9. AttributeError: module ‘keras_applications‘ has no attribute
  10. mac mysql.sock_Mac OS 下 mysql 找不到 mysql.sock 的解决过程