
模拟
ScorpioN___
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
733C. Epidemic in Monstropolis codeforces(模拟)
写的不怎么好,有好多漏洞,到最后是看测试数据一点一点改才过的,不过也算得到锻炼了。 #include#define MAX 0x3f3f3f3fusing namespace std;long long a[505],b[505];struct node{ int l; int r;}arr[505];struct road{ int v; ch原创 2016-11-03 00:11:03 · 448 阅读 · 0 评论 -
721D Maxim and Array codeforces(模拟)
题意:给你一组数据,可以修改k次,每次对其中一个数进行+x或-x,然后把所有数相乘使得最后的乘积最小。思路:一:使所有数的绝对值乘积最大;二:数据中存在奇数个负数。首先找到初始数据中一共有几个负数num ,然后对于每一次修改,先找到绝对值最小的那个数,然后判断数据中是否有奇数个负数。如果是奇数,那个数的原值如果为负,则-x,否则+x;如果是偶数,那个数的原值如果为负,则+x,否则-x,最后原创 2016-10-26 20:21:20 · 392 阅读 · 0 评论 -
UVALive 7511 Multiplication Table
思路:要是没有有效元素,则是yes,若只有一个,判断他的坐标是否符合在表格中的位置,两个两个以上,则用第一个元素与其他元素作比较判断它们的相对位置符不符合表格中 的位置。#include#define MAX 1000using namespace std;struct node{ int x; int y; int v;}arr[MAX*MAX +5];i原创 2016-12-02 23:06:39 · 427 阅读 · 0 评论 -
740C.Alyona and mex codeforces
题意:找的每个子数组中的未出现的最小非负整数,即mex,然后在这些mex中找到最小的那个,并且使那个mex尽可能大。求出一个符合这些条件的数组。思路:最小mex的值即所有区间里长度的最小值。求数组中每个元素的值即为他们的下标(0到n-1)对mex取余后的值,因为这样每mex个长度的数据,元素值都是从0到mex-1,这样在所有区间中所求的未出现的最小非负整数都是mex,题目上说找出符合题意的数组原创 2016-11-27 13:16:48 · 635 阅读 · 0 评论 -
746 D. Green and Black Tea codeforces
思路:先放多的,多的都是以k个连成一块,然后少的往里插。#includeusing namespace std;char str[100005];int main(){ int n,k,a,b,flag; cin>>n>>k>>a>>b; char aa,bb; aa='G';bb='B'; if(a>b) { swap(原创 2016-12-22 17:07:39 · 567 阅读 · 0 评论 -
749 C. Voting codeforces
思路:每一个D(或者R)都会消除下一个离他最近的R(D),以此类推,谁先为0,谁就输,根据这个进行模拟。 #include using namespace std; char str[200005]; bool visit[200005]; int main() { int n,numd=0,numr=0; scanf("%d%s",&n,str);原创 2016-12-22 17:19:46 · 515 阅读 · 0 评论 -
748 C. Santa Claus and Robot codeforces
#includeusing namespace std;int main(){ int n; string str; cin>>n>>str; int n1=0,n2=0,sum=0; for(int i=0;i<str.size();i++) { if(str[i]=='L') { if原创 2016-12-27 22:17:44 · 549 阅读 · 0 评论 -
Codeforces 778A. Pupils Redistribution
题意:给你两个序列,每个序列的数的范围是从1到5,问最少要交换多少次,使序列1与序列2相同。这个题当时没写出来,不知道是怎么模拟的,之后看了人家的博客后才明白。。。#include#define manx 100005using namespace std;int main(){ int n,x,a[6]={0},b[6]={0}; scanf("%d",&n);原创 2017-02-28 21:25:10 · 411 阅读 · 0 评论 -
Codeforces 778B. Weird Rounding
题意:给你一个数,可以随意删除这个数的每一位,最少删几位是使剩下的数能被10的k次方整除。思路:就是判断数中有几个0,如果数量大于等于k,就随便删除使数的后k位都为0;如果数量小于k,那就删len-1个数,只留一个0.#includeusing namespace std;char str[15];int main(){ int k,sum,sum1; while(原创 2017-02-28 21:31:30 · 481 阅读 · 0 评论