尼玛蛋pdf好难粘

直接写了

T1

  1. /*开始写wa了 我真弱2333 关于p的排序规则不只是差值 为了字典序最小 还要拍别的*/
  2. #include<cstdio>
  3. #include<algorithm>
  4. #define maxn 100010
  5. #define inf 1e7
  6. #define mem(a,b) for(int i=0;i<=n;i++)a[i]=b[i];
  7. using namespace std;
  8. int n,m,ans=inf,k;
  9. char s[maxn],r[maxn],l[maxn];
  10. struct node{
  11. int c,o;
  12. }p[maxn];
  13. int cmp(const node &x,const node &y){
  14. if(x.c!=y.c)return x.c<y.c;//差值优先
  15. int i=x.o,j=y.o;
  16. if(s[i]==s[j]){//相等的特盘
  17. if(s[i]-''<k)return i>j;
  18. else return i<j;
  19. }
  20. return s[i]>s[j];//优先改数大的 大的大的大的 话说这sort的cmp不能写很多if好像 会慢死
  21. }
  22. int Abs(int x){
  23. return x>?x:-x;
  24. }
  25. int Cmp(){
  26. for(int i=;i<=n;i++){
  27. if(l[i]<r[i])return ;
  28. if(l[i]>r[i])return ;
  29. }
  30. }
  31. int main()
  32. {
  33. freopen("number.in","r",stdin);
  34. freopen("number.out","w",stdout);
  35. scanf("%d%d%s",&n,&m,s+);
  36. for(k=;k<=;k++){
  37. for(int i=;i<=n;i++){
  38. p[i].c=Abs(s[i]-''-k);
  39. p[i].o=i;
  40. }
  41. sort(p+,p++n,cmp);
  42. int mx=;
  43. for(int i=;i<=m;i++)
  44. mx+=p[i].c;
  45. if(mx<ans){
  46. ans=mx;mem(r,s);
  47. for(int i=;i<=m;i++)
  48. r[p[i].o]=k+'';
  49. }
  50. else if(ans==mx){
  51. ans=mx;mem(l,s);
  52. for(int i=;i<=m;i++)
  53. l[p[i].o]=k+'';
  54. if(Cmp())mem(r,l);
  55. }
  56. }
  57. printf("%d\n",ans);
  58. for(int i=;i<=n;i++)
  59. printf("%c",r[i]);
  60. return ;
  61. }

T2

  1. /*
  2. 1 S=a1 c=a2-a1
  3. 2 S=a1 c=a3-a1
  4. 3 S=a2 c=a3-a2
  5. 我晕 还带验证合法性 尼玛SP个毛啊
  6. wo de da an dui a
  7. */
  8. #include<cstdio>
  9. #define maxn 200010
  10. using namespace std;
  11. int n,a[maxn],S,c,A[maxn],B[maxn],cnt;
  12. bool f[maxn];
  13. int init(){
  14. int x=,f=;char s=getchar();
  15. while(s<''||s>''){if(s=='-')f=-;s=getchar();}
  16. while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
  17. return x*f;
  18. }
  19. void Clear(){
  20. cnt=;
  21. for(int i=;i<=n;i++)
  22. f[i]=A[i]=B[i]=;
  23. }
  24. bool Judge(){
  25. int now=a[S];
  26. for(int i=S;i<=n;i++)
  27. if(a[i]==now){
  28. f[i]=;now+=c;B[++B[]]=a[i];
  29. A[]=;int falg=;
  30. for(int j=;j<=n;j++)
  31. if(!f[j])A[++A[]]=a[j];
  32. if(A[]<=||B[]<=)continue;
  33. int C=A[]-A[];
  34. for(int j=;j<=A[];j++)
  35. if(A[j]-A[j-]!=C){
  36. falg=;break;
  37. }
  38. if(falg==)return ;
  39. }
  40. }
  41. void Printf(){
  42. printf("%d ",B[]);
  43. for(int i=;i<B[];i++)
  44. printf("%d ",B[i]);
  45. printf("%d\n",B[B[]]);
  46. printf("%d ",A[]);
  47. for(int i=;i<A[];i++)
  48. printf("%d ",A[i]);
  49. printf("%d\n",A[A[]]);
  50. }
  51. int main()
  52. {
  53. freopen("progression.in","r",stdin);
  54. freopen("progression.out","w",stdout);
  55. n=init();
  56. for(int i=;i<=n;i++)
  57. a[i]=init();
  58. S=;c=a[]-a[];
  59. if(Judge()){Printf();return ;}
  60. Clear();S=;c=a[]-a[];
  61. if(Judge()){Printf();return ;}
  62. Clear();S=;c=a[]-a[];
  63. if(Judge()){Printf();return ;}
  64. printf("No solution\n");
  65. return ;
  66. }
    T3
  1. /*我尼玛今天刚意识到 这样Dfs是O(m)的啊 啊 啊 很自信地暴力 华丽的T了*/
  2. #include<cstdio>
  3. #define maxm 10010
  4. #define maxn 510
  5. using namespace std;
  6. int n,m,Q,num,head[maxn],f[maxn],cnt,l,r;
  7. struct node{
  8. int o,v,pre;
  9. }e[maxm*];
  10. int init(){
  11. int x=,f=;char s=getchar();
  12. while(s<''||s>''){if(s=='-')f=-;s=getchar();}
  13. while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
  14. return x*f;
  15. }
  16. void Add(int from,int to,int x){
  17. num++;e[num].v=to;
  18. e[num].o=x;
  19. e[num].pre=head[from];
  20. head[from]=num;
  21. }
  22. void Dfs(int x){
  23. for(int i=head[x];i;i=e[i].pre){//O()O()O()O
  24. if((e[i].o>=l&&e[i].o<=r)||f[e[i].v])continue;
  25. f[e[i].v]=;Dfs(e[i].v);
  26. }
  27. }
  28. int main()
  29. {
  30. freopen("network5.in","r",stdin);
  31. freopen("network.out","w",stdout);
  32. n=init();m=init();int u,v;
  33. for(int i=;i<=m;i++){
  34. u=init();v=init();
  35. Add(u,v,i);Add(v,u,i);
  36. }
  37. Q=init();
  38. while(Q--){
  39. for(int i=;i<=n;i++)f[i]=;
  40. l=init();r=init();cnt=;
  41. for(int i=;i<=n;i++)
  42. if(f[i]==){
  43. f[i]=;cnt++;Dfs(i);
  44. }
  45. printf("%d\n",cnt);
  46. }
  47. return ;
  48. }
  1. /*
  2. 并茶几~
  3. 边老多老多 有很多很多虚的渣的没用的
  4. 因为不能用的是一段区间 所以能用的就是 前缀 后缀
  5. 预处理统计出有贡献的边们
  6. 然后Q次询问就成了每次O(n)
  7. */
  8. #include<cstdio>
  9. #define maxm 10010
  10. #define maxn 510
  11. #define Cf for(int i=0;i<=n;i++)fa[i]=i
  12. using namespace std;
  13. int n,m,Q,A[maxm],B[maxm],fa[maxn];
  14. struct node{
  15. int u,v;
  16. }p[maxm];
  17. int init(){
  18. int x=,f=;char s=getchar();
  19. while(s<''||s>''){if(s=='-')f=-;s=getchar();}
  20. while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
  21. return x*f;
  22. }
  23. int find(int x){
  24. if(x!=fa[x])return fa[x]=find(fa[x]);
  25. return fa[x];
  26. }
  27. int main()
  28. {
  29. freopen("network.in","r",stdin);
  30. freopen("network.out","w",stdout);
  31. n=init();m=init();int u,v;Cf;
  32. for(int i=;i<=m;i++){
  33. u=init();v=init();
  34. p[i].u=u;p[i].v=v;
  35. }
  36. for(int i=;i<=m;i++){
  37. int r1=find(p[i].u);
  38. int r2=find(p[i].v);
  39. if(r1!=r2){
  40. fa[r2]=r1;A[++A[]]=i;
  41. }
  42. }
  43. Cf;
  44. for(int i=m;i>=;i--){
  45. int r1=find(p[i].u);
  46. int r2=find(p[i].v);
  47. if(r1!=r2){
  48. fa[r2]=r1;B[++B[]]=i;
  49. }
  50. }
  51. Q=init();
  52. while(Q--){
  53. Cf;int l,r,cnt=;
  54. l=init();r=init();
  55. for(int i=;i<=A[];i++){
  56. if(A[i]>=l)break;
  57. int r1=find(p[A[i]].u);
  58. int r2=find(p[A[i]].v);
  59. if(r1!=r2){
  60. fa[r2]=r1;cnt++;
  61. }
  62. }
  63. for(int i=;i<=B[];i++){
  64. if(B[i]<=r)break;
  65. int r1=find(p[B[i]].u);
  66. int r2=find(p[B[i]].v);
  67. if(r1!=r2){
  68. fa[r2]=r1;cnt++;
  69. }
  70. }
  71. printf("%d\n",n-cnt);
  72. }
  73. return ;
  74. }

10.23 noip模拟试题的更多相关文章

  1. 10.26 noip模拟试题

    enc[问题背景]zhx 和他的妹子聊天.[问题描述]考虑一种简单的加密算法.假定所有句子都由小写英文字母构成,对于每一个字母,我们将它唯一地映射到另一个字母.例如考虑映射规则:a->b, b- ...

  2. 10.3 noip模拟试题

    希望[题目描述]网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,“前进栈”.“后退栈”.这里你需要实现以下几个功能:BACK: 如果“后退栈”为空则忽略此命令. 否则将当前两面压入“ ...

  3. 9.23 noip模拟试题

      Problem 1 抓牛(catchcow.cpp/c/pas) [题目描述] 农夫约翰被通知,他的一只奶牛逃逸了!所以他决定,马上出发,尽快把那只奶牛抓回来. 他们都站在数轴上.约翰在N(O≤N ...

  4. 10.27 noip模拟试题

    1.铺瓷砖(tile.cpp/c/pas)[问题描述]有一面很长很长的墙. 你需要在这面墙上贴上两行瓷砖. 你的手头有两种不同尺寸的瓷砖,你希望用这两种瓷砖各贴一行.瓷砖的长可以用分数表示,贴在第一行 ...

  5. 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) 这样 ...

  6. 10.18 noip模拟试题

    分火腿 (hdogs.pas/.c/.cpp) 时间限制:1s:内存限制 64MB 题目描述: 小月言要过四岁生日了,她的妈妈为她准备了n根火腿,她想将这些火腿均分给m位小朋友,所以她可能需要切火腿. ...

  7. 10.13 noip模拟试题

    Porble 1时间与空间之旅(tstrip.*) 题目描述 公元22××年,宇宙中最普遍的交通工具是spaceship.spaceship的出现使得星系之间的联系变得更为紧密,所以spaceship ...

  8. 10.11 noip模拟试题

    4题均为128M,1s 1. 锻炼计划(exercise.pas) 身体是革命的本钱,OIers不要因为紧张的学习和整天在电脑前而忽视了健康问题.小x设计了自己的锻炼计划,但他不知道这个计划是否可行, ...

  9. 10.8 noip模拟试题

      1.花 (flower.cpp/c/pas) [问题描述] 商店里出售n种不同品种的花.为了装饰桌面,你打算买m支花回家.你觉得放两支一样的花很难看,因此每种品种的花最多买1支.求总共有几种不同的 ...

随机推荐

  1. Phonegap 3.0 设置APP是否全屏

    Phonegap 3.0 默认是全屏,如需要取消全屏,可手动修改config, 在APP/res/xml/config.xml文件可设置preference: <?xml version='1. ...

  2. 【技术贴】SqlServer2008 R2 安装失败提示出现以下错误 服务 MSSQLSERVERO

    Feature: Analysis Services  Status: 失败: 请查看日志了解详细信息  MSI status: 已通过  Configuration status: 失败: 请查看下 ...

  3. Android List<Map<String,String>转json(例子)

    package com.armslee.json.test.cases; import java.util.ArrayList; import java.util.HashMap; import ja ...

  4. ​? super T ? extends T

    ​? super T ?保存的是  T类型或者T类型的父类 ​ ? extends T ?保存的是  T类型或者T类型的子类

  5. luoguP2265 路边的水沟

    题目:http://www.luogu.org/problem/show?pid=2265 题解:ans=C(n+m,n)%p 求一下逆元就行 代码: #include<cstdio> # ...

  6. ServiceStack.Redis常用操作 - 事务、并发锁

    一.事务 使用IRedisClient执行事务示例: using (IRedisClient RClient = prcm.GetClient()) { RClient.Add("key&q ...

  7. 像素,分辨率,PPI(像素密度),BPP 扫盲

    像素于分辨率 像素,又称画素,为图像显示的基本单位,译自英文“pixel”,pix是英语单词picture的常用简写,加上英语单词“元素”element,就得到pixel,故“像素”表示“图像元素”之 ...

  8. Codeforces Round #208 (Div. 2) 358D Dima and Hares

    题目链接:http://codeforces.com/problemset/problem/358/D 开始题意理解错,整个就跪了= = 题目大意:从1到n的位置取数,取数的得到值与周围的数有没有取过 ...

  9. lightoj 1243 - Guardian Knights 最小费用流

    #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...

  10. Ubuntu 下安装opencv 编译后执行找不到库

    在ubuntu下编译opencv程序后,执行报下面到错误:error while loading shared libraries: libopencv_core.so.2.4: cannot ope ...