A. Calculating Function

水题,分奇数偶数处理一下就好了

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
long long n;scanf("%lld",&n);
if(n%==) printf("%lld\n",(n-1LL)/2LL - n);
else printf("%lld\n",n/2LL);
}

B. OR in Matrix

比较机智的可以发现,对于每一个0,那么这一行和这一列都是-

对于每一个1,那么行或列,有一个1就好了

但是!有一个数据

1 0 0

1 0 0

1 0 0

这个数据应该是NO

#include<stdio.h>
#include<iostream>
using namespace std;
int a[][];
int vis1[];
int vis2[];
int main()
{
int n,m;scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&a[i][j]);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(a[i][j]==)
{
vis1[i]=;
vis2[j]=;
}
}
}
int sum1=;
for(int i=;i<=n;i++)
sum1+=vis1[i];
int sum2=;
for(int i=;i<=m;i++)
sum2+=vis2[i];
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(a[i][j]==)
{
if(sum1==n||sum2==m)
{
printf("NO\n");
return ;
}
if(vis1[i]&&vis2[j])
{
printf("NO\n");
return ;
}
}
}
}
printf("YES\n");
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(vis1[i]||vis2[j])
{
printf("0 ");
}
else
printf("1 ");
}
printf("\n");
}
}

C. Palindrome Transformation

读题的时候,感觉这道题好熟悉,好像以前做过

在blog一搜,果然以前做过……

贪心就好了

#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
const int maxn=+;
int main()
{
sspeed;
int n,pos;
string s;
cin>>n>>pos;
pos--;
if(pos>n/-)
pos=n-pos-;
cin>>s;
int ans=;
int l=,r=n/-;
while(l<n/&&s[l]==s[n-l-])
l++;
while(r>=&&s[r]==s[n-r-])
r--;
//cout<<l<<" "<<r<<endl;
if(l<=r){
for(int i=l;i<=r;i++)
{
int temp=abs(s[i]-s[n-i-]);
ans+=min(temp,-temp);
//cout<<ans<<endl;
}
ans=ans+min(abs(pos-r),abs(pos-l))+abs(l-r);
cout<<ans<<endl;
}
else
cout<<ans<<endl;
return ;
}

D. Valid Sets

暴力枚举每一个点为根,假设这个是这棵树的最大值,然后用乘法原则搞一搞就好了

对于每一棵子树,都有选与不选两种操作

#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
#define maxn 2005
const int mod = 1e9 + ;
int a[maxn];
int d,n;
vector<int> G[maxn];
long long dfs(int x,int pre,int k)
{
long long ans = ;
for(int i=;i<G[x].size();i++)
{
int v = G[x][i];
if(v == pre || (a[k] == a[v]&&v > k))continue;
if(a[k]>=a[v]&&a[k]-a[v]<=d)
{
ans *= ( dfs(v,x,k) + );
while(ans>=mod)ans%=mod;
}
}
return ans;
}
int main()
{
scanf("%d%d",&d,&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=;i<n;i++)
{
int u,v;scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
long long ans = ;
for(int i=;i<=n;i++)
{
ans += dfs(i,-,i);
while(ans>=mod)ans%=mod;
}
printf("%lld\n",ans);
}

E. LIS of Sequence

先正着求一发lis,再逆着求一发单调递减子序列

然后只要dp1[i]+dp2[i] - 1 == lis 就说明这个点肯定在其中一个里面

至于是不是独一无二的,就看dp1[i]是否是独一无二的就好啦

#include<iostream>
#include<stdio.h>
#include<map>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 100005
int b[maxn];
int a[maxn];
void add(int x,int val)
{
while(x<=)
{
b[x] = max(b[x],val);
x += x & (-x);
}
}
int get(int x)
{
int ans = ;
while(x)
{
ans = max(ans,b[x]);
x -= x & (-x);
}
return ans;
}
int dp1[maxn];
int dp2[maxn];
int ans[maxn];
map<int,int> H;
int main()
{
int n;scanf("%d",&n);
int LIS = ;
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
dp1[i] = + get(a[i]-);
add(a[i],dp1[i]);
LIS = max(LIS,dp1[i]);
}
reverse(a+,a++n);
memset(b,,sizeof(b));
for(int i=;i<=n;i++)
{
a[i] = - a[i] + ;
dp2[i] = + get(a[i] - );
add(a[i],dp2[i]);
}
reverse(dp2+,dp2++n);
for(int i=;i<=n;i++)
{
if(dp1[i]+dp2[i]-!=LIS)ans[i]=;
else H[dp1[i]]++;
}
for(int i=;i<=n;i++)
{
if(ans[i]!=&&H[dp1[i]]==)
{
ans[i]=;
}
}
for(int i=;i<=n;i++)
if(ans[i]==)
cout<<"";
else if(ans[i]==)
cout<<"";
else if(ans[i]==)
cout<<"";
}
/*
10
2 2 2 17 8 9 10 17 10 5
*/

套题 Codeforces Round #277 (Div. 2)的更多相关文章

  1. codeforces水题100道 第十题 Codeforces Round #277 (Div. 2) A. Calculating Function (math)

    题目链接:www.codeforces.com/problemset/problem/486/A题意:求表达式f(n)的值.(f(n)的表述见题目)C++代码: #include <iostre ...

  2. Codeforces Round #277 (Div. 2) 题解

    Codeforces Round #277 (Div. 2) A. Calculating Function time limit per test 1 second memory limit per ...

  3. 【codeforces】Codeforces Round #277 (Div. 2) 解读

    门户:Codeforces Round #277 (Div. 2) 486A. Calculating Function 裸公式= = #include <cstdio> #include ...

  4. 贪心+构造 Codeforces Round #277 (Div. 2) C. Palindrome Transformation

    题目传送门 /* 贪心+构造:因为是对称的,可以全都左一半考虑,过程很简单,但是能想到就很难了 */ /************************************************ ...

  5. 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas

    题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...

  6. 水题 Codeforces Round #302 (Div. 2) A Set of Strings

    题目传送门 /* 题意:一个字符串分割成k段,每段开头字母不相同 水题:记录每个字母出现的次数,每一次分割把首字母的次数降为0,最后一段直接全部输出 */ #include <cstdio> ...

  7. 水题 Codeforces Round #299 (Div. 2) A. Tavas and Nafas

    题目传送门 /* 很简单的水题,晚上累了,刷刷水题开心一下:) */ #include <bits/stdc++.h> using namespace std; ][] = {" ...

  8. 水题 Codeforces Round #304 (Div. 2) A. Soldier and Bananas

    题目传送门 /* 水题:ans = (1+2+3+...+n) * k - n,开long long */ #include <cstdio> #include <algorithm ...

  9. 水题 Codeforces Round #303 (Div. 2) A. Toy Cars

    题目传送门 /* 题意:5种情况对应对应第i或j辆车翻了没 水题:其实就看对角线的上半边就可以了,vis判断,可惜WA了一次 3: if both cars turned over during th ...

随机推荐

  1. 【MySQL for Mac】在Mac终端导入&导出.sql文件

    导入 打开终端输入:(前提是已经配置过MySQL环境变量) mysql -u root -p create database name; use name; source 『将.sql文件直接拖拽至终 ...

  2. Google的通用翻译机能成为未来的巴别鱼吗?

    “巴别鱼,”<银河系漫游指南>轻轻朗读着,“体型很小,黄色,外形像水蛭,很可能是宇宙中最奇异的事物.它靠接收脑电波的能量为生,并且不是从其携带者身上接收,而是从周围的人身上.……如果你把一 ...

  3. POJ 1068 Parencodings

    Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24932   Accepted: 14695 De ...

  4. 回调函数、Java接口回调 总结

    谈到回调,我们得先从回调函数说起,什么叫回调函数呢? 回调函数是什么? 百度百科的解释:回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用 ...

  5. excel 经验总结

    1.2007版excel表格中怎么将使用字母+数字下拉排序 比如:A201110300001怎么在excel表格中往下拉的时候变成A201110300002.A201110300003…… 方法: 因 ...

  6. "_ITERATOR_DEBUG_LEVEL"的不匹配项: 值"0"不匹配值"2"

    error: 1>vtkCommon.lib(vtkDebugLeaksManager.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项 ...

  7. PHP 获取远程文件的大小的3种方法

    1.使用file_get_contents() <?php $file = file_get_contents($url); echo strlen($file); ?> 2. 使用get ...

  8. javascript 继承、命名空间实现分享

    命名空间是用来组织和重用代码的编译单元,在大型项目开发中javascript使用的越来越多时,我们就应该将项目里的js类库管理起来,如何将自己进行归类管理,防止命名冲突,但是Javascript默认不 ...

  9. 几个地图(高德、百度、Apple、Google)URL API(转)

    转自:http://blog.csdn.net/cooldragon/article/details/20642131 移动应用中,如何在自己的App中调起第三方的原生地图App,并显示相关的信息,如 ...

  10. 结合Vim ghostscript 将源代码文件转换成语法高亮的pdf格式文档

    step 1: 安装ghostscript (debian 环境, 其他环境自行google) sudo apt-get install ghostscript step 2:  用Vim生成ps文件 ...