1、定义重复串$S=T+T$,即$S$可以表示成一个串的叠加。给定一个串$s$,可以通过删除字符、修改字符、增加字符来使得其变为重复串。问最少的次数。

思路:首先将$s$分成个串$s_{0},s_{1}$,然后计算将$s_{0},s_{1}$变成一样要多少次操作。

#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <stack>
#include <assert.h>
using namespace std; int f[111][111]; void up(int &x,int y)
{
if(x==-1||x>y) x=y;
} int cal(string s1,string s2)
{
const int n=(int)s1.size();
const int m=(int)s2.size(); if(n==0) return m;
if(m==0) return n; memset(f,-1,sizeof(f));
f[0][0]=0;
for(int i=1;i<=m;++i) f[0][i]=i;
for(int i=1;i<=n;++i) f[i][0]=i; for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
char c1=s1[i-1];
char c2=s2[j-1];
up(f[i][j],f[i-1][j]+1);
up(f[i][j],f[i][j-1]+1);
up(f[i][j],f[i-1][j-1]+(c1!=c2));
}
}
return f[n][m];
} class RepeatString
{
public:
int minimalModify(string s)
{
const int n=(int)s.size();
int ans=n;
for(int i=0;i<=n;++i)
{
ans=min(ans,cal(s.substr(0,i),s.substr(i)));
}
return ans;
}
};

  

2、给出平面上$n$个点的集合$S$,没有三点共线。定义$CH(s)$为包含点集$s$的最小凸包。求这样的点集对$(s_{1},s_{2})$有多少:(1)$s_{1}\in S,s_{2} \in S$;(2)$s_{1},s_{2}$没有交集;(3)$CH(s_{1}),CH(s_{2})$相交。

思路:求出所有的点集对然后减去不相交的。不相交的可以通过枚举两个点$p_{0},p_{1}$来确定一条直线,然后从直线一侧选出一些点跟$p_{0}$组成一个点集,从直线另一侧选出一些点跟$p_{1}$组成一个点集。

#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <stack>
#include <assert.h>
using namespace std; const int N=111;
const int mod=1000000007; int C[N][N],p[N]; void init()
{
C[0][0]=1;
for(int i=1;i<N;++i)
{
C[i][0]=C[i][i]=1;
for(int j=1;j<i;++j)
{
C[i][j]=C[i-1][j]+C[i-1][j-1];
if(C[i][j]>=mod) C[i][j]-=mod;
}
} p[0]=1;
for(int i=1;i<N;++i)
{
p[i]=p[i-1]<<1;
if(p[i]>=mod) p[i]-=mod;
}
} class IntersectingConvexHull
{
public:
int count(vector <int> x, vector <int> y)
{
init();
const int n=(int)x.size();
int ans=0;
for(int i=3;i<=n;++i) for(int j=3;j<=n-i;++j)
{
ans+=(long long)C[n][i]*C[n-i][j]%mod;
if(ans>=mod) ans-=mod;
}
for(int i=0;i<n;++i) for(int j=0;j<n;++j) if(i!=j)
{
int s[2]={0,0};
for(int k=0;k<n;++k) if(k!=i&&k!=j)
{
long long d=(long long)(x[j]-x[i])*(y[k]-y[i])-(long long)(x[k]-x[i])*(y[j]-y[i]);
if(d>0) ++s[0];
else ++s[1];
}
if(s[0]<2||s[1]<2) continue; int t0=p[s[0]]-1-s[0];
int t1=p[s[1]]-1-s[1];
ans-=(long long)t0*t1%mod;
if(ans<0) ans+=mod;
}
return ans;
}
}; int main()
{ IntersectingConvexHull p;
printf("%d\n",p.count({-2,-1,-1,1,1,2},{1,0,2,0,2,1}));
}

  

topcoder srm 698 div1 -3的更多相关文章

  1. Topcoder SRM 698 Div1 250 RepeatString(dp)

    题意 [题目链接]这怎么发链接啊..... Sol 枚举一个断点,然后类似于LIS一样dp一波 这个边界条件有点迷啊..fst了两遍... #include<bits/stdc++.h> ...

  2. Topcoder SRM 643 Div1 250<peter_pan>

    Topcoder SRM 643 Div1 250 Problem 给一个整数N,再给一个vector<long long>v; N可以表示成若干个素数的乘积,N=p0*p1*p2*... ...

  3. Topcoder Srm 726 Div1 Hard

    Topcoder Srm 726 Div1 Hard 解题思路: 问题可以看做一个二分图,左边一个点向右边一段区间连边,匹配了左边一个点就能获得对应的权值,最大化所得到的权值的和. 然后可以证明一个结 ...

  4. topcoder srm 714 div1

    problem1 link 倒着想.每次添加一个右括号再添加一个左括号,直到还原.那么每次的右括号的选择范围为当前左括号后面的右括号减去后面已经使用的右括号. problem2 link 令$h(x) ...

  5. topcoder srm 738 div1 FindThePerfectTriangle(枚举)

    Problem Statement      You are given the ints perimeter and area. Your task is to find a triangle wi ...

  6. Topcoder SRM 602 div1题解

    打卡- Easy(250pts): 题目大意:rating2200及以上和2200以下的颜色是不一样的(我就是属于那个颜色比较菜的),有个人初始rating为X,然后每一场比赛他的rating如果增加 ...

  7. Topcoder SRM 627 div1 HappyLettersDiv1 : 字符串

    Problem Statement      The Happy Letter game is played as follows: At the beginning, several players ...

  8. Topcoder SRM 584 DIV1 600

    思路太繁琐了 ,实在不想解释了 代码: #include<iostream> #include<cstdio> #include<string> #include& ...

  9. TopCoder SRM 605 DIV1

    604的题解还没有写出来呢.先上605的. 代码去practice房间找. 说思路. A: 贪心,对于每个类型的正值求和,如果没有正值就取最大值,按着求出的值排序,枚举选多少个类型. B: 很明显是d ...

随机推荐

  1. 在caffe-ssd的环境搭建中遇到报错信息:Makefile:588: recipe for target '.build_release/cuda/src/caffe/layers/softmax_loss_layer.o' failed

    错误原因: 1.计算机没有安装GPU 2.有GPU但是NVCCFLAGS设置错误 解决方法: 1.对没有GPU的计算机,需要将Makefile中的CPU之前的#注释去掉,是的caffe运行的处理器进行 ...

  2. maven 知识

    1. maven 环境配置 Maven 3.3 要求 JDK 1.7 或以上   Maven 3.2 要求 JDK 1.6 或以上   Maven 3.0/3.1 要求 JDK 1.5 或以上 2. ...

  3. php-fpm慢日志配置

    upstream timed out (110: Connection timed out) while reading response header from upstream Nginx报错日志 ...

  4. CSS选择符-----属性选择符

       Element[att] 选择具有att属性的E元素 <!DOCTYPE html> <html> <head> <meta charset=" ...

  5. python os.path.join()

    >>> import os >>> path = '/Users/beazley/Data/data.csv' >>> # Get the las ...

  6. tensorflow学习4-过拟合-over-fitting

    过拟合: 真实的应用中,并不是让模型尽量模拟训练数据的行为,而是希望训练数据对未知做出判断. 模型过于复杂后,模型会积极每一个噪声的部分,而不是学习数据中的通用 趋势.当一个模型的参数比训练数据还要多 ...

  7. ESB(Enterprise Service Bus)企业服务总线介绍

    ESB(Enterprise Service Bus)企业服务总线介绍 ESB全称为Enterprise Service Bus,即企业服务总线.它是传统中间件技术与XML.Web服务等技术结合的产物 ...

  8. 新服务器上装java PHP环境有什么一键安装的方便的方法?一般都是怎么安装环境的?

     新服务器上装java PHP环境有什么一键安装的方便的方法?一般都是怎么安装环境的?  linode digitalocean都有很好的教程,下面是ubuntu和centos的两个教程连接. How ...

  9. hihoCoder #1037 : 数字三角形 (动态规划)

    题目链接:https://hihocoder.com/problemset/problem/1037# 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋 ...

  10. 大神教你Nginx常用基础配置方案

    Nginx的fastcgi模块参数设置 Nginx 有两个配置文件fastcgi_params.fastcgi.conf,两者唯一的区别是,fastcgi.conf 多一个参数 SCRIPT_FILE ...