常州day3
Task1
小 W 得到了一堆石子,要放在 N 条水平线与 M 条竖直线构成的网格的交点上。
因为小 M 最喜欢矩形了, 小 W 希望知道用 K 个石子最多能找到多少四边平行于坐标轴的
长方形,它的四个角上都恰好放着一枚石子。
对于 100%的数据:N<=30000,保证任意两点不重合,K<=N*M
简单题,枚举即可
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,m,k,ans,now,a,b,c,p,q;
int main(){
freopen("rectangle.in","r",stdin);
freopen("rectangle.out","w",stdout);
cin>>n>>m>>k;
for(int i=;i<=n;i++){
a=i;b=k/i;c=k%i;now=p=q=;
if(b>m) continue;
now=(a*(a-)/)*(b*(b-)/);
if(a<n){
if(c>b) continue;
p=now+c*(c-)/*a;
}
if(b<m){
if(c>a) continue;
q=now+c*(c-)/*b;
}
ans=max(ans,max(p,q));
}
cout<<ans;
return ;
}
Task 2
小 W 发现了一个神奇的数列: 这就是著名的 Fibonacci
Sequence = =!。
众所周知,小 M 的数学超级超级好,于是给小 W 出了一道题:
给小 W 两个数 X,Y,其中 X ≤ Y≤ 2^31−1。
小 W 任务就是求出 Fibonacci 数列第 X~Y 项的和除以 10000 的余数。
然而小 W 是数学战五渣,于是只能把这个任务交给机智的你啦。
对于 100%的数据:T<=1000,Y<=2^31-1
简单题,矩阵快速幂裸题
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#define il inline
using namespace std;
const int mod=;
int base[][],ans[][],tmp[][],s,t,T;
il void mul(int a[][],int b[][],int c[][]){
memset(tmp,false,sizeof(tmp));
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
tmp[i][j]=(tmp[i][j]+a[i][k]*b[k][j])%mod;
for(int i=;i<;i++)
for(int j=;j<;j++)
c[i][j]=tmp[i][j];
}
il int est(int n){
if(n==) return ;
if(n==) return ;
if(n==) return ;
memset(base,,sizeof(base));
memset(ans,,sizeof(ans));
ans[][]=ans[][]=ans[][]=;
base[][]=base[][]=base[][]=base[][]=base[][]=base[][]=;
for(int pow=n-;pow;pow>>=){
if(pow&) mul(ans,base,ans);
mul(base,base,base);
}
return (ans[][]+ans[][]+ans[][]*)%mod;
}
il void init(){
scanf("%d%d",&s,&t);
printf("%d\n",(mod+est(t)-est(s-))%mod);
}
int main(){
freopen("fibonacci.in","r",stdin);
freopen("fibonacci.out","w",stdout);
scanf("%d",&T);
for(int i=;i<=T;i++) init();
return ;
}
Task 3
小 W 千辛万苦做出了数列题,突然发现小 M 被困进了迷宫里。
迷宫是一个有 N(2≤N≤1000)个顶点 M(N−1≤M≤N∗(N − 1)/2 ) 条边的无向连通图。
设 dist1[i]表示在这个无向连通图中, 顶点 i 到顶点 1 的最短距离。
为了解开迷宫,现在要求小 W 在这个图中删除 M − (N − 1)条边,使得这个迷宫变成一
棵树。设 dist2[i]表示在这棵树中,顶点 i 到顶点 1 的距离。
小 W 的任务是求出有多少种删除方案,使得对于任意的 i,满足 dist1[i]=dist2[i]。
快点帮助小 W 救出小 M 吧!
对于 100%的数据:2≤N≤1000
最短路径树计数
预处理最短路
因为每个节点链接到从1出发的最短路的距离相等节点是等价的
所以直接统计即可
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<algorithm>
#include<math.h>
#include<string>
#include<string.h>
#include<queue>
#define il inline
using namespace std;
const int N=;
int n,m,M=,inq[N],d[N],p[N][N],g[N];
long long ans=;
queue<int> q;
struct edge{int next,to,val;
} e[];
struct data{int dist,id;
} b[N];
il void addedge(int x,int y,int z){
e[++M]=(edge){g[x],y,z};g[x]=M;
}
il bool cmp(data a,data b){
return a.dist<b.dist;
}
int main(){
freopen("treecount.in","r",stdin);
freopen("treecount.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n+;i++)
for(int j=;j<=n+;j++)
p[i][j]=p[j][i]=(<<);
for(int i=,x,y,z;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
addedge(x,y,z);
addedge(y,x,z);
p[x][y]=p[y][x]=z;
}
for(int i=;i<=n;i++) d[i]=(<<);
memset(inq,false,sizeof(inq));
d[]=;q.push();
while(!q.empty()){
int h=q.front();q.pop();inq[h]=false;
for(int i=g[h];i;i=e[i].next)
if(d[e[i].to]>d[h]+e[i].val){
d[e[i].to]=d[h]+e[i].val;
if(!inq[e[i].to]){
inq[e[i].to]=true;
q.push(e[i].to);
}
}
}
for(int i=;i<=n;i++){
b[i].dist=d[i];
b[i].id=i;
}
sort(b+,b+n+,cmp);
for(int i=;i<=n;i++){
int cnt=;
for(int j=;j<i;j++)
if(b[j].dist+p[b[j].id][b[i].id]==b[i].dist)
cnt++;
ans=ans*cnt%2147483647ll;
}
cout<<ans;
return ;
}
常州day3的更多相关文章
- [日常训练]常州集训day3
T1 Description 有$K$个石子,石子只能放在$N$条水平线与$M$条竖直线构成的网格的交点上. 求用$K$个石子最多能找到多少四边平行于坐标轴的长方形,它的四个角上都恰好放着一枚石子. ...
- 常州培训 day3 解题报告
第一题: 给出数轴正半轴上N个点的坐标和其权值,给出初始体力值M,人一开始在位置0,体力值会随着走过路程的增加而增加,走多少个单位的路消耗多少体力值.到每个点可以打掉,消耗的体力值就是其权值.求 最多 ...
- 【2016常州一中夏令营Day3】
小 W 摆石子[问题描述]小 W 得到了一堆石子,要放在 N 条水平线与 M 条竖直线构成的网格的交点上.因为小 M 最喜欢矩形了,小 W 希望知道用 K 个石子最多能找到多少四边平行于坐标轴的长方形 ...
- 冲刺阶段day3
day3 项目进展 今天周三,我们五个人难得的一整个下午都能聚在一起.首先我们对昨天的成果一一地查看了一遍,并且坐出了修改.后面的时间则是做出 登录界面的窗体,完善了登录界面的代码,并且实现了其与数据 ...
- python笔记 - day3
python笔记 - day3 参考:http://www.cnblogs.com/wupeiqi/articles/5453708.html set特性: 1.无序 2.不重复 3.可嵌套 函数: ...
- python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理
python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...
- Spark菜鸟学习营Day3 RDD编程进阶
Spark菜鸟学习营Day3 RDD编程进阶 RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lambda表示式来替换对象写 ...
- Spark Tungsten揭秘 Day3 内存分配和管理内幕
Spark Tungsten揭秘 Day3 内存分配和管理内幕 恭喜Spark2.0发布,今天会看一下2.0的源码. 今天会讲下Tungsten内存分配和管理的内幕.Tungsten想要工作,要有数据 ...
- Catalyst揭秘 Day3 sqlParser解析
Catalyst揭秘 Day3 sqlParser解析 今天我们会进入catalyst引擎的第一个模块sqlparser,它是catalyst的前置模块. 树形结构 从昨天的介绍我们可以看到sqlPa ...
随机推荐
- [转]RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第一篇【安装】
前言:关于RobotFrameWork+APPIUM实现对安卓APK的自动化测试的文章都是取自于乐于分享知识于网络的好心人们,所以我也希望我的知识可以分享给大家. 首先我们先罗列一下我们要安装的软件 ...
- 解决xampp启动mysql失败
进入到注册表内 命令:regedit 进入到路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL 修改路径为:" ...
- JAVA学习笔记--字符串概述
一.String类 String类代表字符串,是由字符构成的一个序列.创建String对象的方法很简单,有以下几种: 1)用new来创建: String s1 = new String("m ...
- Serverless 架构的优点和缺点
Serverless 的优势 在我使用 Serverless Framework 开发 AWS Serverless 应用的过程中,最方便的莫过于,第一次部署和第二次.第三次部署没有什么区别.只需要执 ...
- CentOS-6.x系列查看cpu核数
使用CentOS7.x使用习惯了后用top命令,然后按1就可以查看相关的cpu核心数等相关信息 相关概念: 物理CPU:实际Server中插槽上的CPU个数. 物理cpu数量:可以数不重复的 phys ...
- python3【基础】-and和or的短路逻辑
1. 表达式只有一个逻辑运算符 python中哪些对象会被当成False,哪些又是True呢? 基本数据类型中的None.任何数值类型中的0.空字符串"",空列表[],空元组()和 ...
- ES6的新特性(5)——数值的扩展
数值的扩展 二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 0b111110111 === 503 // true 0o767 === ...
- Table Tennis Game 2(找规律)
Description Misha and Vanya have played several table tennis sets. Each set consists of several serv ...
- Java接口interface,匿名内部类
接口 1.接口内部为 常量+公用的抽象方法.类必须实现接口中的所有方法 2.接口的语法格式:不写abstract会自动添加,可以继承多个接口 修饰符不能使private,protected [修饰符] ...
- 第二次程序+PSP0级
第二周,老师接着上次的程序有对四则运算的程序,做出来一些要求,这次要求可以控制乘除法,有无括号,控制输出方式,控制结果有无负数,有无余数. 我在对原先的程序分析了一下,发现我原先的程序可扩展性特别差, ...