10.23 noip模拟试题
尼玛蛋pdf好难粘
直接写了
T1
- /*开始写wa了 我真弱2333 关于p的排序规则不只是差值 为了字典序最小 还要拍别的*/
- #include<cstdio>
- #include<algorithm>
- #define maxn 100010
- #define inf 1e7
- #define mem(a,b) for(int i=0;i<=n;i++)a[i]=b[i];
- using namespace std;
- int n,m,ans=inf,k;
- char s[maxn],r[maxn],l[maxn];
- struct node{
- int c,o;
- }p[maxn];
- int cmp(const node &x,const node &y){
- if(x.c!=y.c)return x.c<y.c;//差值优先
- int i=x.o,j=y.o;
- if(s[i]==s[j]){//相等的特盘
- if(s[i]-''<k)return i>j;
- else return i<j;
- }
- return s[i]>s[j];//优先改数大的 大的大的大的 话说这sort的cmp不能写很多if好像 会慢死
- }
- int Abs(int x){
- return x>?x:-x;
- }
- int Cmp(){
- for(int i=;i<=n;i++){
- if(l[i]<r[i])return ;
- if(l[i]>r[i])return ;
- }
- }
- int main()
- {
- freopen("number.in","r",stdin);
- freopen("number.out","w",stdout);
- scanf("%d%d%s",&n,&m,s+);
- for(k=;k<=;k++){
- for(int i=;i<=n;i++){
- p[i].c=Abs(s[i]-''-k);
- p[i].o=i;
- }
- sort(p+,p++n,cmp);
- int mx=;
- for(int i=;i<=m;i++)
- mx+=p[i].c;
- if(mx<ans){
- ans=mx;mem(r,s);
- for(int i=;i<=m;i++)
- r[p[i].o]=k+'';
- }
- else if(ans==mx){
- ans=mx;mem(l,s);
- for(int i=;i<=m;i++)
- l[p[i].o]=k+'';
- if(Cmp())mem(r,l);
- }
- }
- printf("%d\n",ans);
- for(int i=;i<=n;i++)
- printf("%c",r[i]);
- return ;
- }
T2
- /*
- 1 S=a1 c=a2-a1
- 2 S=a1 c=a3-a1
- 3 S=a2 c=a3-a2
- 我晕 还带验证合法性 尼玛SP个毛啊
- wo de da an dui a
- */
- #include<cstdio>
- #define maxn 200010
- using namespace std;
- int n,a[maxn],S,c,A[maxn],B[maxn],cnt;
- bool f[maxn];
- int init(){
- int x=,f=;char s=getchar();
- while(s<''||s>''){if(s=='-')f=-;s=getchar();}
- while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
- return x*f;
- }
- void Clear(){
- cnt=;
- for(int i=;i<=n;i++)
- f[i]=A[i]=B[i]=;
- }
- bool Judge(){
- int now=a[S];
- for(int i=S;i<=n;i++)
- if(a[i]==now){
- f[i]=;now+=c;B[++B[]]=a[i];
- A[]=;int falg=;
- for(int j=;j<=n;j++)
- if(!f[j])A[++A[]]=a[j];
- if(A[]<=||B[]<=)continue;
- int C=A[]-A[];
- for(int j=;j<=A[];j++)
- if(A[j]-A[j-]!=C){
- falg=;break;
- }
- if(falg==)return ;
- }
- }
- void Printf(){
- printf("%d ",B[]);
- for(int i=;i<B[];i++)
- printf("%d ",B[i]);
- printf("%d\n",B[B[]]);
- printf("%d ",A[]);
- for(int i=;i<A[];i++)
- printf("%d ",A[i]);
- printf("%d\n",A[A[]]);
- }
- int main()
- {
- freopen("progression.in","r",stdin);
- freopen("progression.out","w",stdout);
- n=init();
- for(int i=;i<=n;i++)
- a[i]=init();
- S=;c=a[]-a[];
- if(Judge()){Printf();return ;}
- Clear();S=;c=a[]-a[];
- if(Judge()){Printf();return ;}
- Clear();S=;c=a[]-a[];
- if(Judge()){Printf();return ;}
- printf("No solution\n");
- return ;
- }
T3
- /*我尼玛今天刚意识到 这样Dfs是O(m)的啊 啊 啊 很自信地暴力 华丽的T了*/
- #include<cstdio>
- #define maxm 10010
- #define maxn 510
- using namespace std;
- int n,m,Q,num,head[maxn],f[maxn],cnt,l,r;
- struct node{
- int o,v,pre;
- }e[maxm*];
- int init(){
- int x=,f=;char s=getchar();
- while(s<''||s>''){if(s=='-')f=-;s=getchar();}
- while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
- return x*f;
- }
- void Add(int from,int to,int x){
- num++;e[num].v=to;
- e[num].o=x;
- e[num].pre=head[from];
- head[from]=num;
- }
- void Dfs(int x){
- for(int i=head[x];i;i=e[i].pre){//O()O()O()O
- if((e[i].o>=l&&e[i].o<=r)||f[e[i].v])continue;
- f[e[i].v]=;Dfs(e[i].v);
- }
- }
- int main()
- {
- freopen("network5.in","r",stdin);
- freopen("network.out","w",stdout);
- n=init();m=init();int u,v;
- for(int i=;i<=m;i++){
- u=init();v=init();
- Add(u,v,i);Add(v,u,i);
- }
- Q=init();
- while(Q--){
- for(int i=;i<=n;i++)f[i]=;
- l=init();r=init();cnt=;
- for(int i=;i<=n;i++)
- if(f[i]==){
- f[i]=;cnt++;Dfs(i);
- }
- printf("%d\n",cnt);
- }
- return ;
- }
- /*
- 并茶几~
- 边老多老多 有很多很多虚的渣的没用的
- 因为不能用的是一段区间 所以能用的就是 前缀 后缀
- 预处理统计出有贡献的边们
- 然后Q次询问就成了每次O(n)
- */
- #include<cstdio>
- #define maxm 10010
- #define maxn 510
- #define Cf for(int i=0;i<=n;i++)fa[i]=i
- using namespace std;
- int n,m,Q,A[maxm],B[maxm],fa[maxn];
- struct node{
- int u,v;
- }p[maxm];
- int init(){
- int x=,f=;char s=getchar();
- while(s<''||s>''){if(s=='-')f=-;s=getchar();}
- while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
- return x*f;
- }
- int find(int x){
- if(x!=fa[x])return fa[x]=find(fa[x]);
- return fa[x];
- }
- int main()
- {
- freopen("network.in","r",stdin);
- freopen("network.out","w",stdout);
- n=init();m=init();int u,v;Cf;
- for(int i=;i<=m;i++){
- u=init();v=init();
- p[i].u=u;p[i].v=v;
- }
- for(int i=;i<=m;i++){
- int r1=find(p[i].u);
- int r2=find(p[i].v);
- if(r1!=r2){
- fa[r2]=r1;A[++A[]]=i;
- }
- }
- Cf;
- for(int i=m;i>=;i--){
- int r1=find(p[i].u);
- int r2=find(p[i].v);
- if(r1!=r2){
- fa[r2]=r1;B[++B[]]=i;
- }
- }
- Q=init();
- while(Q--){
- Cf;int l,r,cnt=;
- l=init();r=init();
- for(int i=;i<=A[];i++){
- if(A[i]>=l)break;
- int r1=find(p[A[i]].u);
- int r2=find(p[A[i]].v);
- if(r1!=r2){
- fa[r2]=r1;cnt++;
- }
- }
- for(int i=;i<=B[];i++){
- if(B[i]<=r)break;
- int r1=find(p[B[i]].u);
- int r2=find(p[B[i]].v);
- if(r1!=r2){
- fa[r2]=r1;cnt++;
- }
- }
- printf("%d\n",n-cnt);
- }
- return ;
- }
10.23 noip模拟试题的更多相关文章
- 10.26 noip模拟试题
enc[问题背景]zhx 和他的妹子聊天.[问题描述]考虑一种简单的加密算法.假定所有句子都由小写英文字母构成,对于每一个字母,我们将它唯一地映射到另一个字母.例如考虑映射规则:a->b, b- ...
- 10.3 noip模拟试题
希望[题目描述]网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,“前进栈”.“后退栈”.这里你需要实现以下几个功能:BACK: 如果“后退栈”为空则忽略此命令. 否则将当前两面压入“ ...
- 9.23 noip模拟试题
Problem 1 抓牛(catchcow.cpp/c/pas) [题目描述] 农夫约翰被通知,他的一只奶牛逃逸了!所以他决定,马上出发,尽快把那只奶牛抓回来. 他们都站在数轴上.约翰在N(O≤N ...
- 10.27 noip模拟试题
1.铺瓷砖(tile.cpp/c/pas)[问题描述]有一面很长很长的墙. 你需要在这面墙上贴上两行瓷砖. 你的手头有两种不同尺寸的瓷砖,你希望用这两种瓷砖各贴一行.瓷砖的长可以用分数表示,贴在第一行 ...
- 10.24 noip模拟试题
尼玛pdf依旧不会粘23333 /* 每段合并到总的里面 假设总的有X个 这一段有Y个 一共有X+1个空 那么就有 C(X+1,1)+C(X+1,2)+C(X+1,3)+...+C(X+1,Y) 这样 ...
- 10.18 noip模拟试题
分火腿 (hdogs.pas/.c/.cpp) 时间限制:1s:内存限制 64MB 题目描述: 小月言要过四岁生日了,她的妈妈为她准备了n根火腿,她想将这些火腿均分给m位小朋友,所以她可能需要切火腿. ...
- 10.13 noip模拟试题
Porble 1时间与空间之旅(tstrip.*) 题目描述 公元22××年,宇宙中最普遍的交通工具是spaceship.spaceship的出现使得星系之间的联系变得更为紧密,所以spaceship ...
- 10.11 noip模拟试题
4题均为128M,1s 1. 锻炼计划(exercise.pas) 身体是革命的本钱,OIers不要因为紧张的学习和整天在电脑前而忽视了健康问题.小x设计了自己的锻炼计划,但他不知道这个计划是否可行, ...
- 10.8 noip模拟试题
1.花 (flower.cpp/c/pas) [问题描述] 商店里出售n种不同品种的花.为了装饰桌面,你打算买m支花回家.你觉得放两支一样的花很难看,因此每种品种的花最多买1支.求总共有几种不同的 ...
随机推荐
- Phonegap 3.0 设置APP是否全屏
Phonegap 3.0 默认是全屏,如需要取消全屏,可手动修改config, 在APP/res/xml/config.xml文件可设置preference: <?xml version='1. ...
- 【技术贴】SqlServer2008 R2 安装失败提示出现以下错误 服务 MSSQLSERVERO
Feature: Analysis Services Status: 失败: 请查看日志了解详细信息 MSI status: 已通过 Configuration status: 失败: 请查看下 ...
- Android List<Map<String,String>转json(例子)
package com.armslee.json.test.cases; import java.util.ArrayList; import java.util.HashMap; import ja ...
- ? super T ? extends T
? super T ?保存的是 T类型或者T类型的父类 ? extends T ?保存的是 T类型或者T类型的子类
- luoguP2265 路边的水沟
题目:http://www.luogu.org/problem/show?pid=2265 题解:ans=C(n+m,n)%p 求一下逆元就行 代码: #include<cstdio> # ...
- ServiceStack.Redis常用操作 - 事务、并发锁
一.事务 使用IRedisClient执行事务示例: using (IRedisClient RClient = prcm.GetClient()) { RClient.Add("key&q ...
- 像素,分辨率,PPI(像素密度),BPP 扫盲
像素于分辨率 像素,又称画素,为图像显示的基本单位,译自英文“pixel”,pix是英语单词picture的常用简写,加上英语单词“元素”element,就得到pixel,故“像素”表示“图像元素”之 ...
- Codeforces Round #208 (Div. 2) 358D Dima and Hares
题目链接:http://codeforces.com/problemset/problem/358/D 开始题意理解错,整个就跪了= = 题目大意:从1到n的位置取数,取数的得到值与周围的数有没有取过 ...
- lightoj 1243 - Guardian Knights 最小费用流
#include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...
- Ubuntu 下安装opencv 编译后执行找不到库
在ubuntu下编译opencv程序后,执行报下面到错误:error while loading shared libraries: libopencv_core.so.2.4: cannot ope ...