第一题

用堆维护。

#include <cstdio>
#include <algorithm>
#include <queue>
int n,i,f[400000],g[2][200000],j=0,k[400000];
int l,r;
bool cho;
struct pn{
int l,r,n;
};
bool operator<(pn a,pn b){
return a.n>b.n;
}
std::priority_queue<pn> q;
pn as,as1,as2;
int main(){
freopen("minval.in","r",stdin);
freopen("minval.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;++i) scanf("%d",&g[0][i]);
for(i=0;i<n;++i) scanf("%d",&g[1][i]);
std::sort(g[0],g[0]+n);
std::sort(g[1],g[1]+n);
as.l=0;
as.r=0;
as.n=g[0][0]+g[1][0];
q.push(as);
for(i=0;i<n;++i){
as=q.top();
q.pop();
as1.l=as.l+1;
as1.r=as.r;
as1.n=g[0][as1.l]+g[1][as1.r];
as2.l=as.l;
as2.r=as.r+1;
as2.n=g[0][as2.l]+g[1][as2.r];
printf("%d ",as.n);
q.push(as1);
q.push(as2);
}
return 0;
}

第二题

连通性判定+二分图

#include <cstdio>
#include <cstring>
int f[200000],d,i,j,m,n,s,t,tt,a,b,pl,h[200000];
int q[200000],qh,qt;
bool f2;
struct edge{
int t,n;
} edges[2000000];
inline void addedge(int f,int t){
edges[++pl].n=h[f];
edges[ pl ].t= t ;
h[f]=pl;
}
int main(){
freopen("catch.in","r",stdin);
freopen("catch.out","w",stdout);
scanf("%d",&tt);
while(tt--){
++j;
memset(f,0,sizeof f);
memset(h,0,sizeof h);
pl=0;
qh=qt=0;
scanf("%d%d%d",&n,&m,&s);
for(i=0;i<m;++i){
scanf("%d%d",&a,&b);
addedge(a,b);
addedge(b,a);
}
q[qt++]=s;
f2=false;
f[s]=1;
--n;
while(qh!=qt){
i=q[qh++];
for(d=h[i];d;d=edges[d].n){
t=edges[d].t;
if(!f[t]){
f[t]=3-f[i];
q[qt++]=t;
--n;
}else{
if(f[i]==f[t]) f2=true;//not bicolorable
}
}
}
if(!f2){
printf("Case %d: NO\n",j);
}else{
if(n) printf("Case %d: NO\n",j); else printf("Case %d: YES\n",j);
}
}
return 0;
}

第三題:二分答案加判定

#include <cstdio>
#include <cstring>
struct edge{
int t,n,w;
} e[300000];
int h[20000],pl;
inline void addedge(int f,int t,int w){
e[++pl].t=t;
e[pl].n=h[f];
e[pl].w=w;
h[f]=pl;
}
int n,m,u,v,s,i,j,k;
int left,right,mid,ans;
int cost[20000];
int q[100000],qh,qt;
bool iq[20000];
int f[20000];
int ka,kb,ww;
int v0,v1,e0;
void spfa(int mma){
memset(f,-1,sizeof f);
memset(iq,0,sizeof iq);
qh=qt=0;
q[qt++]=u;
f[u]=0;
while(qh!=qt){
v0=q[qh++];
iq[v0]=false;
for(e0=h[v0];e0;e0=e[e0].n){
v1=e[e0].t;
if(cost[v1]>mma) continue;
if(f[v1]==-1 || f[v1] > f[v0] + e[e0].w){
f[v1] = f[v0] + e[e0].w;
if(!iq[v1]){
iq[v1]=true;
q[qt++]=v1;
}
}
}
}
}
int main(){
freopen("cost.in","r",stdin);
freopen("cost.out","w",stdout);
scanf("%d%d%d%d%d",&n,&m,&u,&v,&s);
left=0x7fffffff;
for(i=1;i<=n;++i){
scanf("%d",cost+i);
if(cost[i]<left) left=cost[i];
if(cost[i]>right) right=cost[i];
}
for(i=1;i<=m;++i){
scanf("%d%d%d",&ka,&kb,&ww);
addedge(ka,kb,ww);
addedge(kb,ka,ww);
}
spfa(right);
if(f[v]==-1 || f[v] > s){
printf("-1\n");
return 0;
}
while(left<=right){
mid=(left+right)/2;
spfa(mid);
if( f[v] == -1 || f[v] > s ){
left=mid+1;
}else{
right=mid-1;
ans=mid;
}
}
printf("%d\n",ans);
return 0;
}

更新:修復了exceed 32bit int的bug

#include <cstdio>
#include <cstring>
struct edge{
int t,n,w;
} e[300000];
long long h[20000],pl;
inline void addedge(int f,int t,int w){
e[++pl].t=t;
e[pl].n=h[f];
e[pl].w=w;
h[f]=pl;
}
long long n,m,u,v,s,i,j,k;
long long left,right,mid,ans;
long long cost[20000];
long long q[100000],qh,qt;
bool iq[20000];
long long f[20000];
long long ka,kb,ww;
long long v0,v1,e0;
void spfa(int mma){
memset(f,-1,sizeof f);
memset(iq,0,sizeof iq);
qh=qt=0;
q[qt++]=u;
f[u]=0;
while(qh!=qt){
v0=q[qh++];
iq[v0]=false;
for(e0=h[v0];e0;e0=e[e0].n){
v1=e[e0].t;
if(cost[v1]>mma) continue;
if(f[v1]==-1 || f[v1] > f[v0] + e[e0].w){
f[v1] = f[v0] + e[e0].w;
if(!iq[v1]){
iq[v1]=true;
q[qt++]=v1;
}
}
}
}
}
int main(){
freopen("cost.in","r",stdin);
freopen("cost.out","w",stdout);
scanf("%lld%lld%lld%lld%lld",&n,&m,&u,&v,&s);
left=0x7fffffff;
for(i=1;i<=n;++i){
scanf("%lld",cost+i);
if(cost[i]<left) left=cost[i];
if(cost[i]>right) right=cost[i];
}
for(i=1;i<=m;++i){
scanf("%lld%lld%lld",&ka,&kb,&ww);
addedge(ka,kb,ww);
addedge(kb,ka,ww);
}
spfa(right);
if(f[v]==-1 || f[v] > s){
printf("-1\n");
return 0;
}
while(left<=right){
mid=(left+right)/2;
spfa(mid);
if( f[v] == -1 || f[v] > s ){
left=mid+1;
}else{
right=mid-1;
ans=mid;
}
}
printf("%lld\n",ans);
return 0;
}

  

15 day 1代碼的更多相关文章

  1. 配置editplus,讓其支持代碼自動格式化功能.

    使用editplus已經好多年了,累積了不少的東西,想換IDE比較麻煩,所以就研究了一下用editplus搭配gofmt.exe配置go語言代碼自動格式化的功能.還好功夫不負有心人,終於被我搞懂了,不 ...

  2. 我用了13行代碼開發出来的PHP框架

    我只用13行代碼開發的PHP框架,如果您對框架不理解,不知道框架究竟幫您做了什麽事,可以下載此框架看一下, 另外如果您想開發自己的框架也可以由這個框架的思路進行擴展. 源碼下載地址:http://do ...

  3. 关于ios 8 7 下的模态窗口大小的控制 代碼+場景(mainstoryboard)( Resizing UIModalPresentationFormSheet )

    1 代碼 UIViewController* modalController = [[UIViewController alloc]init];modalController.modalTransit ...

  4. phper談談最近重構代碼的感受(1)

    作爲一個工作時間並不算長的phper,卻參與了兩家公司的代碼重構.下面談談我的一些感受. 在mjm公司,當時我負責日常的需求開發和2.0的重構.當初的重構更多的是clean codes和一些代碼規範上 ...

  5. ruby簡單的代碼行統計工具

    看代码 # encoding: utf-8 class CodeLineStat attr_reader :code_lines def initialize @code_lines = 0 end ...

  6. Mybatis逆向生成代碼

    Idea 单模块 1.在pom.xml中添加依赖 <build> <plugins> <plugin> <groupId>org.mybatis.gen ...

  7. 華氏溫度轉化為攝氏溫度的簡單JavaScript代碼

    今天,跟著W3School學到了"JavaScript函數",代碼都挺簡單的,在運算符調用函數的地方寫了一個小程序.原碼程序是這樣的: <!DOCTYPE html> ...

  8. IO流簡單代碼

    今天測試了一下,在博客園裏HTML源碼編譯器裏寫CSS内部樣式,更新編譯后,内部樣式可用,但是會將寫的内部樣式代碼强制加上代碼注釋進行編譯,有點類似于强制注入.編譯后的效果就是在前面加入了一個空的p標 ...

  9. [個人紀錄] WindowsLiveWriter 插入代碼跳出錯誤

    跳出找不到設定檔Can’t load configruaration fromC:\Users\…\AppData\Roaming\Windows Live Writer\WindowsLiveWri ...

随机推荐

  1. JavaScript事件---事件绑定和深入

    发文不易,转载传播,请亲注明链接出处,谢谢! 内容提纲: 1.传统事件绑定的问题 2.W3C事件处理函数 3.IE事件处理函数 4.事件对象的其他内容 事件绑定分为两种:一种是传统事件绑定(内联模型, ...

  2. [设计模式] javascript 之 单件模式

    单件模式说明 1. 说明:单件模式,就是静态化的访问中已经实例化的对象,这个对象只能通过一个唯一的入口访问,已经实例或待实例化的对象:面向对象语言如Java, .Net C#这样的服务端动态语言里,能 ...

  3. c# 关于浅拷贝和深拷贝

    class Program { static void Main(string[] args) { //浅拷贝 Person p1 = new Person(); p1.Name = "张三 ...

  4. 【Moqui框架】Moqui连接各种类型的数据库

    Moqui连接mysql数据库 各种数据库的连接文本: -- Derby<datasource group-name="transactional" database-con ...

  5. nginx 出现413 Request Entity Too Large问题的解决方法

    nginx 出现413 Request Entity Too Large问题的解决方法 使用php上传图片(大小1.9M),出现 nginx: 413 Request Entity Too Large ...

  6. simple-LDAP-auth

    <?php /** * simple class for LDAP authentification * Copyright (C) 2013 Petr Palas This program i ...

  7. ovs-agent流程

    1. 代码流程分析 neutron/plugins/openvswitch/agent/ovs_neutron_agent.py:main() plugin = OVSNeutronAgent(**a ...

  8. c#创建ISS站点

    private void CreateWebSite() { try { string installPath = "C:\\Program Files\\MyWeb"; stri ...

  9. maven运行javaWeb项目

    首先从svn下载下来的maven项目,需要点击项目,然后import--->Existing Maven Projects->全选之后点next就转换成功了,然后 run as--> ...

  10. EasyUI datagrid 格式化显示数据

    http://blog.163.com/ppy2790@126/blog/static/103242241201512502532379/ 设置formatter属性,是一个函数,格式化函数有3个参数 ...