2019 CCPC-Wannafly Winter Camp Div2 Day1

补题进度 7/11

J 夺宝奇兵

范围较小,直接枚举靠多少票赢即可,不够的票从小到大买

#include<bits/stdc++.h>
#define ll long long
const int maxn = 1005;
using namespace std;
struct node
{ll id,val;int pos;
}p[maxn],P[maxn];
bool vis[maxn];
bool cmp(node u,node v)
{return u.val<v.val;
}
bool cmp2(node u,node v)
{if(u.id==v.id) return u.val>v.val;return u.id<v.id;
}
int main()
{int n,m;cin>>n>>m;for(int i=1; i<=m; i++){cin>>p[i].val>>p[i].id;p[i].pos=i;P[i]=p[i];}ll ans=1e18;sort(P+1,P+1+m,cmp);sort(p+1,p+1+m,cmp2);for(int i=1; i<=m; i++){memset(vis,0,sizeof(vis));int have=0;//当前有的票int need=i;//赢需要多少票int x=0;ll val=0;for(int j=1; j<=m; j++){if(p[j].id!=p[j-1].id) x=1;else x++;if(x>need) //别人票数大于你赢时需要的票数
            {have++;val+=p[j].val;vis[p[j].pos]=1;}}if(have<=need) {for(int j=1; j<=m; j++){if(!vis[P[j].pos]){vis[P[j].pos]=1;have++;val+=P[j].val;if(have>need) break;}}}if(have>need)ans=min(ans,val);// cout<<i<<" "<<ans<<endl;
    }cout<<ans<<endl;
}
View Code

 

F 爬爬爬山

我们很容易知道,当其他山大于第一座山+体力值时,此个山是到达不到的。所以我们在遇到这种情况的时候,我们直接把需要把减掉的花费建到边权就ok了,然后跑dij

#include<bits/stdc++.h>
#define FIN freopen("input.txt","r",stdin)
#define ll long long
#define mod 998244353
const int maxn = 100005;
using namespace std;
int h[maxn],Next[maxn*20],head[maxn],To[maxn*20];
ll len[maxn*20],dis[maxn];
bool vis[maxn];
int cnt,n;
inline void add(int u,int v,ll w)
{Next[++cnt]=head[u];head[u]=cnt;To[cnt]=v;len[cnt]=w;
}
void dij()
{for(int i=1;i<=n;i++)dis[i]=2e18;dis[1]=0;priority_queue<pair<ll,int> ,vector<pair<ll,int> > , greater< pair<ll,int> > >q;q.push(make_pair(0,1));while(!q.empty()){pair<ll,int> tmp=q.top();q.pop();int u=tmp.second;if(vis[u]) continue;vis[u]=1;for(int i=head[u];i!=-1;i=Next[i]){int v=To[i];ll d=len[i];//    cout<<v<<" "<<len[i]<<endl;if(dis[v]>dis[u]+d){dis[v]=dis[u]+d;q.push(make_pair(dis[v],v));}}}
}
int main()
{#ifndef ONLINE_JUDGEFIN;#endifmemset(head,-1,sizeof(head));int m;ll k;cin>>n>>m>>k;for(int i=1;i<=n;i++){cin>>h[i];}for(int i=1;i<=m;i++){int u,v;ll w;cin>>u>>v>>w;add(u,v,w+max(0LL,(h[v]-h[1]-k))*max(0LL,(h[v]-h[1]-k)));add(v,u,w+max(0LL,(h[u]-h[1]-k))*max(0LL,(h[u]-h[1]-k)));}dij();cout<<dis[n]<<endl;
}
View Code

 

B 吃豆豆

数据是10*10的二维矩阵,数据特别小,我们直接对于每秒直接算暴力算此秒的值就好了

#include<bits/stdc++.h>
#define FIN freopen("input.txt","r",stdin)
#define ll long long
#define mod 998244353
const int maxn = 100005;
using namespace std;
ll dp[11][11][20000];
int dir[5][2]={1,0,-1,0,0,-1,0,1,0,0};
bool vis[11][11][20000];
int T[11][11];
int main()
{#ifndef ONLINE_JUDGEFIN;#endifint n,m,c;cin>>n>>m>>c;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>T[i][j];int xs,ys,xt,yt;cin>>xs>>ys>>xt>>yt;vis[xs][ys][0]=1;for(int k=1;;k++){for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){if(!vis[i][j][k-1]) continue;for(int p=0;p<5;p++){int x=i+dir[p][0];int y=j+dir[p][1];if(x<1||x>n||y<1||y>m) continue;vis[x][y][k]=1;if(k%T[x][y]==0)dp[x][y][k]=max(dp[x][y][k],dp[i][j][k-1]+1);else dp[x][y][k]=max(dp[x][y][k],dp[i][j][k-1]);if(x==xt&&y==yt&&dp[x][y][k]>=c){cout<<k<<endl;return 0;}}}}
}
View Code

 

C 拆拆拆数

直接拆成两个数(待证)

#include<bits/stdc++.h>
#define FIN freopen("input.txt","r",stdin)
#define ll long long
#define mod 998244353
const int maxn = 3000005;
using namespace std;
ll prime[1005];
bool isprime[1005];
int main()
{#ifdef ONLINE_JUDGE#else FIN;#endifint n,cnt=0;cin>>n;for(int i=2;i<=1000;i++){if(isprime[i]==0){prime[++cnt]=i;for(int j=1;j*i<=1000;j++){isprime[i*j]=1;}}}while(n--){ll a,b;cin>>a>>b;if(__gcd(a,b)==1)cout<<1<<"\n"<<a<<" "<<b<<"\n";else {for(int i=1;i<=cnt;i++){if(__gcd(a-prime[i],prime[i])==1&&(__gcd(prime[i],b-prime[i])==1)){cout<<2<<"\n";cout<<a-prime[i]<<" "<<prime[i]<<"\n";cout<<prime[i]<<" "<<b-prime[i]<<"\n";break;}}}}
}
View Code

 

I 起起落落

题目是求 p[2k1]>p[2k+1]>p[2k]​的子序列有多少个。 我们定义dp[i] 表示前i个有多少个满足要求的子序列。

思路:dp[i]的值 可以由dp[1~i-2]得到 我们定义k代表可以使用的中间点

当a[1~i-2]>a[i]时我们可以直接算贡献 为(dp[]+1)*k  当a[2~i-2]<a[i]时我们都能讲此点作为中间点 k++;

#include<bits/stdc++.h>
#define FIN freopen("input.txt","r",stdin)
#define ll long long
#define mod 1000000007
const int maxn = 2000+5;
using namespace std;
ll dp[maxn];
int a[maxn];
int main()
{#ifndef ONLINE_JUDGEFIN;#endifint n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];int ans=0;for(int i=3;i<=n;i++)  //枚举右端点
    {int k=a[i]>a[i-1];for(int j=i-2;j>=1;j--){if(a[j]>a[i])dp[i]=(dp[i]+(dp[j]+1)*k)%mod;else if(a[j]<a[i])k++;}ans=(ans+dp[i])%mod;}cout<<ans<<endl;
}
View Code

 

A 机器人

分类讨论即可 我们会发现我们最多传送两次即可走到所有点

最后可以分为两类:1.都在a区 答案直接为s点到最左点的特殊点和s到最右的特殊点的两倍

                                 2.b区有 答案为1类答案再加上 2*k

要注意的是 a区 起点可作为转向点

详细可以参考如下博客:https://blog.csdn.net/CaprYang/article/details/86655459

代码同上~

 

E 流流流动

树形dp 按题意写即可~

#include<bits/stdc++.h>
#define FIN freopen("input.txt","r",stdin)
#define ll long long
#define mod 1000000007
const int maxn = 300+5;
using namespace std;
int head[maxn],To[maxn*20],Next[maxn*20];
int f[maxn],d[maxn],dp[maxn][2],cnt;
bool vis[maxn];
inline void add(int u,int v)
{Next[++cnt]=head[u];head[u]=cnt;To[cnt]=v;
}void dfs(int u,int fa)
{vis[u]=1;dp[u][0]=0;dp[u][1]=f[u];for(int i=head[u];i!=-1;i=Next[i]){int v=To[i];if(v==fa) continue;dfs(v,u);dp[u][0]+=max(dp[v][1],dp[v][0]);dp[u][1]+=max(dp[v][0],dp[v][1]-d[min(u,v)]);}
}int main()
{#ifndef ONLINE_JUDGEFIN;#endifmemset(head,-1,sizeof(head));int n;cin>>n;for(int i=1;i<=n;i++)cin>>f[i];for(int i=1;i<=n;i++)cin>>d[i];for(int i=2;i<=n;i++){if(i&1) {add(i,3*i+1);add(3*i+1,i);}else {add(i,i/2);add(i/2,i);}}int ans=0;for(int i=1;i<=n;i++){if(!vis[i]){dfs(i,0);ans+=max(dp[i][0],dp[i][1]);}}cout<<ans<<"\n";
}
View Code

 

 

K 星球大战

unsolved

 

H 我爱割葱

unsolved

 

代更

转载于:https://www.cnblogs.com/MengX/p/10326116.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Airtest中如何使用无线模式控制手机

在Airtest中如何使用无线模式控制手机 在使用Airtest超快速开发App爬虫文章的最后&#xff0c;我们留了一个尾巴&#xff1a;如何启动Airtest的无线模式&#xff0c;不用USB线就能控制手机&#xff1f; 本文将会讲到具体的做法。做法分为两种&#xff1a;第一种是在Airtest的ID…

tab页

图片&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> <style type"text/css"> /* 上边tab */ html {font-size: 14px }body {margin: 0;padding:…

JMeter 性能测试实例

一、性能测试分类&#xff1a; 1、基准测试 2、并发测试 3、负载测试 4、压力测试 1、基准测试&#xff1a; 也是单用户测试&#xff0c;测试环境确定以后&#xff0c;对业务模型中的重要业务做单独的测试&#xff0c;获取单用户运行时的各项性能指标&#xff0c;为多用户并发测…

Django学习之十一:真正理解Django的路由分发和反解url原理

目录 URL Dispatcher简介模式概念对比URLPattern 与 URLResolver (多态的体现)构建子路由几种方式反解url算法逻辑URL Dispatcher 简介 django的url dispatcher 设计是基于一个url mapper来工作的。 这个url mapper主要用在两个方向&#xff1a; url 匹配到 视图通过提供的标识…

Unable to locate tools.jar

初使用ant的时候&#xff0c;打开cmd&#xff0c;使用ant -version查看ant版本以测试ant是否能正常工作&#xff0c; 我先前是已经将ant的bin目录添加进入环境变量中了&#xff0c;后来运行中报了这么一个错误&#xff1a; 解决办法就是将C:\Program Files (x86)\Java\jdk1.6.…

你所忽略的,覆盖equals时需要注意的事项《effective java》

我们都知道Object的equals的比较其实就是的比较&#xff0c;其实是内存中的存放地址的比较。正常逻辑上&#xff1a;类的每个实例本质上都是唯一的。 在工作中我们实际的业务逻辑往往有可能出现一些相对特殊的需求需要对equals方法进行重写&#xff0c;那么重写equals需要注意哪…

bootstrap 一排5个_BootStrap从基础到项目实战_第1季_03章_02_CSS样式栅格系统实例

目标目标一、理解什么是栅格布局目标二、掌握栅格布局具体应用目标三、掌握BootStrap通用CSS样式(排版、代码、代码、表单、按钮、图片、辅助类、响应式工具)内容一、BootStrap全局CSS之 - 栅格系统实例1.1 栅格系统实例实战前的理论准备通过下面的截图可以比较清楚的来查看Boo…

光耦驱动单向可控硅_光耦是什麽?

光耦是一种广泛用于电子产品中的元器件&#xff0c;亦称作光电耦合器或是光电隔离器&#xff0c;光耦的动作顺序为一个电→光→电的过程&#xff0c;光耦元件于输入端由电讯号转为光讯号&#xff0c;输出端则吸收光讯号后转换为电流/电压&#xff1b;在实体电路上光耦确实的隔离…

单体预聚合的目的是什么_线型低密度聚乙烯的单体单元比例到底是多少?

我国现行法定归类依据关于线型低密度聚乙烯(LLDPE)单体单元比例的规定主要可见于三处&#xff1a;第三十九章总注释&#xff1a;“值得注意的是&#xff0c;商品聚合物有时含有比其缩写名称所述的单体单元要多〔例如&#xff0c;线性低密度聚乙烯(LLDPE)基本上是乙烯聚合物&…

银行系统日终结算要多久_美股顽强翻红!两连跌终结,联储降息预期已超九成!制造业疲软消费者信心坚挺,三大股指又假摔?...

美国股市昨日先抑后扬终结两连跌&#xff0c;开启反弹&#xff0c;道指、标普、纳指纷纷翻红。10月3日晚&#xff0c;美东时间周四&#xff0c;美股集体低开&#xff0c;盘初受宏观经济数据不及预期影响&#xff0c;三大指数大幅跳水跌逾1%&#xff0c;道指跌超300点。此后美股…

mysql优化三

相对高并发一样,速度都是优化出来的,在高并发处理的时候,通常采用的是redis缓存,全文搜索引擎,数据库本身优化,sql优化,磁盘优化 看如下图: 所以可以得出的思想就是: 这个优化法则归纳为5个层次&#xff1a;1、 减少数据访问&#xff08;减少磁盘访问&#xff09;2、 返回更少数…

smartdeblur有手机版吗_《GTA5》高仿手机版问世,更新高清城市地图后你会喜欢吗?...

现在GTA5手游是传的最热火的一款手游了&#xff0c;但R星并没有把这款游戏排在日程上面&#xff0c;我觉得2K的游戏制作速度确实太慢&#xff0c;以至于R星都要亲自去催一下&#xff0c;而且现在是手游的天下&#xff0c;更多的游戏群体都开始在手游端聚集&#xff0c;在未来的…

Asp.Net集成支付宝当面付接口报ISV权限不足

在使用C#开发支付宝当面付接口时&#xff0c;下载了[官网的Demo] 点此链接进入下载&#xff1a; https://doc.open.alipay.com/doc2/detail.htm?spma219a.7629140.0.0.yNFbBr&treeId193&articleId105201&docType1 使用公司的支付宝商家账号替换好参数后&#xff…

ad采样做按键开关_磐石按键测试机解决各种按键测试问题

随着人民生活水平不断的提高&#xff0c;在使用各类产品的过程中&#xff0c;对手指碰触到的按键要求舒适性越来越高&#xff0c;也就是对产品用户体验的享受度越来越高&#xff0c;对手碰触到的各类按键的要求灵敏度、可靠度、舒适性就非常高&#xff0c;所以现在很多产品在出…

巨潮网怎么下载年报_上市公司年报(或财务报表)在哪里下载?

会计专业;财务分析;上市公司;技巧 首先,上市公司财务报表通常指的是三大财务报表:资产负债表 现金流量表 利润表,Excel格式的;当然也有人需要的是PDF格式的完整年度报告,看您具体需要的事哪一种,依照情况选择吧。Excel>> PDF>> 2. 在查询获取上常用的是巨…

redis将散裂中某个值自增_0基础掌握Django框架(49)Redis

为了更好的学习效果&#xff0c;请搭配视频教程一起学习&#xff1a;Django零基础到项目实战 - 网易云课堂​study.163.comredis教程&#xff1a;概述redis是一种nosql数据库,他的数据是保存在内存中&#xff0c;同时redis可以定时把内存数据同步到磁盘&#xff0c;即可以将数据…

Asp.Net微信发布菜单,出现“invalid sub button url domain hint”错误

在微信后台建立好微信菜单后&#xff0c;调用发布接口进行发布操作时&#xff0c;出现了下面的问题&#xff1a; invalid sub button url domain hint [V85WIa0180vr23] 解决办法&#xff1a; 进入微信公众平台&#xff0c;选择菜单“公众号设置”-》“功能设置”-》“JS接口…

[vue] vue项目有做过单元测试吗?

[vue] vue项目有做过单元测试吗&#xff1f;# 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

bootstrap综合大作业_齐齐哈尔市克东县城市管理综合执法局昼夜奋战清冰雪,全力以赴保畅通...

近日&#xff0c;克东县再次迎来降雪&#xff0c;此次降雪时间长、密度大&#xff0c;为保证城区内交通顺畅及人员车辆出行安全&#xff0c;克东县城市管理综合执法局组织城管大队和环卫站科学统筹、迅速行动&#xff0c;全力以赴投入到清冰雪工作中。11月17日晚十点&#xff0…

洛谷4951 地震 bzoj1816扑克牌 洛谷3199最小圈 / 01分数规划

洛谷4951 地震 1 #include<iostream>2 #include<cstdio>3 #include<algorithm>4 #define go(i,a,b) for(register int ia;i<b;i)5 #define ll long long6 #define db long double7 #define M 100018 #define N 4019 #define inf 1e15 10 #define eps 1e-…