2017CCPC Final (哈尔滨)

Time:

Link


A

分析

 ym:czh推了个公式,答案是n-1,没加Case wa了一发,我来背锅了


B

题意

 

分析

 


C

分析

ym:简单的博弈游戏,大家一起玩一玩就清楚套路了


 

D

题意

 

分析

 


E

分析

签到,简单的模拟


F

题意

 

分析

 


G

题意

 给出一些区间,让你选k个区间,使其覆盖的点最多

分析

 czh:定义dp[i][j] :前i个点,选择j个区间的最大值。

#include 
#include 
using namespace std;
#define ll long long

const int maxn = 2005;

int t[maxn],dp[maxn][maxn];
int main()
{
    int T;
    cin>>T;
    for(int cn=1;cn<=T;cn++)
    {
        int ans=0;
        int n,m,k;
        scanf("%d %d %d",&n,&m,&k);
        for(int i=0;i<=n;i++)
        {
            for(int j=0;j<=k;j++)dp[i][j]=0;
            t[i]=0;
        }
        for(int i=1;i<=m;i++)
        {
            int x,y;
            scanf("%d %d",&x,&y);
            for(int j=x;j<=y;j++)
            {
                t[j]=max(t[j],y);
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=k;j++)
            {
                if(t[i])
                    dp[t[i]][j]=max(dp[t[i]][j],dp[i-1][j-1]+t[i]-i+1);
                dp[i][j]=max(dp[i][j],dp[i-1][j]);
            }
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=k;j++)
                ans=max(ans,dp[i][j]);
         cout<<"Case #"<

  


H

题意

 

分析

 


I

题意

 

分析

 


J

题意

 

分析

czh: 一道简单的差分约束题

#include 
#include 
#include 
#include 
#include 
using namespace std;
const int maxn=2005;
int f[maxn],w[maxn*3],to[maxn*3],nex[maxn*3];
bool vis[maxn];
int out[maxn],cnt=0,dis[maxn],n,m,k;
void add(int a,int b,int c)
{
    cnt++;
    w[cnt]=c;
    to[cnt]=b;
    nex[cnt]=f[a];
    f[a]=cnt;
}
bool spfa()
{
    for(int i=1; ique;
    que.push(1);
    vis[1]=1;
    dis[1]=0;
    while(que.size())
    {
      //  for(int i=1;i<=n;i++)printf(" %d",dis[i]);cout<n)
            return false;
        for(int i=f[x]; i; i=nex[i])
        {
          //  cout<dis[to[i]])
            {
                dis[to[i]]=dis[x]+w[i];
                if(vis[to[i]]==0)
                {
                    que.push(to[i]);
                    vis[to[i]]=1;
                }
            }
        }
    }
    return true;
}
int main()
{
    int T;
    cin>>T;
    for(int cn=1; cn<=T; cn++)
    {
        cnt=0;
        scanf("%d %d %d",&n,&m,&k);
        for(int i=1; i

  


K

分析

ym:差分打表,会发现差分结果差21,推出一个多项式,但要用高精度, 但Java不熟悉耽误了半天时间


Summary:

ym:没加Case 贡献一发罚时,x,y搞反了贡献一发罚时,震惊,ym贡献了全队2/3的罚时

czh:

hxx: 

转载于:https://www.cnblogs.com/Deadline/p/9649467.html

你可能感兴趣的:(2017CCPC Final (哈尔滨))