20101010 exam
2018 10.10 exam 解题报告
T1:LOJ #10078 新年好
题目描述(原题来自:CQOI 2005):
重庆城里有n个车站,m 条双向公路连接其中的某些车站。每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。在一条路径上花费的时间等于路径上所有公路需要的时间之和。
佳佳的家在车站1,他有五个亲戚,分别住在车站 a,b,c,d,e。过年了,他需要从自己的家出发,拜访每个亲戚(顺序任意),给他们送去节日的祝福。怎样走,才需要最少的时间?
输入格式:
第一行:n,m为车站数目和公路的数目。
第二行:a,b,c,d,e为五个亲戚所在车站编号。
以下 m 行,每行三个整数 x,y,t,为公路连接的两个车站编号和时间。
输出格式:
输出仅一行,包含一个整数 T,为最少的总时间。
样例输入:
6 6
2 3 4 5 6
1 2 8
2 3 3
3 4 4
4 5 5
5 6 2
1 6 7
样例输出:
21
数据范围与提示:
对于全部数据,1≤n≤50000,1≤m≤1e5,1<a,b,c,d,e≤n,1≤x,y≤n,1≤t≤100.
思路:
对于考场上我咋想的。。。我已经不想说啥了,我个SB。。。本来想写单源最短路(dij+堆优化),,无奈,搞不出来,就写了个邻接表+spfa,虽然乱搞出样例,但是成功GG。
代码实现:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int N=5e4+10;
const int inf=0x7ffffff;
struct node{
int v,nxt,val;
}e[N<<2];
int dis[7][N],a[10],head[N],f[50],Vis[N],vis[N];
int js,n,m,ans=inf;
inline int read() {
int n=0,f=1;char ch=getchar();
while (ch<'0' || ch>'9') {if(ch=='-') f=-1;ch=getchar();}
while (ch<='9' && ch>='0') {n=(n<<3)+(n<<1)+ch-'0';ch=getchar();}
return n*f;
}
inline void add_edge(int u,int v,int val) {
e[++js].v=v,e[js].val=val;
e[js].nxt=head[u],head[u]=js;
}
inline void spfa(int s,int t) {
memset(vis,0,sizeof(vis));
queue<int>q;
q.push(s);
vis[s]=1,dis[t][s]=0;
while (!q.empty()) {
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u];i;i=e[i].nxt) {
int v=e[i].v;
if(dis[t][v]>dis[t][u]+e[i].val) {
dis[t][v]=dis[t][u]+e[i].val;
if(!vis[v]) {
vis[v]=1;
q.push(v);
}
}
}
}
}
inline void dfs(int t) {
if(t==6) {
int res=0;
for(int i=1;i<6;++i) res+=dis[f[i]][a[f[i+1]]];
ans=min(ans,res);
return ;
}
for(int i=2;i<=6;++i) {
if(!Vis[i]) {
Vis[i]=1,f[t+1]=i;
dfs(t+1),Vis[i]=0;
}
}
}
int main() {
n=read(),m=read();
for(int i=2;i<=6;++i) a[i]=read();
for(int i=1;i<=m;++i) {
int u=read(),v=read(),val=read();
add_edge(u,v,val),add_edge(v,u,val);
}
memset(dis,0x3f,sizeof(dis));
a[1]=f[1]=1;
for(int i=1;i<=6;++i) spfa(a[i],i);
dfs(1);
printf("%d",ans);
return 0;
}
T2: LOJ #10220 Fibonacci 第 n 项
题目描述
大家都知道 Fibonacci 数列吧,
现在问题很简单,输入 n 和 m ,求
输入格式
输入 n,m。
输出格式
输出
样例输入
5 1000
样例输出
5
数据范围与提示
对于 100% 的数据, 1≤n≤2×1e09,1≤m≤1e9+10.
思路:
直接上板子QWQ
代码实现:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;
struct note{
int a[2][2];
}e,a;
inline int read() {
int n=0,f=1;char ch=getchar();
while (ch<'0' || ch>'9') {if(ch=='-') f=-1;ch=getchar();}
while (ch<='9' && ch>='0') {n=(n<<3)+(n<<1)+ch-'0';ch=getchar();}
return n*f;
}
inline void mul(note A,note &B) {
note C;
C.a[0][0]=C.a[0][1]=C.a[1][0]=C.a[1][1]=0;
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
for(int k=0;k<=1;k++)
C.a[i][j]=(1ll*A.a[i][k]*B.a[k][j]+1ll*C.a[i][j])%m;
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
B.a[i][j]=C.a[i][j];
}
inline void gg(int y) {
for(;y;y>>=1,mul(e,e))
if(y&1) mul(e,a);
}
int main(){
n=read(),m=read();
a.a[0][0]=a.a[1][0]=1;e.a[0][0]=0,e.a[0][1]=e.a[1][0]=e.a[1][1]=1;
if(n==1) printf("%d\n",1%m);
gg(n-2);
printf("%d",a.a[1][0]);
return 0;
}
T3: LOJ #10178 旅行问题
题目描述
John 打算驾驶一辆汽车周游一个环形公路。公路上总共有 nnn 车站,每站都有若干升汽油(有的站可能油量为零),每升油可以让汽车行驶一千米。John 必须从某个车站出发,一直按顺时针(或逆时针)方向走遍所有的车站,并回到起点。在一开始的时候,汽车内油量为零,John 每到一个车站就把该站所有的油都带上(起点站亦是如此),行驶过程中不能出现没有油的情况。
任务:判断以每个车站为起点能否按条件成功周游一周。
输入格式
第一行是一个整数 n,表示环形公路上的车站数;
接下来 n 行,每行两个整数 p_i,d_i ,分别表示表示第 i 号车站的存油量和第 i 号车站到下一站的距离。
输出格式
输出共 n 行,如果从第 i 号车站出发,一直按顺时针(或逆时针)方向行驶,能够成功周游一圈,则在第 i 行输出 TAK,否则输出 NIE。
样例输入
5
3 1
1 2
5 2
0 1
5 4
样例输出
TAK
NIE
TAK
NIE
TAK
数据范围与提示
对于全部数据,3≤n≤1e6,0≤pi≤2×1e9,0<di≤2×1e9
思路:
DP ? QWQ,表示不造,咋办?模拟。。。完了后期模着模着,彻底凌乱了(qwq....我把自己写乱了),样例太水了,轻松水过,But...为毛一对拍就错了,好吧,于是就开始了花式乱搞之路,在偏离的道路上一去不复返...(调不出来,qaq,后期都没有动力了╮(╯▽╰)╭)
代码实现:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=2e6+10;
const int inf=0x7ffff;
inline int read() {
int n=0,f=1;char ch=getchar();
while (ch<'0' || ch>'9') {if(ch=='-') f=-1;ch=getchar();}
while (ch<='9' && ch>='0') {n=(n<<3)+(n<<1)+ch-'0';ch=getchar();}
return n*f;
}
int n,m;
ll ans[N],pos[N],f[N],sum[N],p[N],d[N];
deque <int> q;
inline void check() {
for(int i=1;i<=m;++i) sum[i]=sum[i-1]+f[i];
for(int i=1;i<=m;++i){
while(!q.empty() && sum[q.back()]>sum[i]) q.pop_back();
q.push_back(i);
while(q.front()<i-n+1) q.pop_front();
if(i>=n && sum[q.front()]-sum[i-n]>=0) ans[pos[i-n+1]]|=1;
}
}
int main() {
n=read();
m=n<<1;
for(int i=1;i<=n;++i) p[i]=read(),d[i]=read();
for(int i=1;i<=n;++i) f[i]=f[i+n]=p[i]-d[i],pos[i]=pos[i+n]=i;
check();
int js=1;
f[js]=f[js+n]=p[1]-d[n];
pos[js]=pos[js+n]=1;
for(int i=n;i>=2;--i) {
js++;
f[js]=f[js+n]=p[i]-d[i-1];
pos[js]=pos[js+n]=i;
}
check();
for(int i=1;i<=n;++i) {
if(ans[i]) printf("TAK\n");
else printf("NIE\n");
}
return 0;
}
20101010 exam的更多相关文章
- Linux学习之Exam系统发布
配置时间:2015年11月27日 配置人:撰写人:微冷的雨 Happy 01.Linux安装图 欢迎页面 桌面 02.Linux命令之文件目录操作 给北大青鸟五道口校区创建三个机房(L4,L5,L ...
- CF534A Exam 构造
An exam for n students will take place in a long and narrow room, so the students will sit in a line ...
- CF Exam (数学)
Exam time limit per test 1 second memory limit per test 256 megabytes input standard input output s ...
- Exam 70-462 Administering Microsoft SQL Server 2012 Databases 复习帖
好吧最近堕落没怎么看书,估计这个月前是考不过了,还是拖到国庆之后考试吧.想着自己复习考试顺便也写点自己的复习的概要,这样一方面的给不准备背题库的童鞋有简便的复习方法(好吧不被题库的同学和我一样看MSD ...
- Final Exam Arrangement(ZOJ)
In Zhejiang University, there are N different courses labeled from 1 to N. Each course has its own t ...
- 有感PMI Exam Dev Workshop
有幸參加了PMI协会在上海举办的PMI Exam Development Workshop活动.这是PMI协会第二次在中国举办此活动,上一次是2009年北京. 我第一次參加,感觉收获非常多. 我们知道 ...
- Exam(贪心)
Exam Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- B题 Before an Exam
Description Tomorrow Peter has a Biology exam. He does not like this subject much, but d days ago he ...
- HDU 5240 Exam
The 2015 ACM-ICPC China Shanghai Metropolitan Programming Contest 2015ACM-ICPC上海大都会赛 签到题 #include< ...
随机推荐
- 好用的数据库字典查看工具SQLToolbelt
工作中经常为诸多的陌生或没有任何表或者字段说明或者文档庞大数据库和数据库表所烦恼,有以下场景: 1.新进入一家公司,开始接触新的项目,领导给你一大堆文档,在不了解具体逻辑的情况下,除了项目的结构,能让 ...
- 通过Ldap实现人事系统组织人事和AD的同步
项目需求:同步人事系统的组织架构-对应AD的OU树同步人事系统的员工-对应AD的用户 创建OU 名字不能重复,需要父级路径(parentOrganizeUnit)以及新ou的名字(name),如果最父 ...
- .Net Core WebAPI开启静态页,设置主页
1.使用场景 默认创建的.Net Core WebAPI应用在运行时是没有页面显示的,效果如下: 那么,如果想要给API设置一个主页,应该怎么做呢?这就需要用到本文提供的方法. 2.设置方法 (1)首 ...
- drf--认证组件
目录 认证简介 用户认证RBAC(Role-Based Access Control) 局部使用 全局使用 源码分析 认证简介 使用场景:有些接口在进行访问时,需要确认用户是否已经登录,比如:用户需要 ...
- 利用Beef劫持客户端浏览器
利用Beef劫持客户端浏览器 环境: 1.Kali(使用beef生成恶意代码,IP:192.168.114.140) 2.一台web服务器(留言板存在XSS跨站脚本漏洞,IP:192.168.11 ...
- AR-运行自动开票主程序报错
问题: 在AR运行自动开票主程序时出现如下错误提示: 错误日志: raagsp()+ 当前的系统时间为 12-09-2014 07:23:58 raagsp()- 当前的系统时间为 12-09-201 ...
- PHP的SPL标准库
1,简介 SPL,全称 Standard PHP Library 中文是 标准PHP类库.是php内置的一些拓展类和拓展接口,其内容包含数据结构.迭代器.接口.异常.SPL函数,文件处理等内容.SPL ...
- prometheus学习系列八: Prometheus Grafana展示平台
在prometheus中,我们可以使用web页面进行数据的查询和展示, 不过展示效果不太理想,这里使用一款专业的展示平台进行展示. grafana安装 # 下载wget https://dl.graf ...
- ShareSDK For Unity集成
Mob ShareSDK Android - V2.7.10 iOS - V3.5.0 Mob下载:https://github.com/MobClub/New-Unity-For-ShareSDK ...
- 《剑指Offer》-005 -用两个栈实现队列
如题 (总结要点) 用两个栈实现队列 栈; 先进后出 队列: 先进先出 两个栈, 相等于两个杯子; 把一本水倒来倒去, 取到杯子底部的元素,并且删除,再倒回去 原文链接 : 借鉴学习文章列表 链接1: ...