清北刷题冲刺 11-03 p.m
三向城


#include<iostream>
#include<cstdio>
using namespace std;
int n,x,y;
int main(){
freopen("city.in","r",stdin);freopen("city.out","w",stdout);
// freopen("Cola.txt","r",stdin);
scanf("%d",&n);
while(n--){
scanf("%d%d",&x,&y);
int ans=;
while(x!=y){
ans++;
if(x<y)swap(x,y);
x/=;
}
printf("%d\n",ans);
}
return ;
}
100分 两个同时往上跳
灵魂画师



#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,c,K,mc,cnt[];
double dp[][],ans;
int main(){
freopen("paint.in","r",stdin);freopen("paint.out","w",stdout);
scanf("%d%d%d",&n,&c,&K);
for(int i=;i<=K;i++){
int l,r;
scanf("%d%d",&l,&r);
for(int j=l;j<=r;j++){
cnt[j]++;
mc=max(cnt[j],mc);
}
}
dp[][]=;
for(int i=;i<mc;i++){
for(int j=;j<c;j++){
dp[i+][j]+=dp[i][j]/;
for(int k=;k<c;k++){
dp[i+][(j*k)%c]+=dp[i][j]/(*c);
}
}
}
for(int i=;i<=n;i++){
for(int j=;j<c;j++){
ans+=dp[cnt[i]][j]*j;//概率乘以收益
}
}
printf("%.3lf\n",ans);
return ;
}
100分 概率dp
香子兰



#include<iostream>
#include<cstdio>
#define maxn 21
using namespace std;
int map[][],n,m,sum,num,head[maxn],fa[maxn],mx,mn=0x7fffffff;
bool flag=;
struct node{
int to,pre,v;
}e[maxn*maxn*];
void Insert(int from,int to,int v){
e[++num].to=to;
e[num].v=v;
e[num].pre=head[from];
head[from]=num;
}
void dfs(int now,int father){
bool leaf=;
fa[now]=father;
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
if(to==father)continue;
dfs(to,now);
leaf=;
}
if(now==n&&leaf==){
flag=;
return;
}
}
int main(){
freopen("vanilla.in","r",stdin);freopen("vanilla.out","w",stdout);
// freopen("Cola.txt","r",stdin);
scanf("%d%d",&n,&m);
int x,y,z;
for(int i=;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
mx=max(mx,z);mn=min(mn,z);
x+=;y+=;
map[x][y]=map[y][x]=z;
Insert(x,y,z);Insert(y,x,z);
sum+=z;
if(x!=i||y!=i+)flag=;
}
if(flag){
sum*=;
sum-=map[n][n-]*+map[][]*;
cout<<sum;
return ;
}
if(m==n-){
flag=;
dfs(,);
if(flag){
cout<<sum*-map[n][fa[n]]*;
}
else cout<<sum*;
return ;
}
while(sum<)sum*=;
sum%=;
if(sum<mx)sum+=mx*;
cout<<sum;
return ;
}
30分 乱搞骗分
#include<iostream>
#include<cstdio>
#define INF 1000000007
using namespace std;
int a[][],d[][],f[][][],e[];
int cnt[],n,n1,n2,x,y,z,m,q,ans,sta;
int main(){
freopen("vanilla7.in","r",stdin);
e[]=;
for(int i=;i<=;i++)e[i]=e[i-]<<;//预处理2^i
for(int i=;i<e[];i++){
int x=i;
while(x){
cnt[i]+=x&;
x>>=;
}
}
scanf("%d%d",&n,&m);
int x,y,z;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
if(i==j)continue;
d[i][j]=INF;
}
for(int i=;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
x++;y++;
if(z>=d[x][y])continue;
d[x][y]=d[y][x]=z;
}
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
if(n==){
printf("%d\n",(d[][]+d[][])*);
return ;
}
n1=(n-)/;
n2=n--n1;
for(int q=;q<=;q++){
for(int i=;i<=n;i++)
for(int j=;j<e[n-];j++)
f[q][i][j]=INF;
if(q==)
for(int i=;i<n;i++)f[q][i][e[i-]]=d[][i];
else
for(int i=;i<n;i++)f[q][i][e[i-]]=d[n][i];
for(int j=;j<e[n-];j++){
if(cnt[j]<n2)
for(int i=;i<n;i++){
if(f[q][i][j]<INF)
for(int k=;k<n;k++){
if(f[q][i][j]+d[i][k]<f[q][k][j|e[k-]])
f[q][k][j|e[k-]]=f[q][i][j]+d[i][k];
}
}
}
} ans=INF;
for(int sta=;sta<e[n-];sta++){
if(cnt[sta]==n1){
x=INF;
for(int i=;i<n;i++){
if(sta&e[i-])
for(int j=;j<n;j++){
if(!(sta&e[j-])){
if(f[][i][sta]+d[i][j]+f[][j][e[n-]--sta]<x)
x=f[][i][sta]+d[i][j]+f[][j][e[n-]--sta];
}
}
}
for(int i=;i<n;i++){
if(sta&e[i-])
for(int j=;j<n;j++){
if(!(sta&e[j-]))
if(x+f[][i][sta]+d[i][j]+f[][j][e[n-]--sta]<ans)
ans=x+f[][i][sta]+d[i][j]+f[][j][e[n-]--sta];
}
}
}
}
printf("%d\n",ans);
return ;
}
100分 floyed+状压dp
预计得分100++
实际得分100++
T1很简单,T2是个简单的概率dp,但是数组开小了,T3一点思路都没有,就研究了一下链和树的情况,乱搞了一下
数组开小很不应该们,不能再犯
小结
清北刷题冲刺 11-03 p.m的更多相关文章
- 清北刷题冲刺 11-03 a.m
纸牌 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- 2017-10-2 清北刷题冲刺班a.m
一道图论神题 (god) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只 ...
- 2017-10-2 清北刷题冲刺班p.m
最大值 (max) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n ...
- 清北刷题冲刺 11-02 a.m
卖书 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- 清北刷题冲刺 11-01 p.m
轮换 #include<iostream> #include<cstdio> #include<cstring> #define maxn 1010 using n ...
- 清北刷题冲刺 10-31 a.m
集合 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; ], ...
- 清北刷题冲刺 10-30 a.m
星空 #include<iostream> #include<cstdio> using namespace std; int n,m; int main(){ freopen ...
- 清北刷题冲刺 10-29 p.m
洗澡 /* 这个题不能单纯判断左括号和右括号的多少,而应该从左到右扫一遍,看应该如何配对 */ #include<iostream> #include<cstdio> #inc ...
- 清北刷题冲刺 10-28 p.m
水题(贪心) (water) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每 ...
- 清北刷题冲刺 10-28 a.m
立方数 (cubic) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方 ...
随机推荐
- QMainFrame类
一.简介: 1.QMainFrame类提供了应用程序的主窗口,因为它可以添加菜单.工具条.状态栏和停靠窗口,同时也支持单文档窗口和多文档窗口,这是它和其他窗口不一样的地方. 2.QMainFrame窗 ...
- 07 - Django应用第四步
知识点 1) 表单的编写 CSRF问题 forloop.counter 2) 视图函数的知识 GET和POST HttpResponseRedirect的使用 reverse的使用 3) 通用视图 C ...
- linux命令学习笔记(1):ls命令
ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单 如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查 看li ...
- H.264 RTPpayload 格式------ H.264 视频 RTP 负载格式(包含AAC部分解析)
H.264 RTPpayload 格式------ H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: +------------ ...
- 使用Visual Studio进行单元测试-Part3
本文主要介绍Visual Studio(2012+)单元测试框架的一些技巧: 测试覆盖率的统计 测试分组 测试Setup/TearDown 测试调试 Exception测试 代码覆盖率的统计 VS下面 ...
- BZOJ4695:最假女选手
浅谈区间最值操作和历史最值问题:https://www.cnblogs.com/AKMer/p/10225100.html 题目传送门:https://lydsy.com/JudgeOnline/pr ...
- Python:struct模块的pack、unpack
mport struct pack.unpack.pack_into.unpack_from 1 # ref: http://blog.csdn<a href="http://lib. ...
- 数组排序----Demo
//选择排序,分为简单选择排序.树形选择排序(锦标赛排序).堆排序 此算法为简单选择排序 public static void selectSort(int[] a){ for(int i=0;i&l ...
- ES6学习之let和const
1.let 基本用法:let声明的变量,只在let命令所在的代码块内有效 { let a = 1; var b = 2; } console.log(a) //a is not defined con ...
- 发一个可伸缩线程池大小的python线程池。已通过测试。
发一个可伸缩线程池大小的线程池. 当任务不多时候,不开那么多线程,当任务多的时候开更多线程.当长时间没任务时候,将线程数量减小到一定数量. java的Threadpoolexcutor可以这样,py的 ...