首页 > 其他分享 >2022 Jiangsu Collegiate Programming Contest

2022 Jiangsu Collegiate Programming Contest

时间:2022-10-09 15:36:01浏览次数:46  
标签:Jiangsu Contest int ll Programming long define dp dq

A PENTA KILL!

题意:给定一个击杀序列 判断是否有一个人连续击杀五个不同的人

分析:

开始很容易走到一个误区 出现连续相同的就舍去从零开始计数

但是比如 A C B C A D 遇到两个C 舍去从零开始 但是实际上 可以是后面四个组成

数据允许n方 所以枚举每个五杀开头 判断能否成立即可

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
const int maxn=2e3+5; 
int n,cnt,pd;
string s[maxn],t[maxn];
map<string,int>mp;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>s[i]>>t[i];
	for(int i=1;i<=n;i++){
		if(pd)break;
		set<string>Q;
		Q.insert(t[i]);
		for(int j=i+1;j<=n;j++){
			if(s[i]!=s[j])continue;
			if(Q.find(t[j])!=Q.end())
				break;
			else Q.insert(t[j]);
			if(Q.size()==5)pd=1;
		}
	}
	if(pd)cout<<"PENTA KILL!"<<endl;
	else cout<<"SAD:("<<endl;
     return 0;
}

C. Jump and Treasure

题意:

分析:

很容易写出方程 dp[i]=max(dp[j])+q[i] 暴力转移肯定会超时

求这种连续滑动的最大最小值可以用单调队列优化

#include <bits/stdc++.h>
#define endl '\n'
#define IOS ios::sync_with_stdio(false);
using namespace std;

typedef long long ll;
const ll INF = 0x3f3f3f3f;
const ll MAXN = 1e6 + 10;
ll n, q, p;
struct Node
{
    ll val, pos;
} a[MAXN];
ll dp[MAXN];
int main()
{
    cin >> n >> q >> p;
    for (int i = 1; i <= n; ++i)
    {
        cin >> a[i].val;
        a[i].pos = i;
    }
    while (q--)
    {
        ll x;
        cin >> x;

        if (x > p)
        {
            cout << "Noob" << endl;
            continue;
        }

        dp[0] = 0;
        vector<ll> v;
        v.push_back(0); 
        for (int i = x; i <= n; i += x)
        {
            v.push_back(i);
        }
        v.push_back(n + 1); 

        deque<ll> dq;
        dq.push_back(0);  

        for (int i = 1; i < v.size(); ++i)
        {
            while (dq.size() && v[i] - dq.front() > p)
                dq.pop_front();
            dp[v[i]] = dp[dq.front()] + a[v[i]].val;
            while (dq.size() && dp[dq.back()] < dp[v[i]])
                dq.pop_back();
            dq.push_back(v[i]);        
        }
        cout << dp[n+1]<< endl;
    }
	return 0;
}


I. Cutting Suffix

题意:

签到题没啥说的

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
string s;
int main(){
	cin>>s;
	int len=s.size();
	int pd=1;
	for(int i=1;i<s.size();i++)
		if(s[i]!=s[0]){
			pd=0;break;
	}
	if(pd)cout<<len-1<<endl;
	else cout<<0<<endl;
     return 0;
}

J. Balanced Tree

题意:

分析:

#define ll unsigned long long int

ll dfs(ll x, ll a, ll b, ll c)
{
	if (x == 0) return 0;
	if (x == 1) return c;
	if (x & 1) return dfs(x >> 1, a * 2 + b, b, c + b);
	else return dfs(x >> 1, a, a + b * 2, c + a);
}
 
int main()
{
	IOS;
	int T; cin >> T;
	while (T--)
	{
		ll ans = 1;
		ll n; cin >> n;													
		ll c = dfs(n, 1, 0, 0);
		if (c >= 64) ans = 0;
		else ans <<= c;
		cout << ans << endl;
	}
 
 
	return 0;
}

K. aaaaaaaaaaA heH heH nuN

题意:

分析:
好气啊 明明思路和题解一模一样 但是我写出来就是re

#include<bits/stdc++.h>
 
using namespace std;
int cnt[42];
typedef long long ll;
ll pow2[40];
void init()
{
    pow2[0]=1;
    for(int i=1;i<=31;i++)
        pow2[i]=pow2[i-1]*2;
        return;
}
int main(){
  
  init();
  int t;
  cin>>t;
 
  while(t--){
      int n,ans=0;
      cin>>n;
      for(int i=31;i>0;i--)
          cnt[i]=0;
      for(int i=31;i>0;i--)
      {
          if(n>=pow2[i])
          {
              cnt[i]++;
              n-=(pow2[i]);
              cnt[1]++;
          }
      }
      if(n%2)
          cnt[1]++;
      cout<<"nunhehhe";
      for(int i=31;i>0;i--)
      {
          for(int j=0;j<cnt[i];j++)
              cout<<"h";
          cout<<"a";
      }
      cout<<"\n";
  }
 
 
  
}

标签:Jiangsu,Contest,int,ll,Programming,long,define,dp,dq
From: https://www.cnblogs.com/wzxbeliever/p/16772295.html

相关文章

  • AtCoder Beginner Contest 272 D Root M Leaper
    RootMLeaper\(bfs\)模拟先把能走的矩阵预处理出来,然后直接跑\(bfs\)要注意各种边界#include<iostream>#include<cstdio>#include<array>#include<queue>us......
  • Weekly Contest 313
    WeeklyContest313ProblemANumberofCommonFactors思路数据范围小,直接暴力就完事了代码classSolution:defcommonFactors(self,a:int,b:int)->int:......
  • CCPC Finals 2021 H Harie Programming Contest (网络流&支配树的妙用)
    Link题意:给一个二分图,求有多少种方案删去恰好两个点,使得最大匹配数不变。\(n,m\le2\times10^5\)。二话不说先跑一遍Dinic网络流,设残量网络形成的图为\(G\)。然后......
  • MSU Trinity Contest Petrozavodsk Winter Camp 2014
    题目列表A.MEX-QueryD.ShortEnoughTaskF.JustAnotherSequenceProblemA.ABBA题意:Solution思路:CodeconstintN=1000010;intn,......
  • The 2021 ICPC Asia Shenyang Regional Contest
    比赛链接:https://codeforces.com/gym/103427B.BitwiseExclusive-ORSequence题意:给定\(m\)个限制,要求构造一个全是非负整数的序列\(a\),每个限制告诉\(u,v,w\),......
  • 「题解」Codeforces GYM 102268 J Jealous Split(300iq Contest 1 J)
    怎么想到的结论?结论是,如果把看成最小化\(\sum{s_i}^2\),那么一定满足条件。证明是考虑如果相邻两段\(s>t\),如果不满足条件即\(s-t>\max\),说明将\(s\)和\(t\)交界处......
  • AtCoder Beginner Contest 271
    咕咕咕咕。E-SubsequencePath最短路问题变种,Dijkstra最短路改改就行了。AC代码//Problem:E-SubsequencePath//Contest:AtCoder-KYOCERAProgrammingC......
  • AtCoder Regular Contest 149
    ARC149A-RepdigitNumber符合条件的数一共只有\(9N\)个,随便怎么做都行。ACCodeARC149B-TwoLISSum这个操作相当于我们可以将\(A\)任意排列,然后对\(B\)进行......
  • AtCoder Regular Contest 149(持续更新)
    Preface最近国庆在外面玩的有点high啊,欠了一篇AT和两篇CF没写,今天先浅浅写一下这场当时10.2号在外面玩得有点晚了,到寝室刚好比赛开始,晚饭都没吃就开干了主要是C写的太久......
  • AtCoder Regular Contest 149
    A发现所有数字都相同的数一共只有\(10^6\)种,考虑枚举每种情况,关键在于如何判断一个数\(\bmodm\)是否为\(0\)。考虑\(9\bmod8=1\),而\(99\bmod8=(9\times10+9)\b......