好简单啊。。

T1裸分层图最短路。

T2裸容斥。

T3更水的DP。

代码

T1

#include <bits/stdc++.h>

#define rin(i,a,b) for(register int i=(a);i<=(b);++i)
#define irin(i,a,b) for(register int i=(a);i>=(b);--i)
#define trav(i,a) for(register int i=head[a];i;i=e[i].nxt)
typedef long long LL; using std::cin;
using std::cout;
using std::endl; inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
return x*f;
} const int MAXN=50005;
const int MAXM=100005; int n,m,k,ecnt,head[MAXN<<1];
LL dis[MAXN<<1];
bool book[MAXN<<1]; struct Edge{
int to,nxt,w;
}e[MAXM*4+MAXN]; inline void add_edge(int bg,int ed,int val){
++ecnt;
e[ecnt].to=ed;
e[ecnt].nxt=head[bg];
e[ecnt].w=val;
head[bg]=ecnt;
} std::queue<int> q; void spfa(){
while(!q.empty()) q.pop();
memset(dis,0x3f,sizeof dis);
dis[n]=0;
q.push(n);
book[n]=true;
while(!q.empty()){
int x=q.front();
trav(i,x){
int ver=e[i].to;
if(dis[ver]>dis[x]+e[i].w){
dis[ver]=dis[x]+e[i].w;
if(!book[ver]){
q.push(ver);
book[ver]=true;
}
}
}
q.pop();
book[x]=false;
}
} int main(){
n=read(),m=read(),k=read();
rin(i,1,m){
int u=read(),v=read(),w=read();
add_edge(u,v,w);
add_edge(v,u,w);
add_edge(u+n,v+n,w);
add_edge(v+n,u+n,w);
}
rin(i,1,k){
int x=read(),y=read();
add_edge(x,x+n,-y);
}
spfa();
rin(i,1,n-1){
if(dis[n+i]<=dis[i]) printf("1\n");
else printf("0\n");
}
return 0;
}

T2

#include <bits/stdc++.h>

#define rin(i,a,b) for(register int i=(a);i<=(b);++i)
#define irin(i,a,b) for(register int i=(a);i>=(b);--i)
#define trav(i,a) for(register int i=head[a];i;i=e[i].nxt)
typedef long long LL; using std::cin;
using std::cout;
using std::endl; inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
return x*f;
} typedef std::pair<int,int> tw;
typedef std::pair<int,tw> tr;
typedef std::pair<tw,tw> fo;
typedef std::pair<tw,tr> fi; inline tw mktw(int x,int y){
return (tw){x,y};
} inline tr mktr(int x,int y,int z){
return (tr){x,mktw(y,z)};
} inline fo mkfo(int x,int y,int z,int v){
return (fo){mktw(x,y),mktw(z,v)};
} inline fi mkfi(int x,int y,int z,int v,int w){
return (fi){mktw(x,y),mktr(z,v,w)};
} int n;
int mp1[1000005];
std::map<tw,int> mp2;
std::map<tr,int> mp3;
std::map<fo,int> mp4;
std::map<fi,int> mp5; int main(){
n=read();
rin(i,1,n){
int a[6];
a[1]=read(),a[2]=read(),a[3]=read(),a[4]=read(),a[5]=read();
std::sort(a+1,a+6);
int x=a[1],y=a[2],z=a[3],v=a[4],w=a[5];
++mp1[x];
++mp1[y];
++mp1[z];
++mp1[v];
++mp1[w];
++mp2[mktw(x,y)];
++mp2[mktw(x,z)];
++mp2[mktw(x,v)];
++mp2[mktw(x,w)];
++mp2[mktw(y,z)];
++mp2[mktw(y,v)];
++mp2[mktw(y,w)];
++mp2[mktw(z,v)];
++mp2[mktw(z,w)];
++mp2[mktw(v,w)];
++mp3[mktr(x,y,z)];
++mp3[mktr(x,y,v)];
++mp3[mktr(x,y,w)];
++mp3[mktr(x,z,v)];
++mp3[mktr(x,z,w)];
++mp3[mktr(x,v,w)];
++mp3[mktr(y,z,v)];
++mp3[mktr(y,z,w)];
++mp3[mktr(y,v,w)];
++mp3[mktr(z,v,w)];
++mp4[mkfo(x,y,z,v)];
++mp4[mkfo(x,y,z,w)];
++mp4[mkfo(x,y,v,w)];
++mp4[mkfo(x,z,v,w)];
++mp4[mkfo(y,z,v,w)];
++mp5[mkfi(x,y,z,v,w)];
}
LL ans=0;
rin(i,1,1000000) ans+=1ll*mp1[i]*(mp1[i]-1)/2;
for(register std::map<tw,int>::iterator it=mp2.begin();it!=mp2.end();++it) ans-=1ll*it->second*(it->second-1)/2;
for(register std::map<tr,int>::iterator it=mp3.begin();it!=mp3.end();++it) ans+=1ll*it->second*(it->second-1)/2;
for(register std::map<fo,int>::iterator it=mp4.begin();it!=mp4.end();++it) ans-=1ll*it->second*(it->second-1)/2;
for(register std::map<fi,int>::iterator it=mp5.begin();it!=mp5.end();++it) ans+=1ll*it->second*(it->second-1)/2;
printf("%lld\n",1ll*n*(n-1)/2-ans);
return 0;
}

T3

#include <bits/stdc++.h>

#define rin(i,a,b) for(register int i=(a);i<=(b);++i)
#define irin(i,a,b) for(register int i=(a);i>=(b);--i)
#define trav(i,a) for(register int i=head[a];i;i=e[i].nxt)
typedef long long LL; using std::cin;
using std::cout;
using std::endl; inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
return x*f;
} const int MAXN=10005;
const int MAXK=1005; int n,k,a[MAXN],f[MAXN]; int main(){
n=read(),k=read();
rin(i,1,n) a[i]=read();
f[0]=0;
rin(i,1,n){
int temp=0;
irin(j,i,std::max(i-k+1,1)){
temp=std::max(temp,a[j]);
f[i]=std::max(f[i],f[j-1]+temp*(i-j+1));
}
}
printf("%d\n",f[n]);
return 0;
}

USACO2018DEC GOLD的更多相关文章

  1. Baskets of Gold Coins_暴力

    Problem Description You are given N baskets of gold coins. The baskets are numbered from 1 to N. In ...

  2. [UCSD白板题] Take as Much Gold as Possible

    Problem Introduction This problem is about implementing an algorithm for the knapsack without repeti ...

  3. XidianOJ 1120 Gold of Orz Pandas

    题目描述 Orz Panda is addicted to one RPG game. To make his character stronger, he have to fulfil tasks ...

  4. POJ 3274 Gold Balanced Lineup

    Gold Balanced Lineup Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10924 Accepted: 3244 ...

  5. 哈希-Gold Balanced Lineup 分类: POJ 哈希 2015-08-07 09:04 2人阅读 评论(0) 收藏

    Gold Balanced Lineup Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13215 Accepted: 3873 ...

  6. Gold Coins 分类: POJ 2015-06-10 15:04 16人阅读 评论(0) 收藏

    Gold Coins Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 21767   Accepted: 13641 Desc ...

  7. 2012 #5 Gold miner

    Gold miner Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. Pots of gold game:看谁拿的钱多

    问题描述: Pots of gold game: Two players A & B. There are pots of gold arranged in a line, each cont ...

  9. [LOJ 1030] Discovering Gold

    B - Discovering Gold Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

随机推荐

  1. Python 入门 之 初识面向对象

    Python 入门 之 初识面向对象 1.初识面向对象编程 (核心--对象) (1)观察以下代码: # 面向过程编程 s = "alexdsb" count = 0 for i i ...

  2. postgres 常规操作杂记

    分布式:1.扩容不方便(数据重分布)2.分布键变更很麻烦3.分布键选择(架构设计)谨慎4.跨库join性能差5.分布式事务性能差6.sql限制多,功能确实多7.应用改造成本巨大8.全局一致性时间点恢复 ...

  3. leetcode 1267. Count Servers that Communicate

    You are given a map of a server center, represented as a m * n integer matrix grid, where 1 means th ...

  4. 禁止缩放meta标签

    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale= ...

  5. appium 自动化测试框架详读(一)

    appium框架使用的过程记录,开始使用markdown来语法来编写,不知道博客园是否会支持markdown语法 ***1. appium原理* appium启动时,创建一个http://127.0. ...

  6. 抗D十招:十个方法完美解决DDoS攻击防御难题

    可以说,DDoS是目前最凶猛.最难防御的网络攻击之一.现实情况是,这个世界级难题还没有完美的.彻底的解决办法,但采取适当的措施以降低攻击带来的影响.减少损失是十分必要的.将DDoS防御作为整体安全策略 ...

  7. Delphi 程序调试

  8. 4G漏洞

    4G VoLTE漏洞:可致用户地理位置和其它个人信息泄露 2017-08-05 LBS 首先要了解下,什么是VoLTE. VoLTE为英文Voice Over LTE的缩写,直译就是音频通过LTE网络 ...

  9. 10 Zabbix4.4.1系统告警“Zabbix server is not running”

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 Zabbix4.4.1系统告警“Zabbix server is not running” 第一步 ...

  10. 使用Spring Mail发送QQ邮件

    一.邮箱设置 QQ邮箱设置:http://service.mail.qq.com/cgi-bin/help?id=28, 下面这些服务需要开启(需要设置邮箱独立密码): 二.applicationCo ...