Codeforces 802 补题

A

水题 同B

#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
const int maxn=1000000;
int n,k,a[maxn],num;
bool ex[maxn],need[maxn];
int main()
{//freopen("t.txt","r",stdin);
 scanf("%d%d",&n,&k);
 num=0;
 memset(ex,0,sizeof(ex));
 for(int i=0;i<n;i++)
 	scanf("%d",&a[i]);
 int ans=0;
 for(int i=0;i<n;i++)
 	{
     if(ex[a[i]]) continue;
     if(num<k)
     	{
     	 num++;
     	 ans++;
     	 ex[a[i]]=true;
		}
		else
			{
			 int sum=0;
			 memset(need,0,sizeof(need));
			 for(int j=i+1;j<n&&sum<k-1;j++)
			 	{
			 	 if(!ex[a[j]])continue;

			 	 if(need[a[j]]==false)sum++;
			 	 need[a[j]]=true;
				}
			 for(int j=1;j<=n;j++)
			 	{
			 	 if(ex[j]&&(!need[j])){ex[j]=false;ex[a[i]]=true;ans++;break;}
				}
			}
 	}
 printf("%d\n",ans);
 return 0;
}

  

B

C

D

根据泊松分布的特点,对称轴两边的概率密度最大。

用这个特点来判断是泊松分布还是平均分布。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int a[250],b[250];
int main()
{
 int T;
 scanf("%d",&T);
 while(T--)
 	{

 	 for(int i=0;i<250;i++)scanf("%d",&a[i]);
 	 //for(int i=0;i<250;i++)scanf("%d",&b[i]);
 	 int mina=a[0],maxa=a[0],minb=b[0],maxb=b[0];
 	 double mida=0;
 	 for(int i=0;i<250;i++)
 	 	{
 	 	 mida+=a[i];
 	 	 //minb=min(minb,b[i]);maxb=max(maxb,b[i]);
		}
	 mida/=250.;
	 int sum=0,sumb=0;
	 double len=mida/2;
	 for(int i=0;i<250;i++)
	 	{
	 		if(a[i]>(mida-len)&&a[i]<(mida+len))sum++;
	 		if(a[i]<=1)sumb++;
		}
	 if(sum<180||sumb>3)printf("uniform\n");
	 	else printf("poisson\n");
	}
 return 0;
}

  

E

F

G

公共子序列问题 O(N^2)

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<string>
#include<vector>
#include<cstring>
using namespace std;
int dp[1000][1000];
int LCS(int n1,int n2,string s1,string s2)
{
 for(int i=0;i<n1;i++)
 	for(int j=0;j<n2;j++)
 		{
 		 if(i>0)dp[i][j]=dp[i-1][j];
		 if(j>0&&dp[i][j-1]>dp[i][j])dp[i][j]=dp[i][j-1];
		 if(s1[i]==s2[j])
		 	{
		 	 if(i==0||j==0)dp[i][j]=1;
		 	 else dp[i][j]=dp[i-1][j-1]+1;
			}
		}
 return dp[n1-1][n2-1];
}
int main()
{//freopen("t.txt","r",stdin);
 ios::sync_with_stdio(false);
 string s1,s2;
 s2="heidi";
 while(cin>>s1)
 	{
 	 memset(dp,0,sizeof(dp));
 	 int len=LCS(s1.length(),s2.length(),s1,s2);
 	 if(len==5)printf("YES\n");
 	 	else printf("NO\n");
	 s1.clear();s2.clear();
	}
 return 0;
}

  

H

I

J

水题

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<string>
#include<vector>
#include<cstring>
using namespace std;
vector<int>adj[200];
int w[200][200];
int dist[200];
void dfs(int cur,int fa,int len)
{
 for(int i=0;i<adj[cur].size();i++)
 	{
 	 int ne=adj[cur][i];
 	 if(ne==fa)continue;
 	 dist[ne]=min(dist[ne],len+w[cur][ne]);
 	 dfs(ne,cur,len+w[cur][ne]);
	}
}
int main()
{//freopen("t.txt","r",stdin);
 int n;
 scanf("%d",&n);
 int u,v;
 for(int i=0;i<n-1;i++)
 	{
 	 scanf("%d%d",&u,&v);
 	 scanf("%d",&w[u][v]);
 	 w[v][u]=w[u][v];
 	 adj[u].push_back(v);
 	 adj[v].push_back(u);
	}
 for(int i=1;i<n;i++)
 	dist[i]=99999999;
 dist[0]=0;
 dfs(0,-1,0);
 int ans=0;
 for(int i=0;i<n;i++)
 	ans=max(ans,dist[i]);
 printf("%d\n",ans);
 return 0;
}

  

K

L

M

每个序列排序后前k个数的和

#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int num[3000];
int main()
{//freopen("t.txt","r",stdin);
 int n,m,t;
 int mins=-1;
 scanf("%d%d",&n,&m);
 for(int i=0;i<n;i++)
 {

 	scanf("%d",&num[i]);
 }
 sort(num,num+n);
  int ans=0;
 for(int i=0;i<m;i++)
 	ans+=num[i];
 printf("%d\n",ans);
 return 0;
}

  

时间: 2024-10-07 19:35:02

Codeforces 802 补题的相关文章

Codeforces VP/补题小记 (持续填坑)

Codeforces VP/补题小记 1149 C. Tree Generator 给你一棵树的括号序列,每次交换两个括号,维护每次交换之后的直径. ? 考虑括号序列维护树的路径信息和,是将左括号看做 \(-1\) ,右括号看做 \(1\) ,那么一段竖直向上的路径可以表示为括号序列的一个区间和,一段竖直向下的路径可以看做括号序列的一个区间和的相反数.我们要维护的是树的直径,也就是一段连续的和减去紧随其后的一段连续的差.具体来说就是 \[ \max_{\forall [l,r]}\{\sum_{

codeforces 984补题

codeforces 984a 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int num[1010]; 5 int main(){ 6 scanf("%d",&n); 7 for(int i=1;i<=n;i++) scanf("%d",&num[i]); 8 sort(num+1,num+n+1); 9 if(n%2==1) printf("%

codeforces打完补题

https://codeforces.com/contest/1234/problem/D 写了个巨蠢的线段树(不愧是垃圾),有必要提醒下自己这种题怎么做 #include<iostream> #include<cstdio> #include<string> #include<set> #include<algorithm> using namespace std; const int maxn = 32; set<int> st[

Educational Codeforces Round 24 CF 818 A-G 补题

6月快要结束了 期末也过去大半了 马上就是大三狗了 取消了小学期后20周的学期真心长, 看着各种北方的学校都放假嗨皮了,我们这个在北回归线的学校,还在忍受酷暑. 过年的时候下定决心要拿块ACM的牌子,一直坚持刷题,这一个学期刷了200道吧,感觉还是小有收获.特别是Ural和Codeforces上的题,质量很高. 然后4月的校赛,5月的省赛,发挥的也一般,不过也没有太失常. 希望暑假的选拔赛能碰到有趣的队友 蛤蛤. 这两天各种考试,实在是太忙,看了一下edu24的题目,不是很容易,做了一道水题,以

Educational Codeforces Round 74 (Rated for Div. 2)补题

慢慢来. 题目册 题目 A B C D E F G 状态 √ √ √ √ × ? ? //√,×,? 想法 A. Prime Subtraction res tp A 题意:给定\(x,y(x>y)\),问能否将\(x-y\)拆成任意多个质数之和 1.任意大于\(1\)的整数\(k\)都可以用\(2\)与\(3\)的线性表示 证: 若\(k\)是偶数,显然: 若\(k\)是奇数,则\(k\)可以表示成\(k = 3 + 2*k'\),显然: 毕. #include<bits/stdc++.h&

Codeforces Round #634 (Div. 3) 补题

A. Candies and Two Sisters 签到题,直接输出即可 代码 #include<bits/stdc++.h> #define INF 0x3f3f3f3f typedef long long ll; using namespace std; inline void read(int &p) { p=0;int flag=1;char c=getchar(); while(!isdigit(c)) {if(c=='-') flag=-1;c=getchar();} w

4.30-5.1cf补题

//yy:拒绝转载!!! 悄悄告诉你,做题累了,去打两把斗地主就能恢复了喔~~~ //yy:可是我不会斗地主吖("'▽'") ~~~那就听两遍小苹果嘛~~~ 五一假期除了花时间建模,就抽空把最近没做的CF题补了点..毕竟明天开始又要继续上好多课呐...Yes, I can!(? •_•)?……(I can Huá shuǐ~~) codeforces 803 A. Maximal Binary Matrix   [简单构造] 题意:n行和n列填充零矩阵. 您要将k个1放在其中,使得得到

[2015hdu多校联赛补题]hdu5371 Hotaru&#39;s problem

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5371 题意:把一个数字串A翻过来(abc翻过来为cba)的操作为-A,我们称A-AA这样的串为N-sequence,现在给你一个数字串,问你这个串中最长的N-sequence子串长度 解:可以想到A-A是一个回文串,-AA也是一个回文串,那么首先Manacher跑一遍求出所有回文子串 可以想到任意两个互相覆盖的回文子串都可以表示成N-sequence 然后有三种搞法: 1.时间复杂度O(N*logN

补题 留空

这两道题虽然不是很难,但是目前还不会,在这留个地,省赛之后多刷点这种类型的题,再补上. 1. http://acm.hdu.edu.cn/showproblem.php?pid=3306 矩阵快速幂的题,相加平方和. 2.http://acm.hdu.edu.cn/showproblem.php?pid=3308 线段树 补题 留空,码迷,mamicode.com