codeforces 298A. Snow Footprints

分类讨论三种情况:

①..RRRRRR… 

②..LLLLLLL…

③..RRRLLLL..

//AC by lwq:

#include<stdio.h>
#include<algorithm>
#include<string>
#include<string.h>
using namespace std; int main()
{
int n;
scanf("%d",&n);
char ss[];
scanf("%s",ss);
int len=strlen(ss);
int i;
int begin,end;
for(i=;i<len;i++)
{
if(ss[i]=='.')
continue;
else if(ss[i]=='R')
{
begin=i;
break;
}
else if(ss[i]=='L')
{
end=i;
break;
}
}
if(ss[begin]=='R')
{
for(i=begin+;i<len;i++)
{
if(ss[i]=='.')
{
end=i;
break;
}
else if(ss[i]=='L')
{
end=i-;
break;
}
else
continue;
}
printf("%d %d",begin+,end+);
}
else if(ss[begin]=='L')
{
for(i=len-;i>=;i--)
{
if(ss[i]=='L')
{
begin=i;
break;
}
else
{
continue;
}
}
printf("%d %d",begin+,end);
}
return ;
}

codeforces 298B. Sail

模拟。水题。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char q[];
int main()
{
int t,sx,sy,ex,ey;
scanf("%d %d %d %d %d",&t,&sx,&sy,&ex,&ey);
scanf("%s",q);
int ans=;
bool f=false;
for(int i=;i<t;i++)
{
ans++;
if(q[i]=='E')
{
if(sx<ex)
sx++;
}
else if(q[i]=='S')
{
if(sy>ey)
sy--;
}
else if(q[i]=='W')
{
if(sx>ex)
sx--;
}
else if(q[i]=='N')
{
if(sy<ey)
sy++;
}
if(sx==ex&&sy==ey)
{
f=true;
break;
}
}
if(f)
printf("%d\n",ans);
else
printf("-1\n");
return ;
}

codeforces 382C. Arithmetic Progression

分类讨论:

先考虑特例:n = 1时,有无数组解,答案为 -1

然后根据存在的公差d的数量进行分类:

①d只有一种:

1.若d1 = 0,答案只有一种,输出a[1]

2.若d1为偶数并且只有两个数(n=2),则答案有三种:a[1] - d1,  a[1]+d1/2, a[n] + d1  , 例如:2 4 -> 0 3 6

3.其他情况:答案有两种:a[1] – d1, a[n] + d1,例如:1 4 7 –> –2 10

②d有两种:d1, d2(设d2 > d1)

1.若d2 = 2 * d1 并且 cnt(d2) = 1(d2的数量只有一个),则答案只有一种:

根据d1, d2的顺序再分两小类:

(1)a[k]-d1(k为出现第二种公差的位置),例如:1 3 5 9 –> 7

(2)a[k-1]-d1,例如:-1 1 2 3 –> 0

2.其他情况:无解,答案为0

③d有三种以上:无解,答案为0

//AC by lyy:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<cmath>
#include<queue>
#include<limits.h>
#define CLR(a,b) memset((a),(b),sizeof((a)))
using namespace std;
typedef long long ll;
const int mod = 1e9+;
const int N = 1e5+;
const int inf = 0x3f3f3f3f; int n;
ll a[N]; int main() {
int i, j;
ll d1 , d2; ll k; scanf("%d", &n);
for(i = ; i <= n; ++i) {
scanf("%lld", &a[i]);
}
sort(a+, a++n);
int t;
if(n == ) {printf("-1\n"); return ;} int cnt1 = , cnt2 = ;//d1,d2数量 d1 = d2 = a[] - a[];
int f = ;//只有d1 for(i = ; i <= n; ++i) {
if(f == ) { printf("0\n"); return ; }//有三个以上d
t = a[i] - a[i-];
if(t == d1) cnt1++;
else if(t == d2) cnt2++;
else if(t != d1 && f == ) { cnt2++; d2 = t; f = ; k = i;}//有d2
else if(t != d1 && t != d2 && f == ) { f = ; }
}
int ff = ;
if(d1 > d2) { ff = ; swap(d1, d2); swap(cnt1, cnt2); } //d2 > d1 if(f == ) {
if(d1 == ) {printf("1\n%lld\n", a[]);}
else if((d1 % == ) && n == ) { printf("3\n%lld %lld %lld\n", a[]-d1, a[]+d1/, a[n]+d1); }
else { printf("2\n%lld %lld\n", a[]-d1, a[n]+d1); }
}
else { //f = 2
if(d2 == *d1 && cnt2 == ) {
if(ff == )
printf("1\n%lld\n", a[k]-d1);
else printf("1\n%lld\n", a[k-]-d1);
}
else printf("0\n");
}
return ;
}

codeforces 450D. Jzzhu and Cities 【SPFA】

题意:有n个城市,编号1~n,已知有m条公路和k条铁轨, 保证从1号城市到其他城市距离最短,问可以关闭多少条铁轨。

题解:最短路,看着还有重边,想想SPFA的复杂度E log V,看着数据范围可以就直接用了。

将铁轨进行标记,对d数组进行初始化,并先入队列(刚开始想先求只有公路的最短路,最后考虑铁轨的思路 错误,因为可能有的城市最短路要经过铁路),然后SPFA啦,若是铁路的边被松弛,则对其进行标记,关闭这条铁轨。最后统计判断存在的铁轨数,将原铁轨数减去它就行了。

//yy:最近习惯用链式前向星,结果TLE了,想了想不对劲复杂度没问题啊,,后来经过各种折磨,换成vector存图就AC了,好气啊、姿势老错。。

//补题: AC by lyy

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<cmath>
#include<queue>
#include<limits.h>
#define CLR(a,b) memset((a),(b),sizeof((a)))
using namespace std;
typedef long long ll;
const int mod = 1e9+;
const int N = 1e5+;
const int M = 3e5+;
const ll inf = 0x3f3f3f3f3f3f3f3f;
struct node {
int v;
int w;
}E[*M];
vector<node> ve[N]; int n, m, k; ll d[N];
bool vis[N];
bool train[N];//是否为铁路 queue<int> q;
void spfa() {
while(!q.empty()) {
int u = q.front(); q.pop();
vis[u] = ;
for(int i = ; i < ve[u].size(); ++i) {
int v = ve[u][i].v;
int w = ve[u][i].w;
if(d[v] >= d[u] + w) {
d[v] = d[u] + w;
if(train[v]) {
train[v] = false;//关闭这个铁轨
}
if(!vis[v]) {
vis[v] = true;
q.push(v);
}
}
}
}
}
int main() {
CLR(vis, );
CLR(train, );
int i, j;
int u, v, w;
scanf("%d%d%d", &n, &m, &k);
for(i = ; i <= n; ++i) {
d[i] = inf;
}
d[] = ; vis[] = ;
q.push(); for(i = ; i <= m; i ++) {
scanf("%d%d%d", &u, &v, &w);
ve[u].push_back(node{v, w});
ve[v].push_back(node{u, w});
} for(i = ; i <= k; ++i) {
scanf("%d%d", &v, &w);
train[v] = true;
if(d[v] > w) {
d[v] = w;
if(!vis[v]) {
q.push(v);
vis[v] = true;
}
} }
spfa();
for(i = ; i <= n; ++i) {
if(train[i]) k--;
}
printf("%d\n", k);
return ;
}

其他题都还做不出来,补都补不动orz

Mutual Training for Wannafly Union #2的更多相关文章

  1. 【Mutual Training for Wannafly Union #1 】

    A.Phillip and Trains CodeForces 586D 题意:过隧道,每次人可以先向前一格,然后向上或向下或不动,然后车都向左2格.问能否到达隧道终点. 题解:dp,一开始s所在列如 ...

  2. Mutual Training for Wannafly Union #1解题报告

    ---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...

  3. Mutual Training for Wannafly Union #6 E - Summer Trip(并查集)

    题目链接:http://www.spoj.com/problems/IAPCR2F/en/ 题目大意: 给m个数字代表的大小,之后n组数据,两两关联,关联后的所有数字为一组,从小到大输出组数以及对应的 ...

  4. Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余

    Mr.BG is very busy person. So you have been given enough time (1000 milliseconds) to help him. Mr. B ...

  5. Mutual Training for Wannafly Union #9

    A(SPOJ NPC2016A) 题意:给一个正方形和内部一个点,要求从这个点向四边反射形成的路线的长度 分析:不断做对称,最后等价于求两个点之间的距离 B(CF480E) 题意:求01矩阵内由0组成 ...

  6. Mutual Training for Wannafly Union #6

    A =w= B QvQ C 题意:有长度为n的序列(n<=5e5),求满足条件的a,b,c,d的组数,要求满足条件:min([a,b])<=min([c,d]),a<=b<c& ...

  7. Mutual Training for Wannafly Union #5

    A(UVA12336) 题意:给一个n*m(n,m<=1e5)的棋盘,棋盘上有一些障碍点不能放棋子,现在要在棋盘上放4个棋子,满足A->B->C->D->A,其中走的规则 ...

  8. Wannafly Union Goodbye 2016

    A 题意:平面上有n个点(n<=100000),给你一个p(20<=p<=100) 判断是否存在一条直线至少过[np/100](向上取整)个点,时限20s,多组数据 分析:概率算法 ...

  9. Wannafly Union#1

    题目链接:http://vjudge.net/contest/142053#overview A.题意:有一个3*n的隧道,人和车轮流走,人先向右走一步,然后选在是在原地不动还是上下移动一格,之后车开 ...

随机推荐

  1. GIT 恢复单个文件到历史版本

    首先查看该文件的历史版本信息:git log <file> 恢复该文件到某个历史版本:git reset 版本号 <file> 检出改文件到工作区:git checkout - ...

  2. 《c++primer》疑惑记录

    第4章 96页,数组维数为变量 第8章 246. IO对象不可复制.赋值原因是类设计时复制构造函数.赋值函数是私有的,为什么这么设计呢? 251. tie举例 第15章 484 派生类可以恢复,但不可 ...

  3. 标准webservice调用

    现代定义的webservice一般都倾向于restfull风格的http请求,但工作中还是会遇到前辈们写的时代代码. 我们更倾向于封装代码来调用,而不是服务引用.请看: Service.asmx服务的 ...

  4. android 9 patch

  5. bitbucket 源代码托管

    5个人以下可以免费使用,不限制仓库的数量; 国外的注册需要开启蓝灯FQ; 1.注册账号 maanshancss w1-g1@qq.com;创建仓库; 然后拷贝现有项目 然后提交 然后push; 2.写 ...

  6. WPF binding<一> Data Binding在WPF中的地位

    在代码中看到 <Image Source="{Binding ElementName=LBoxImages, Path=SelectedItem.Source}" /> ...

  7. svn 不能校验路径“XXX”的锁;没有匹配的可用锁令牌 故障解决方法

    原文出自:https://blog.csdn.net/seesun2012 故障现象: svn Commit ,失败,提示: 不能校验路径"/SEESUN/****系统计划说明书.docx& ...

  8. Java - Latch和Barrier的区别

    之所以把Latch与Barrier放在一起比较是因为他们给人一种相似的感觉. 他们都是阻塞一些行为直至某个事件发生,但Latch是等待某个事件发生,而Barrier是等待线程. 先比较一下JCIP中对 ...

  9. apache和tomcat搭建集群

    最近在学习简单的apache服务器和两个tomcat一起搭建集群,这里简单记录一下 1.准备工作 ①搭建一个可以运行的web项目 用maven搭建springmvc项目 ,只要将这里面的web.xml ...

  10. struts2 国际化语言转换

    学习struts2,了解了使用struts2的配置文件可以走向国际化,实现页面的语言转换.我已中文和英文为例,简单的实现登录页面的国际化 废话不多说,上代码 一,login.jsp页面 使用s标签&l ...