水过的题

BZOJ 3767: A+B Prlblem加强版:BZOJ 很少见的水题 高精加 python水过

1 a=int(raw_input())
2 b=int(raw_input())
3 print a+b

BZOJ 3043: IncDec Sequence:差分过后就成了要使差分数列全为0的最小次数,第二问即将差分数列全削成正数或负数后,剩下的操作可以作用在前一段区间,也可以后一段区间,因此会造成不同数列的情况

/**************************************************************
    Problem: 3043
    User: love_zyf
    Language: C++
    Result: Accepted
    Time:332 ms
    Memory:2836 kb
Description

给定一个长度为n的数列{a1,a2...an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一。
问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。

Input

第一行一个正整数n
接下来n行,每行一个整数,第i+1行的整数表示ai。
。

Output

第一行输出最少操作次数
第二行输出最终能得到多少种结果

Sample Input

4

1

1

2

2

Sample Output

1

2

HINT

对于100%的数据,n=100000,0<=ai<2147483648
****************************************************************/

//uva
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <queue>
#define maxn 100009
#define esp 0.001
using namespace std;
long long a[maxn],b[maxn],c=0,d=0;
int main()
{
    int n;
    scanf("%d%lld",&n,&a[1]);
    for(int i=2;i<=n;i++)
    {
        scanf("%lld",&a[i]);
        b[i]=a[i]-a[i-1];
        if(b[i]>0)c+=b[i];if(b[i]<0)d-=b[i];
    }
    printf("%lld\n%lld\n",max(c,d),abs(c-d)+1);
    return 0;
}

POJ 2181 Jumping Cows:一开始看错题意,以为是连续的,样例答案怎么也没推出来,看清题意后发现是DP,dp[i][0]表示到第i个数,第i个数是选出的数的奇数项的最大值,dp[i][1]表示使偶数项时的最大值,转移很显然 见代码

 1 //dp[i][0]=max(dp[i-1][1]+a[i],a[i]);dp[i][1]=dp[i-1][0]-a[i];
 2 #include <stdio.h>
 3 #include <iostream>
 4 #include <string.h>
 5 #include <algorithm>
 6 #include <queue>
 7 #define maxn 150090
 8 #define esp 0.001
 9 #define inf 0x3f3f3f3f
10 int max(int x,int y){return x<y?y:x;}
11 using namespace std;
12 int dp[maxn][2];
13 int main()
14 {
15     int n,x,y,z,ans=0,sign=1;
16     scanf("%d",&n);
17     for(int i=1;i<=n;i++,sign*=-1)
18     {
19         scanf("%d",&x);
20         dp[i][0]=max(dp[i-1][1]+x,dp[i-1][0]);
21         dp[i][1]=max(dp[i-1][1],dp[i-1][0]-x);
22         ans=max(ans,max(dp[i][0],dp[i][1]));
23     //    printf("%d %d\n",dp[i][0],dp[i][1]);
24     }
25     printf("%d\n",ans);
26     return 0;
27 }

POJ 1258 Agri-Net:裸MST

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <string.h>
 4 #include <algorithm>
 5 #include <queue>
 6 #define maxn 3000
 7 #define esp 0.001
 8 #define inf 0x3f3f3f3f
 9 using namespace std;
10 int father[maxn],dis[maxn][maxn];
11 struct T
12 {
13     int x;
14     int y;
15     int v;
16 }a[maxn*1000];
17 int cmp(T x,T y)
18 {
19     return x.v<y.v;
20 }
21 int find(int x)
22 {
23     if(x==father[x])return x;
24     return father[x]=find(father[x]);
25 }
26 int main()
27 {
28     int n,i;
29     while(scanf("%d",&n)!=EOF)
30     {
31         int h=0,ans=0;
32         for(i=1;i<=n;i++)father[i]=i;
33         for(i=1;i<=n;i++)
34         {
35             for(int j=1;j<=n;j++)scanf("%d",&dis[i][j]);
36         }
37         for(int i=1;i<=n;i++)
38         {
39             for(int j=1;j<i;j++)if(dis[i][j]!=0)
40             {
41                 a[++h].x=i;
42                 a[h].y=j;
43                 a[h].v=dis[i][j];
44             }
45         }
46         sort(a+1,a+1+h,cmp);
47         for(i=1;i<=h;i++)
48         {
49             int xx=find(a[i].x),yy=find(a[i].y);
50             if(xx!=yy)
51             {
52                 father[xx]=yy;
53                 ans+=a[i].v;
54             }
55         }
56         printf("%d\n",ans);
57     }
58     return 0;
59 }

POJ 1251 Jungle Roads:同上 裸MST

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <string.h>
 4 #include <algorithm>
 5 #include <queue>
 6 #define maxn 100009
 7 #define esp 0.001
 8 #define inf 0x3f3f3f3f
 9 using namespace std;
10 int h,father[maxn];
11 int find(int x)
12 {
13     if(x==father[x])return x;
14     return father[x]=find(father[x]);
15 }
16 struct T{int x;int y;int v;}a[maxn];
17 int cmp(T x,T y){return x.v<y.v;}
18 int main()
19 {
20     int n,i;
21     char ch[10],ch2[10];
22     while (1)
23     {
24         h=0;
25         int ans=0,m,x;
26         scanf("%d",&n);
27         if(n==0)break;
28         for(int i=1;i<=n;i++)father[i]=i;
29         for(i=1;i<=n-1;i++)
30         {
31             scanf("%s%d",ch,&m);
32             for(int j=1;j<=m;j++)
33             {
34                 scanf("%s%d",ch2,&x);
35                 a[++h].x=(int)ch[0]-‘A‘+1;
36                 a[h].y=(int)ch2[0]-‘A‘+1;
37                 a[h].v=x;
38             }
39         }
40         sort(a+1,a+1+h,cmp);
41         for(i=1;i<=h;i++)
42         {
43             int xx=find(a[i].x),yy=find(a[i].y);
44             if(xx!=yy)
45             {
46                 ans+=a[i].v;
47                 father[xx]=yy;
48             }
49         }
50         printf("%d\n",ans);
51     }
52     return 0;
53 }

时间: 2024-10-10 14:37:31

水过的题的相关文章

UVALive5870-Smooth Visualization-模拟水题

很水的模拟题,拿数组搞就好了. 注意边界的地方不要算重. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int N,T,M; int save[10000]; char str[1000]; int main() { scanf("%d",&T); for(int i=0;i<T;i++) { scanf("%s&q

CodeForces 686A Free Ice Cream (水题模拟)

题意:给定初始数量的冰激凌,然后n个操作,如果是“+”,那么数量就会增加,如果是“-”,如果现有的数量大于等于要减的数量,那么就减掉,如果小于, 那么孩子就会离家.问你最后剩下多少冰激凌,和出走的孩子数量. 析:多水的一个题,就是一个模拟,如果是+,就加上,如果是‘-’,就判断一下,如果不够,就记录下来. 代码如下: #include <iostream> #include <cmath> #include <cstdlib> #include <set>

【专业找水题】状压dp最水题,没有之一

题目链接 现在代码能力没上升,倒是越来越会找水题了(比例题还水的裸题你值得拥有) 这网站不是针对竞赛的,所以时空限制都很宽松 然后就让我水过去了 对于每个点,包括自己的前m个元素是否取都是一种状态,所以状压一下(才1024不要怂) 1 #include <cstdio> 2 int n,m,q; 3 int a[1001]; 4 int dp[1001][2000]; 5 int max(int a,int b){return(a<b)?b:a;} 6 int main() 7 { 8

水题纪念

在某OJ水了很多题,要是bzoj我能谁那么多就好了T_T 纪念水题100+. (这个折线图有点吓人啊,,我自己都会被吓到T_T,注册第一天我就在刷百分百水题,一下就是40+百分百水题..然后还有30+是提交以前的T_T,我好水啊.. 我就是某大神所说的:T_T 做一道难题,总比切一百道水题来的方便. 做一百道难题,总比切一道水题来的有趣. 水题纪念

2017雅礼省选集训做题记录

嘛,最近在补雅礼省选前集训的题.都是我会做的题..那一定是最水的那些题啦 题目在loj.ac上都有.过段时间如果搬了雅礼NOI集训的题应该也会做做的吧.. Day1 T1 一道经典套路题,做法跟UOJ #228基础数据结构练习题类似. 使用线段树维护.考虑相邻两个数的差值最多变化log次.也就是说,对于每个区间,只要操作二进行大概log次就能使得这个区间内所有数完全一样.所以对于操作二,只要记录一下区间最大最小值,就能直接打标记或者暴力DFS下去. 和UOJ那个题一样,注意一个特殊情况,就是一个

关于10月17日#6的五道数据结构题的心得与感悟

被虐了,只刷了一道签到题,其他的题有些连题都读不懂.不过题解还是要写的.相信希望犹在,面包会有的,牛奶也会有的. 第一题: UVA 11987 并查集相关的.相较于传统的并查集,增添了删除操作.如果直接删除,可能会因为删除的元素在集合中做了根而导致剩余集合找不到所属(并查集的单向结构所决定).所以我们使用一个特殊的数组,专门用于保存虚拟节点与实际节点的对应关系.每次需要执行删除操作时,将原节点掏空(即消除其在原所属集合中对集合大小和集合之和的影响),而后创造一个新点代替原点. 第二题:POJ 3

【BZOJ1061】【NOI2008】志愿者招募 费用流神题、单纯形裸题(代码费用流)

题目模型出的真心神. 需要好难才能推出来. 本来打算写一篇好的题解,但是状态实在不好,没弄会这道题. 只能先扒建边留个坑了. 据说"单纯形算法"可以高速+裸建图 水过此题(呃,或曰此题乃单纯形裸题是也.) 留坑前先给个链接吧,应该是目前网上最好的此题题解: BYV大神的题解:www.byvoid.com/blog/noi-2008-employee/#more-916 我的代码: <span style="font-family:KaiTi_GB2312;font-si

hdu--1018--水题-用下斯特林..

很水的一题... 计算阶乘的位数.. touch    me 斯特林公式: 或更精确的 或 我一开始是不知道这个公式 所以用了自己的方法 就是简单利用下 log(x*y)=logx+logy==============log(1*2*3....*n)=log1+log2+log3+....+logn 看到一篇对于这个 介绍的不错的公式依据 /**************************************************** 这题要求n的阶乘的位数,如果n较大时,n的阶乘必将

2753:走迷宫(dfs+初剪)//可以说是很水了。。。

总时间限制:  1000ms 内存限制:  65536kB 描述 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走:有的格子是空地,可以走.给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到).只能在水平方向或垂直方向走,不能斜着走. 输入 第一行是两个整数,R和C,代表迷宫的长和宽.( 1<= R,C <= 40)接下来是R行,每行C个字符,代表整个迷宫.空地格子用'.'表示,有障碍物的格子用'#'表示.迷宫左上角和右下角都是'.'. 输出 输出从左上角走到右下角至