USACO2018DEC GOLD
好简单啊。。
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的更多相关文章
- Baskets of Gold Coins_暴力
Problem Description You are given N baskets of gold coins. The baskets are numbered from 1 to N. In ...
- [UCSD白板题] Take as Much Gold as Possible
Problem Introduction This problem is about implementing an algorithm for the knapsack without repeti ...
- XidianOJ 1120 Gold of Orz Pandas
题目描述 Orz Panda is addicted to one RPG game. To make his character stronger, he have to fulfil tasks ...
- POJ 3274 Gold Balanced Lineup
Gold Balanced Lineup Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10924 Accepted: 3244 ...
- 哈希-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 ...
- Gold Coins 分类: POJ 2015-06-10 15:04 16人阅读 评论(0) 收藏
Gold Coins Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 21767 Accepted: 13641 Desc ...
- 2012 #5 Gold miner
Gold miner Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Pots of gold game:看谁拿的钱多
问题描述: Pots of gold game: Two players A & B. There are pots of gold arranged in a line, each cont ...
- [LOJ 1030] Discovering Gold
B - Discovering Gold Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...
随机推荐
- STL vector常见用法详解
<算法笔记>中摘取 vector常见用法详解 1. vector的定义 vector<typename> name; //typename可以是任何基本类型,例如int, do ...
- python中进程的几种创建方式
在新创建的子进程中,会把父进程的所有信息复制一份,它们之间的数据互不影响. 使用os.fork()创建 该方式只能用于Unix/Linux操作系统中,在windows不能用. import os # ...
- ProGuard 最全混淆规则说明
Input/Output Options 输入输出选项 -include filename 递归引入目录的配置文件 -basedirectory directoryname -injars class ...
- Auto-increment 自动增长
Auto-increment 会在新记录插入表中时生成一个唯一的数字. AUTO INCREMENT 字段 我们通常希望在每次插入新记录时,自动地创建主键字段的值. 我们可以在表中创建一个 auto- ...
- 问题:com.alibaba.dubbo.rpc.RpcException: Failed to invoke ......
个人解决流程: 一看到这个问题,下意识想到了是dubbo远程连接的问题,可能是dubbo本身的问题,于是在虚拟机上另外一台dubbo能正常脸上的服务器上重新尝试,还是报相同的错误,并且在dubbo-a ...
- ORACLE (BLOB、CLOB、NCLOB、BFILE)
LOB类型 内置的LOB数据类型包括BLOB.CLOB.NCLOB.BFILE(外部存储)的大型化和非结构化数据,如文本.图像.视屏.空间数据存储.BLOB.CLOB.NCLOB类型 4.1 CLOB ...
- 第二篇.2、python基础之字符编码
一 了解字符编码的知识储备 一 计算机基础知识 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的 ...
- 修改mysql的binlog的位置
最近项目上装的mysql服务,分配的磁盘空间太小了,导致binlog两天时间就能打满,这里记录下处理方式 mysql的binlog日志是一个很重要的日志,以事件形式记录了所有的DDL和DML(除了数据 ...
- c# HttpClient和HttpWebRequest添加Basic类型的Authentication认证
c#项目中用到调用客户接口,basic身份认证,base64格式加密(用户名:密码)贴上代码以备后用 1.使用HttpClient实现basic身份认证 using (HttpClient clien ...
- win7安装xmanager报错error1303、err1317
安装xmanager时出现的一些问题,记录如下. 1.安装xmanager时,提示error1303.如下图,按照百度的办法,创建相应的文件夹后,点击重试. 2.重试后提示err1317,如下图所示. ...