比赛地址【https://vjudge.net/contest/147011#problem/A】、960626

题目一:【http://codeforces.com/problemset/problem/701/A】、水题

题意:给出N张纸牌,N为偶数,每张纸牌上有数值,把这N张纸牌分给(N/2)个人,每个人分到两张纸牌,并且数值相同。一定存在解。

法一:

#include<bits/stdc++.h>
using namespace std;
int a[], vis[];
int N;
int main ()
{
int sum = ;
scanf("%d", &N);
for(int i = ; i <= N; i++)
{
scanf("%d", &a[i]);
sum += a[i];
}
sum /= N / ;
for(int i = ; i <= N; i++)
{
if(vis[i]) continue;
vis[i] = ;
int t = sum - a[i];
for(int j = i + ; j <= N; j++)
{
if(vis[j]) continue;
if(a[j] == t)
{
printf("%d %d\n", i, j);
vis[j] = ;
break;
}
}
}
return ;
}

法二:

#include<bits/stdc++.h>
using namespace std;
struct node
{
int nu, id;
bool operator <(const node x)const
{
return nu < x.nu;
}
} A[];
int N;
int main ()
{
scanf("%d", &N);
for(int i = ; i <= N; i++)
{
scanf("%d", &A[i].nu);
A[i].id = i;
}
sort(A + , A + N + );
int s = , t = N;
while(s <= t)
{
printf("%d %d\n", A[s].id, A[t].id);
s++, t--;
}
return ;
}

题目二:【https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=614】

题意:

You are given a string consisting of parentheses () and []. A string of this type is said to be correct:

(a) if it is the empty string

(b) if A and B are correct, AB is correct,

(c) if A is correct, (A) and [A] is correct.

Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.

题解:虽然长度最长只有128,但是是多组输入,用区间DP会TLE。简单stack的应用。

#include<stack>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF = 1e6;
const int MAXN = ;
char S[MAXN];
int T, N;
int main ()
{
scanf("%d", &T);
getchar();
while(T--)
{
gets(S + );
N = strlen(S + );
if(S[] == ' ')//第一种情况
{
printf("Yes\n");
continue;
}
stack<char>st;
for(int i = ; i <= N; i++)
{
if(!st.empty() && ((st.top() == '(' && S[i] == ')') || (st.top() == '[' && S[i] == ']')))
st.pop();//匹配
else st.push(S[i]);
}
if(st.empty()) printf("Yes\n");
else printf("No\n");
}
return ;
}

题目C:【http://codeforces.com/problemset/problem/382/C】/模拟

题意:给出一列数,使得加入一个数,使他是等差数列。从小到大输出可能的数,如果没有输出0,无限多个-1;

错了好多发。思维;

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + ;
map<int, int>mp;
int a[MAXN], N;
int main ()
{
scanf("%d", &N);
for(int i = ; i <= N; i++)
scanf("%d", &a[i]);
sort(a + , a + N + );
if(N == ) printf("-1\n");
else if(N == )
{
if(a[] == a[]) printf("1\n%d\n", a[]);
else
{
int t = a[] + a[];
if(t % )
printf("2\n%d %d\n", * a[] - a[], * a[] - a[]);
else
printf("3\n%d %d %d\n", * a[] - a[], t / , * a[] - a[]);
}
}
else
{
int t1 = -, t2 = -, p1, p2, nu = ;
for(int i = ; i < N; i++)
{
int t = a[i + ] - a[i];
if(mp.count(t)) {mp[t]++;continue;}
nu++;
mp[t] = ;
if(nu == )
t1 = t, p1 = i;
else if(nu == )
t2 = t, p2 = i;
else break;
}
if(nu == )
{
if(t1 == ) printf("1\n%d\n", a[]);
else printf("2\n%d %d\n", a[] - t1, a[N] + t1);
}
else if(nu == )
{
if(t1 > t2)
{
int t = a[p1] + a[p1 + ];
if(t1 != * t2||mp[t1]!=) printf("0\n");
else printf("1\n%d\n", t / );
}
else
{
int t = a[p2] + a[p2 + ];
if(t2 != * t1||mp[t2]!=) printf("0\n");
else printf("1\n%d\n", t / );
}
}
else printf("0\n");
}
return ;
}

题目四:【http://www.spoj.com/problems/INTSUB/en/】快速幂

题意:输入一个数n,有区间【1,2n】找出一个区间,区间中存在数a、b,使得a为区间中最小的数,b为a的整倍数数。

题解:枚举最小的数a,利用组合数公式求出所有的可能的情况,中间用快速幂处理。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN = 1e5 + ;
const int mod = ;
int N;
LL fast_mod(int x)
{
LL bas = , ans = ;
while(x)
{
if(x & )
ans = ((ans % mod) * (bas % mod)) % mod;
bas = ((bas % mod) * (bas % mod)) % mod;
x >>= ;
}
return ans % mod;
}
int main ()
{
int T, ic = ;
scanf("%d", &T);
while(T--)
{
scanf("%d", &N);
N <<= ;
LL ans = (fast_mod(N - ) - + mod) % mod;
for(int i = ; i <= N >> ; i++)
{
LL t = N / i - ;
LL x = N - i - t;
ans = (ans + (fast_mod(x) * ((fast_mod(t) - + mod) % mod)) % mod) % mod;
}
printf("Case %d: %lld\n", ++ic, ans); }
return ;
}

题目五:【http://codeforces.com/problemset/problem/607/B】

题意:给出n个数,每次删除一个回文串,求最少的删除次数。

题解:区间DP,dp[l][r],表示区间[l,r]中最少的回文串。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF=1e9;
const int MAXN = ;
int dp[MAXN][MAXN];
int a[MAXN];
int N;
int main ()
{
scanf("%d",&N);
for(int i=;i<=N;i++)
{
scanf("%d",&a[i]);
dp[i][i]=;
}
for(int l=;l<=N;l++)
{
for(int i=;i<=N-l+;i++)
{
int j=i+l-;
dp[i][j]=INF;
if(a[i]==a[j])
{
if(i+==j)
dp[i][j]=dp[i+][j-]+;
else
dp[i][j]=dp[i+][j-];
}
for(int k=i;k<j;k++)
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+][j]);
}
}
printf("%d\n",dp[][N]);
return ;
}

Fighting For 2017 Season Contest 1的更多相关文章

  1. ACM ICPC 2017 Warmup Contest 9 I

    I. Older Brother Your older brother is an amateur mathematician with lots of experience. However, hi ...

  2. ACM ICPC 2017 Warmup Contest 9 L

    L. Sticky Situation While on summer camp, you are playing a game of hide-and-seek in the forest. You ...

  3. IOI 2017 Practice Contest mountains

    Mountains 题面 题意: 选最多的点使得两两看不见. 分析: 分治,solve(l,r)为区间[l,r]的答案.那么如果不选最高点,分治两边即可,选了最高点,那么在最高点看不见的区间里分治. ...

  4. ACM ICPC 2017 Warmup Contest 1 D

    Daydreaming Stockbroker Gina Reed, the famous stockbroker, is having a slow day at work, and between ...

  5. HDU-AcmKeHaoWanLe训练实录

    菜鸡队训练实录. 现场赛记录:[名称:奖项/排名] 2017: ICPC Shenyang:Gold/3 CCPC Hangzhou:Gold/3 ICPC Beijing:Gold/13 CCPC ...

  6. hdu 4930 Fighting the Landlords--2014 Multi-University Training Contest 6

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4930 Fighting the Landlords Time Limit: 2000/1000 MS ...

  7. 2017 Multi-University Training Contest - Team 9 1005&&HDU 6165 FFF at Valentine【强联通缩点+拓扑排序】

    FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  8. 2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】

    Dying Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  9. 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】

    CSGO Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

随机推荐

  1. MS Sql Server 消除重复行 保留信息完整的一条 2011-11-26 13:19(QQ空间)

    select company ,count(company) as coun into myls from mylist group by company having count(company)& ...

  2. hdu 2859 (二维dp)

    点击打开链接 题意: 给你一个n*n的矩阵,矩阵中只含有26个小写字母,求其中最大的对称矩阵的大小 当我们算到s[i][j]时,每次我们只需要将它上方的和右方的依次比较,看是否相同 注意这里不能只比较 ...

  3. linux apt-get 源配置

    linux中apt-get不能使用可能因为源不对,需要修改/etc/apt下的sources.list文件 apt-get源网上有很多,但是试了很多都不能用,以下提供一个我自己这边使用成功的源: de ...

  4. 模拟Vue之数据驱动5

    一.前言 在"模拟Vue之数据驱动4"中,我们实现了push.pop等数组变异方法. 但是,在随笔末尾我们提到,当pop.sort这些方法触发后,该怎么办呢?因为其实,它们并没有往 ...

  5. .Net程序员学用Oracle系列(7):视图、函数、过程、包

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.视图 1.1.创建视图 2.函数 2.1.创建函数 2.2.调用函数 3.过程 3.1.创建过程 3.2.调用过程 4.包 ...

  6. SAP CRM 为用户创建业务合作伙伴并分配到组织单位

    想要在SAP CRM的前台完成一些操作,需要登录的用户在系统中存在对应的业务合作伙伴才可以,某些情况下,还需要被分配到正确的公司.部门.职位.下面是相关的操作步骤. 本文假定读者已经拥有一个开发帐号. ...

  7. ACM第三题 完美立方

    形如a3= b3 + c3 + d3的等式被称为完美立方等式.例如123= 63 + 83 + 103 .编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得 ...

  8. .Net 生成条形码

    1,下面一个类,可以直接复制下去使用: public class Code39    {        private Hashtable m_Code39 = new Hashtable();    ...

  9. Perception(1.2)

    4.1.2 Definition of Coordinate Systems The global coordinate system is described by its origin lying ...

  10. Python中is和==的区别的

    在python中,is检查两个对象是否是同一个对象,而==检查他们是否相等. str1 = 'yangshl' str2 = 'yang' + 'shl' print('str1 == str2:', ...