原题链接 Problem - 1523B - Codeforces

题目及部分翻译

While trading on(贸易,利用) his favorite exchange trader William realized that he found a vulnerability( [ˌvʌlnərəˈbɪləti] n.易损性;弱点). Using this vulnerability he could change the values of certain internal variables(内部变量) to his advantage. To play around he decided to change the values of all internal variables from a1,a2,…,an to −a1,−a2,…,−an. For some unknown reason, the number of service variables is always an even number.

当和他最喜欢的交易员交易时, 威廉意识到他发现了一个弱点。使用这个弱点,他可以改变确定的内部变量成他的优势。他决定改变所有内部变量的值,从正改为负。因不明原因,服务变量的数目总是偶数。

William understands that with his every action he attracts more and more attention from the exchange's security team, so the number of his actions must not exceed 5000 and after every operation no variable can have an absolute value greater than 1018. William can perform actions of two types for two chosen variables with indices i and j, where i<j:

威廉知道,他的行为会吸引交易所安全团队越来越多的注意,所以他的操作数不能超过5000,并且每次操作完,没有变量的绝对值会超过10的18次方。威廉展示2种操作,其中的变量是i,j,满足i<j;

  1. Perform assignment ai=ai+aj
  2. Perform assignment aj=aj−ai

  类型一:ai=ai+aj

  类型二:aj=aj−ai

William wants you to develop a strategy that will get all the internal variables to the desired values.

威廉想要你去研究一种策略使得所有内部变量是他想要的值。
 
Input

Each test contains multiple test cases. The first line contains the number of test cases tt (1≤t≤20). Description of the test cases follows.

The first line of each test case contains a single even integer nn (2≤n≤103), which is the number of internal variables.

The second line of each test case contains nn integers a1,a2,…,an (1≤ai≤109), which are initial values of internal variables.

Output

For each test case print the answer in the following format:

The first line of output must contain the total number of actions kk, which the strategy will perform. Note that you do not have to minimize kk. The inequality k≤5000k≤5000 must be satisfied.

Each of the next kk lines must contain actions formatted as "type i j", where "type" is equal to "1" if the strategy needs to perform an assignment of the first type and "2" if the strategy needs to perform an assignment of the second type. Note that i<j should hold.

We can show that an answer always exists.

解析: 对于任意两个元素,只需6步,可以使二者都变为负值

ai          aj

ai+aj     aj

ai+2aj   aj

ai+2aj   -ai-aj

aj          -ai-aj

-ai         -ai-aj

-ai         -aj

代码

#include <iostream>

using namespace std;

const int N = 1e3+10;

int a[N];

int main()
{
int t;
cin >> t;
while(t --)
{
int n;
cin >> n;
for(int i = 0; i < n; i ++)
cin >> a[i]; cout << n * 3 << endl;
for(int i = 1; i < n; i += 2)
{
int j = i;
cout << "1 " << j <<' ' << j+1 << endl;
cout << "1 " << j <<' ' << j+1 << endl;
cout << "2 " << j <<' ' << j+1 << endl;
cout << "1 " << j <<' ' << j+1 << endl;
cout << "1 " << j <<' ' << j+1 << endl;
cout << "2 " << j <<' ' << j+1 << endl; }
}
return 0;
}

B. Lord of the Values 思维数学建构 附加 英文翻译的更多相关文章

  1. [Codeforces 1178D]Prime Graph (思维+数学)

    Codeforces 1178D (思维+数学) 题面 给出正整数n(不一定是质数),构造一个边数为质数的无向连通图(无自环重边),且图的每个节点的度数为质数 分析 我们先构造一个环,每个点的度数都是 ...

  2. 牛客网多校第9场 E Music Game 【思维+数学期望】

    题目:戳这里 题意:鼠标点击n下,第i次点击成功的概率为p[i],连续点击成功x次可以获得x^m分,求n次点击总分数的数学期望. 解题思路:数学期望的题很多都需要转化思维,求某一个单独状态对整体答案的 ...

  3. Codeforces Round #304 (Div. 2) D 思维/数学/质因子/打表/前缀和/记忆化

    D. Soldier and Number Game time limit per test 3 seconds memory limit per test 256 megabytes input s ...

  4. 牛客网多校第5场 F take 【思维+数学期望】

    题目:戳这里 思路来源:视频讲解 题意:有n个箱子按1...n标号,每个箱子有大小为di的钻石概率为pi,我们初始有个大小为0的钻石,从1到n按顺序打开箱子,遇到比手中大的箱子就换,求交换次数的数学期 ...

  5. Codeforces Round #272 (Div. 2) D. Dreamoon and Sets (思维 数学 规律)

    题目链接 题意: 1-m中,四个数凑成一组,满足任意2个数的gcd=k,求一个最小的m使得凑成n组解.并输出 分析: 直接粘一下两个很有意思的分析.. 分析1: 那我们就弄成每组数字都互质,然后全体乘 ...

  6. 2017多校第一套&&hdu6038 思维 数学

    链接  http://acm.hdu.edu.cn/showproblem.php?pid=6038 题意: 给你一个a序列,代表0到n-1的排列:一个b序列代表0到m-1的排列.问你可以找出多少种函 ...

  7. [codeforces Mail.Ru Cup 2018 Round 3][B Divide Candies ][思维+数学]

    https://codeforces.com/contest/1056/problem/B 题意:输入n,m    求((a*a)+(b*b))%m==0的(a,b)种数(1<=a,b<= ...

  8. 51Nod 1305 Pairwise Sum and Divide | 思维 数学

    Output 输出fun(A)的计算结果. Input示例 3 1 4 1 Output示例 4 first try: #include "bits/stdc++.h" using ...

  9. 茅台【思维/数学/剪枝】By cellur925

    题目传送门 给你\(n\)根木棍,问有多少种方法,使得选出的三根木棍能组成三角形. 开始想要用搜索的,但是写着写着卡壳了(?),于是改用贪心,开始对拍,觉得很稳,只是最后两个数据可能有点卡.很第一题难 ...

随机推荐

  1. SqlServer Split 的实现

    数据库如何处理传参用指定字符隔开参数的情况 如"name1,name3,name5" 共2种方式, 1.数据库内置函数STRING_SPLIT(sql2016之前的版本不支持该函数 ...

  2. 配置 PackMan 镜像

    一.参考链接 阿里云镜像站 二.PackMan 镜像介绍 Packman 是 OpenSUSE 最大的第三方软件源,主要为 OpenSUSE 提供额外的软件包,包括音视频解码器.多媒体应用.游戏等. ...

  3. Flask 之路由系统

    Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...

  4. CVE-2012-1823(PHP-CGI远程代码执行)

    基于vulhub漏洞环境: 安装vulhub漏洞环境 https://blog.csdn.net/qq_36374896/article/details/84102101 CGI模式下的参数: -c ...

  5. kafka 保证消息被消费和消息只消费一次

    1. 保证消息被消费 即使消息发送到了消息队列,消息也不会万无一失,还是会面临丢失的风险. 我们以 Kafka 为例,消息在Kafka 中是存储在本地磁盘上的, 为了减少消息存储对磁盘的随机 I/O, ...

  6. SynchronizedMap 和 ConcurrentHashMap 有什么区别?

    SynchronizedMap 一次锁住整张表来保证线程安全,所以每次只能有一个线程来 访为 map. ConcurrentHashMap 使用分段锁来保证在多线程下的性能. ConcurrentHa ...

  7. 什么是原子操作?在 Java Concurrency API 中有哪些原 子类(atomic classes)?

    原子操作(atomic operation)意为"不可被中断的一个或一系列操作" . 处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作. 在 Java 中可以通 ...

  8. springMVC和struts2的区别有哪些?

    (1)springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilte ...

  9. Java 中 Semaphore 是什么?

    Java 中的 Semaphore 是一种新的同步类,它是一个计数信号.从概念上讲,从 概念上讲,信号量维护了一个许可集合.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每 ...

  10. 杭电OJ 1248 不死族巫妖王 完全背包问题 字节跳动 研发岗编程原题

    转载至:https://blog.csdn.net/ssdut_209/article/details/51557776 Problem Description不死族的巫妖王发工资拉,死亡骑士拿到一张 ...